你如何用 dnf 建立 chroot jail?

Joe*_*Joe 7 fedora dnf

回到过去,我曾经使用yum. 它简单、容易,让我可以做当时并不真正可用的事情(使用相同的基础架构在 ia64 和 ppc 等平台上为多个发行版构建包)。

快进 5 年,我想在 Fedora 23 上建立一个简单的 chroot jail。然而,dnf这并不容易。我曾经只能/etc/yum.repo.d/在监狱目录中创建一个文件并调用yum --installroot. 不幸的dnf是仍在阅读本地存储库,而不是在 chroot jail 中创建的存储库。

是否可以dnf使用不在/etc/dnf/dnf.conf或 中的conf 文件/etc/yum.repos.d/

Mat*_*don 5

正如您所发现的,对于 dnf,您需要指定参数--releaserver

此外,如果您想使用特定于 chroot 的存储库,那么您将需要做更多的工作。

dnf.conf我发现最简单的解决方案是在 chroot 中创建您自己的文件,将存储库配置放入其中,然后使用它。

例如,假设您想在$(pwd)/mychroot文件夹中创建 Fedora 24 chroot,仅使用 fedora 和 rpmfusion-free 存储库中的软件包。

您将创建mychroot/etc/dnf/dnf.conf包含以下内容的文件:

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
reposdir=

[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

[rpmfusion-free]
name=RPM Fusion for Fedora $releasever - Free
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=14d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever
Run Code Online (Sandbox Code Playgroud)

(查看/etc/yum.repos.d/*.repo系统上的文件并复制粘贴)

重要的部分是该main部分中的这一行,它告诉 dnf 不要在任何目录中搜索存储库,而只在主配置文件中搜索存储库,这将使其忽略您的系统存储库:

reposdir=
Run Code Online (Sandbox Code Playgroud)

最后,你可以运行dnf:

# dnf -c $(pwd)/mychroot/etc/dnf/dnf.conf install --installroot=$(pwd)/mychroot --releasever=24 gstreamer1-libav
Run Code Online (Sandbox Code Playgroud)