考虑以下目录树 ( 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/fakechroot
COMMAND.env
命令fakechroot
是由(eg )调用的命令chroot.env
。
/proc
通过环境、 in~/.fakechroot/chroot.env
或 in来检查 是否在 Ubuntu 中的排除列表中/etc/fakechroot/chroot.env
。在 Debian 软件包中,/etc/fakechroot/chroot.env
添加/dev
,/proc
和/sys
到FAKECHROOT_EXCLUDE_PATH
.如果您不希望这样做,请复制/etc/fakechroot/chroot.env
并~/.fakechroot/chroot.env
编辑相关行,或者传递参数-e
以指定不同的配置文件(例如fakechroot -e /dev/null chroot …
)。