在没有安装存储库的 chroot jail 中安装 Redhat 存储库

在没有安装存储库的 chroot jail 中安装 Redhat 存储库

我在 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-B​​ase.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 服务器。

相关内容