Fedora 和 Ubuntu 上不同的 fakechroot 行为

Fedora 和 Ubuntu 上不同的 fakechroot 行为

考虑以下目录树 ( mychroot):

mychroot/
├── proc
│   └── cpuinfo
└── usr
    └── bin
        └── ls

在 Fedora 20 上:

$ fakechroot chroot ./mychroot/  /usr/bin/ls proc
cpuinfo

版本:

$ fakechroot --version
fakechroot version 2.9

在Ubuntu上:

$ fakechroot chroot ./mychroot/  /usr/bin/ls proc

列出来自 chroot 外部的 /proc 条目。

版本:

$ fakechroot --version
fakechroot version 2.17.2

这里可能发生了什么?感谢您的任何见解。

更新:

看起来确实像是行为上的改变。我在 Ubuntu 上安装了 2.10,看到的结果与 Fedora(使用 2.9)相同:

$ /usr/local/bin/fakechroot --version
fakechroot version 2.10
$ /usr/local/bin/fakechroot chroot ./mychroot  /usr/bin/ls proc
cpuinfo

提交了一份问题上游。

答案1

Fakechroot 可以配置为排除某些路径,即这些路径将引用(假)chroot 内部和外部的相同位置。这对于像/dev和 这样的目录特别有用/proc,因为很多程序都依赖于它们,因此到处都有该目录很有用。

可以通过以下方式定义排除的路径:

  • 环境FAKECHROOT_EXCLUDE_PATH变量;
  • FAKECHROOT_EXCLUDE_PATH中的配置文件中的设置,名为where~/.fakechroot/etc/fakechrootCOMMAND.env命令fakechroot是由(eg )调用的命令chroot.env

/proc通过环境、 in~/.fakechroot/chroot.env或 in来检查 是否在 Ubuntu 中的排除列表中/etc/fakechroot/chroot.env。在 Debian 软件包中,/etc/fakechroot/chroot.env添加/dev,/proc/sysFAKECHROOT_EXCLUDE_PATH.如果您不希望这样做,请复制/etc/fakechroot/chroot.env~/.fakechroot/chroot.env编辑相关行,或者传递参数-e以指定不同的配置文件(例如fakechroot -e /dev/null chroot …)。

相关内容