创建包含来自 rpm 的所有依赖项的本地存储库

创建包含来自 rpm 的所有依赖项的本地存储库

供应商给我提供了一个自定义 rpm,安装时会提取依赖项。我需要在封闭的网络系统上安装此软件包,因此无法访问互联网来收集依赖项。不过,我可以访问中间服务器,该服务器可以访问互联网,但不允许来自封闭网络的流量。

是否可以创建一个封闭网络可以访问的本地网络存储库来安装此包?我已经使用以下命令在本地目录中创建了一个存储库:

createrepo .

我还尝试使用以下命令获取依赖项列表:

rpm -qpR *package*

我该如何将 rpm 或其他安装数据从依赖项列表拉到本地存储库?

答案1

我有同样的要求,但我无法从这些答案中获得 100% 所需的信息。我希望这对某些人有帮助。

这些命令必须在具有互联网连接的源机器上运行。

yum install -y createrepo

# Add a local temporary directory
mkdir packages

# Download whatever packages you need to the temporary directory
yum install --downloadonly --downloaddir=packages perl

# Now, create the repository. If you need to add more packages, be sure to execute this
# command again before you bundle it up
createrepo packages

# Compress the packages directory:
tar -zcf packages.tgz packages

现在,将其传输到没有互联网连接的目标机器并解压缩档案:

tar -zxf packages.tgz -C /opt/

创建/etc/yum.repos.d/local.repo并添加以下内容:

[local]
name=Local Repository
baseurl=file:///opt/packages
enabled=1
gpgcheck=1
protect=1

如果您正在更新软件包,则需要先清除缓存,否则将找不到您的新软件包:

yum clean all

您现在可以在没有互联网连接的情况下安装所需的软件包:

yum --disablerepo='*' --enablerepo=local install perl

这个gpgcheck参数非常重要,这意味着您要检查这些包在离开源计算机后是否没有被更改,因为它们是由 Red Hat 的密钥签名的。这对于大多数信息安全团队来说通常已经足够了。

答案2

yum install yum-utils获得一些有用的包管理实用程序。 repotrack package 将下载所有依赖项。将其放在一个目录中并运行createrepo /srv/my/repo 这是一个存储库,您可以使用文件 URI 将其添加到封闭系统的 /etc/yum.repos.d/ 中:

   [myrepo]
   name = This is my repo
   baseurl = file:///srv/my/repo/

无论如何,您还需要一个用于更新的系统。在连接互联网的系统上下载更新,并以相同的方式将它们放入存储库中。(可以使用 Satellite 等管理产品获取更新,但并非必须如此。)

yumdownloader 与 repotrack

http://yum.baseurl.org/wiki/RepoCreate

答案3

您需要配置 yum 才能访问您的本地仓库。请参阅https://wiki.centos.org/HowTos/CreateLocalRepos

相关内容