如何在 CentOS 中升級單個軟件包

在本文中,我們將深入了解如何升級 CentOS 發行版上的特定軟件包。 有時,您可能需要升級某些軟件包,而將其他軟件包保留為默認版本。 原因之一是保持用於運行關鍵服務(如數據庫和 Web 服務器)的包的穩定性。 有時升級可能會導致包發生變化,影響服務的正常運行。

在 CentOS 中使用 yum 升級特定軟件包

在做任何其他事情之前,我們可能需要首先檢查具有掛起更新的軟件包。 為此,請運行以下命令

yum list updates

您可能需要顯示系統中存在的軟件包的多個版本。 為此,請運行以下命令

yum --showduplicates list httpd | expand

在上面 example,您將顯示多個版本的 httpd 包。

 Installed Packages
httpd.x86_64         2.4.6-67.el7_4.6          @rhui-REGION-rhel-server-releases
Available Packages
httpd.x86_64         2.4.6-17.el7              rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-18.el7_0            rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-19.el7_0            rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-31.el7              rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-31.el7_1.1          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-40.el7              rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-40.el7_2.1          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-40.el7_2.4          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-45.el7              rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-45.el7_3.4          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-67.el7              rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-67.el7_4.2          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-67.el7_4.5          rhui-REGION-rhel-server-releases
httpd.x86_64         2.4.6-67.el7_4.6          rhui-REGION-rhel-server-releases

從上面的結果,我們注意到當前安裝的httpd包是版本 2.4.6-67.el7_4.6 這是最新的。 如果您想安裝特定版本的軟件包,您會怎麼做? 其語法如下所示

yum install packagename version

為了 example, 如果您希望降級到 2.4.6-67.el7_4.5 版本,則需要先刪除最新版本,如圖所示。

yum remove httpd

此後,如圖所示安裝首選的 httpd 版本。

yum install httpd 2.4.6-67.el7_4.5

為了鎖定我們安裝的軟件包的版本,避免任何未來的更新,我們使用 versionlock 插件。 要安裝插件,請運行

yum install yum-versionlock

樣本輸出

yum-plugin-versionlock-1.1.31-42.el7.noarch.rpm                                                                                                  |  32 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : yum-plugin-versionlock-1.1.31-42.el7.noarch                                                                                                          1/1
  Verifying  : yum-plugin-versionlock-1.1.31-42.el7.noarch                                                                                                          1/1

Installed:
  yum-plugin-versionlock.noarch 0:1.1.31-42.el7

Complete!

要鎖定我們的 httpd 包版本,我們將運行以下命令

yum versionlock httpd

輸出

Loaded plugins: amazon-id, rhui-lb, search-disabled-repos, versionlock
Adding versionlock on: 0:httpd-2.4.6-67.el7_4.5  
versionlock added: 1

升級特定軟件包

yum upgrade package-name

要暫時從升級中排除包,請運行以下命令

yum --exclude update package-name

或者,您可以使用 -x 標誌而不是 --exclude

yum -x exclude httpd,php

上述命令將在升級其餘包時從升級中排除 httpd 和 php 包。

如果要永久禁用更新包,請找到 yum.conf 在 /etc/yum/yum.conf

這是它的外觀的快照

要排除包,請附加 exclude=package-name在配置文件的末尾。 在這 example,我們將從升級中排除 samba、httpd、php 和 mariadb 包,如下所示。

如果您嘗試升級其中任何一個軟件包,您將獲得 No packages marked for update 錯誤。

相關閱讀:

  • 如何從 Yum 更新中排除特定包
  • 如何從 apt-get Upgrade 中排除特定包

歡迎您試用這些命令。 非常歡迎您的反饋。 謝謝你。