我在系统的不同分区上安装了 Fedora 和 Ubuntu。现在我想让“adobe reader”或“kerio-control-vpnclient-8.4.2-2869-linux”等程序可供fedora使用。这些程序安装在我的 Ubuntu 系统上。我想知道如何在 chroot 或其他类似命令(如 LXC)的帮助下使这些程序可供 Fedora 使用。
答案1
chroot根本无法解决你的问题。实际上,chroot会让你像在 Ubuntu 中一样运行这个程序,而不是在 Fedora 中。您需要进行复杂的设置才能使它们在 chroot 之外访问您的文件系统。 chroot 更多的是为了隔离。
然而,解决您的问题的一个好方法就是使用环境变量。也许一个小的 bash 脚本可以设置 Ubuntu 位置的路径并更改 LD_LIBRARY_PATH 。
例如,类似:
#!/bin/bash
export PATH=PATH_TO_UBUNTU_BIN:$PATH
export LD_LIBRARY_PATH=PATH_TO_UBUNTU_LIB:$LD_LIBRARY_PATH
acroread
其中 PATH_TO_UBUNTU_BIN 和 PATH_TO_UBUNTU_LIB 应该是 ubuntu bin 的路径(例如 /bin 和 /usr/local/bin 或 acroread 所在的位置),而 PATH_TO_UBUNTU_LIB 是 Ubuntu 共享库目录的路径(例如 /lib 或 /lib64)。
答案2
安装施鲁特在您的 Fedora 系统上。 Schroot 是 chroot 的包装器,允许非 root 用户使用预定义的 chroot 并安排主目录/proc
等出现在 chroot 中。
我写了一份 schroot 指南如何在 64 位 Debian/Ubuntu 上运行 32 位程序?对于 Fedora 主机系统,设置基本相同——主要是 chroot 中的发行版需要调整。安装反引导程序在 chroot 中安装 Ubuntu 的软件包。
要从外部调用 chroot 中的程序,您需要调用schroot
.您可以对名为 chroot 的 chroot 使用这样的 shell 包装器trusty
:
#!/bin/sh
exec schroot -c trusty -p -q -- "${0##*/}" "$@"
使用您要调用的程序的名称创建指向此脚本的符号链接。例如,如果此脚本位于/usr/local/bin/trusty
,并且您希望该acroread
命令调用可信 chroot 中的程序,请创建一个符号链接
ln -s trusty /usr/local/bin/acroread