当 schroot 配置为挂载 /home 时,chroot 内部安装的软件包会覆盖 $HOME 中的配置文件吗?
例如,如果在 chroot 中安装了较新版本的 gconf2,它会覆盖 $HOME/.gconf 吗?有没有办法防止这种情况发生,同时保持对 /home 的访问?
答案1
当 /home 由 schroot 挂载时,所有配置文件都将放在基本安装的 $HOME 中,无论它们是否属于 schroot。
当安装一个包的两个版本(一个在基础安装中,另一个在 schroot 中)时,这会导致配置文件被覆盖。
可以轻松改变 schroot 设置,以便将其配置文件放在不同的目录中,如以下示例所示。
wheezy-amd64 的 schroot 位于 /var/schroot/wheezy-amd64。此特定 schroot 使用“桌面”配置文件,因此其挂载点在 /etc/schroot/desktop/fstab 中定义。
首先,在 schroot 中为用户创建一个主目录,
mkdir /var/schroot/wheezy-amd64/home/$USERNAME
其次,在 /etc/schroot/desktop/fstab 中替换以下行,
/home /home none rw,bind 0 0
和,
/home /HOME none rw,bind 0 0
就这样!在基本安装中向 ~/.bash_aliases 添加别名也很方便,
alias wheezy64='schroot -c wheezy-amd64 `/bin/echo "-d $PWD" | /bin/grep "^-d[ ]*\/home" | sed "s/home/HOME/"`'
在 schroot 内部,用户现在看到两个主目录:
- /home/$USERNAME 是 schroot 主目录。
- /HOME/$USERNAME 是基本安装的主目录。