yum + 如何捕获 yum update 安装的所有 rpm

yum + 如何捕获 yum update 安装的所有 rpm

我们从 rhel 7.2 升级到 rhel 7.6

升级是通过 yum update (来自 redhat repertoires )

subscription-manager release --set=7.6
subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"  --enable "rhel-ha-for-rhel-*-server-rpms"

然后我们表演了

yum update

我们还可以从 yum 历史记录中看到更新

yum history
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    31 | update                   | 2020-09-11 09:10 | I, O, U        |  899 EE

在更新过程中,更新/安装了 300 rpm

但现在我们想在没有网络连接的情况下在其他机器上离线执行 yum 更新,我问我们是否可以捕获已安装的所有 rpm(在 yum 更新期间)

因此可以捕获所有已安装的 rpm 列表

我问这个是因为,如果我有 rpm 列表,那么我可以通过以下方式下载它们yumdownloader

我发现的是

 yum history info 31 | grep  Updated
    Updated       rpm-4.11.3-17.el7.x86_64                  @anaconda/7.2
    Updated       subscription-manager-1.15.9-15.el7.x86_64 @anaconda/7.2
    Updated       yum-3.4.3-132.el7.noarch                  @anaconda/7.2
    Updated       yum-langpacks-0.4.2-4.el7.noarch          @anaconda/7.2
    Updated     ModemManager-1.1.0-8.git20130913.el7.x86_64                    @anaconda/7.2
    Updated     ModemManager-glib-1.1.0-8.git20130913.el7.x86_64               @anaconda/7.2
    Updated     NetworkManager-adsl-1:1.0.6-27.el7.x86_64                      @anaconda/7.2
    Updated     NetworkManager-config-server-1:1.0.6-27.el7.x86_64             @anaconda/7.2
    Updated     NetworkManager-glib-1:1.0.6-27.el7.x86_64                      @anaconda/7.2
    Updated     NetworkManager-libnm-1:1.0.6-27.el7.x86_64                     @anaconda/7.2
    Updated     NetworkManager-libreswan-1.0.6-3.el7.x86_64                    @anaconda/7.2
    Updated     NetworkManager-libreswan-gnome-1.0.6-3.el7.x86_64              @anaconda/7.2
    Updated     NetworkManager-team-1:1.0.6-27.el7.x86_64                      @anaconda/7.2

.
.
.

这是捕获从 yum update 安装的所有 rpm 的真正方法吗?

答案1

红帽有一篇解决方案文章,介绍了更新断开连接的系统的可能方法:我们如何定期更新一个断开连接的系统(没有互联网连接的系统)?

可用选项如下:

  1. 设置红帽卫星服务器。这需要额外订阅。卫星服务器连接到在线 Red Hat 存储库。所有系统都连接到卫星服务器以下载更新。

  2. 在另一个连接的系统上下载更新。将包传输到目标系统并更新。

  3. 使用发行媒体(特定发行版本的 DVD/ISO 映像)。

  4. 从 Red Hat 网站手动下载软件包。这是一种耗时的方法,难以自动化,而且您必须手动处理依赖关系解析。

  5. 创建本地存储库。这种方法涉及使用该reposync工具将软件包下载到一个系统。然后使用 HTTP/NFS/FTP 将软件包作为 yum 存储库公开给其他系统。


就您而言,您似乎正在使用第二种方法。有关此方法的更多详细信息可以在此处找到:如何在没有网络连接的情况下将离线 Red Hat Enterprise Linux 服务器更新到 Red Hat/Proxy/Satellite?。本文建议从目标系统复制 RPM 数据库,然后用于yum update --downloadonly获取新包。

您也可以研究其他选项,看看它们是否更适合该任务。由于您当前正在尝试从 7.2 升级到 7.6,因此使用 7.6 发布媒体(第三种方法)可能效果很好。

对于更长期的解决方案,我建议查看第一种方法(卫星)或第五种方法(本地存储库)。这些方法更加集中,并提供更好的自动化可能性。

答案2

Yum 下载/var/cache/yum/<repo>/packages.因此,如果您将 rpm 从该目录复制到同一路径上的另一台服务器,应该可以解决问题。但请记住:

  • 最好的方法是首先在连接互联网的计算机上清理软件包,以便仅yum update保留并复制最新运行的更新/安装的软件包。另一方面,这意味着将不使用增量 rpm 机制,并且必须下载每个 rpm 的完整大小,而不仅仅是差异。

  • 如果目标机器根本无法访问 Internet,则 yum 将不会收到有关可用的较新软件包的通知。因此,复制 rpm 后,您可以用来yum install ./*.rpm安装它们。我在互联网带宽较低的计算机上使用的方法是yum check-update在连接到网络时运行,然后在将所有 rpm 复制到/var/cache/yum/<repo>/packages更新后运行。 Yum 会在缓存中查找 rpm,并且不会从网络下载它们。

如果您需要经常更新大量计算机,最好的方法是设置本地存储库和更新服务器。这是一项简单的任务,您会找到许多有关操作方法的指南。

相关内容