是否可以在 fakeroot 环境中运行 debootstrap?

Pet*_*etr 9 debian debootstrap fakeroot

我有一个脚本,它通过运行准备安装映像debootstrap,对文件进行一些修改,然后将文件复制到由文件备份的磁盘映像。

这在 下有效root,但我希望能够在没有root特权的情况下运行脚本,因为它确实不需要任何特权资源。我以为我会使用 运行整个脚本fakeroot,但debootstrap失败了

W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

bne*_*old 5

一般来说,是的,可以通过 以debootstrap非 root 用户身份运行fakeroot,但还有更多细节。

您似乎遇到的直接问题是尝试以chroot非 root 用户身份使用;你需要使用fakechroot替代,除了fakeroot。例如:

fakechroot fakeroot debootstrap sid /tmp/sid
Run Code Online (Sandbox Code Playgroud)

以后可能会遇到的问题包括以非 root 用户身份创建环回挂载或创建磁盘映像分区表。

您可能会发现使用像polystrap这样的 debootstrap 变体更容易,而不是一个一个地处理所有这些细节,如果您最终想要它,它也可以处理交叉编译(例如,从 x86-64 生成 armhf 图像) .

  • 问题是`debootstrap` 本身正在调用`chroot`,我找不到如何告诉它需要使用`fakechroot` 的方法。 (2认同)

Bas*_*tch 1

chroot (2)系统调用需要 root 权限,或者更准确地说,从技术上讲, CAP_SYS_CHROOT需要功能(请参阅功能(7))

因此你不能只使用fakeroot它(你还需要fakechroot等)。