我在 Redhat 7.3 的 chroot jail 中安装了运行的软件。不幸的是,这个 jail 中没有安装任何存储库,因此我无法通过 yum 下载所需的软件包。我想将 Redhat 存储库添加到 jail 中,但我还没有找到方法。简单地从主机复制存储库文件是行不通的,因为存储库需要密钥和证书。复制密钥和证书似乎也行不通。
如何在未安装存储库的机器上安装 Redhat 存储库?我有 yum 和 yum-config-manager。
答案1
阻力最小的路径可能就是在 docker 或 LXC 中运行软件。但我知道让它在 chroot 中工作的最简单方法是设置一个包含整个工作 Linux 发行版的文件系统。因此,下面介绍如何将整个现有操作系统复制到 /chroot 目录中,然后您可以在 chroot 中执行几乎任何可以在基本系统中执行的操作。
我手头没有 RHEL 系统,因此这些说明是在 CentOS 7 上测试的。
以 root 身份运行所有这些:
移至根目录
cd /
创建 chroot 目录
mkdir chroot
复制大部分操作系统
cp {bin,etc,lib,lib64,sbin,usr} /chroot/ -a
为其余部分留出占位符
mkdir /chroot/{root,dev,home,mnt,opt,proc,run,sys,tmp,var}
将特殊文件系统挂载到你的 chroot
mount -o bind /run /chroot/run/
mount -o bind /proc /chroot/proc/
mount -o bind /sys /chroot/sys/
mount -o bind /dev /chroot/dev/
进入 chroot
chroot chroot
由于我们没有复制 /var 或 /run,yum 将无法解析 $releasever 和 $basearch 变量,因此我们将它们硬编码到 repo 文件中。这是 CentOS repo 的路径,您应该将其更改为 Red Hat 使用的路径。您可以将 CentOS-Base.repo 替换为 RedHat-Base.repo 或 /etc/yum.repos.d/ 目录中的基本存储库。此外,请确保体系结构匹配,此说明适用于 64 位 x86,这很可能是您使用的,但如果您有 PowerPC 服务器或某些非常奇怪的东西,则请进行相应修改。
sed s/\$basearch/x86_64/g /etc/yum.repos.d/CentOS-Base.repo -i
sed s/\$releasever/7/g /etc/yum.repos.d/CentOS-Base.repo -i
现在你可以调用 yum 并安装软件
yum intall vim
这将在您的 chroot 中安装 vim,但不会在您的基本系统中安装。为了强化,您可能需要仔细检查并从 chroot 中删除一堆软件包,因为此时这几乎是一个在 chroot 中运行的成熟 Red Hat 服务器。