如何在Ubuntu/CentOS中升级单个软件包

时间:2020-03-05 15:30:01  来源:igfitidea点击:

在本文中,我们将深入探讨如何升级Ubuntu/CentOS发行版中的特定软件包。
有时,我们可能需要升级某些软件包,而将其他软件包保留为默认版本。
原因之一是保持用于运行关键服务(如数据库和Web服务器)的软件包的稳定性。
有时,升级可能会导致程序包中的更改,从而可能影响服务的正常运行。

使用apt升级Ubuntu中的特定软件包

要升级特定软件包,请以root用户身份登录并运行以下命令

apt-get install --only-upgrade package-name

在下面的示例中,我们将升级apt

apt-get install --only-upgrade apt

输出示例

# apt-get install --only-upgrade apt
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apt-utils libapt-pkg5.0
Suggested packages:
  aptitude | synaptic | wajig dpkg-dev apt-doc python-apt
The following packages will be upgraded:
  apt apt-utils libapt-pkg5.0
3 upgraded, 0 newly installed, 0 to remove and 49 not upgraded.
Need to get 1,945 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]

使用yum升级CentOS中的特定软件包

在进行其他任何操作之前,我们可能需要首先检查具有未决更新的软件包。
为此,请运行以下命令

yum list updates

我们可能需要显示系统中存在的软件包的多个版本。
为此,请运行以下命令

yum --showduplicates list httpd | expand

在上面的示例中,我们将显示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

例如,如果要降级到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包从升级中排除。

如果要永久禁用更新程序包,请在/etc/yum/yum.conf中找到“ yum.conf”
这是它看起来的一个瞬间

要排除软件包,请在配置文件末尾添加“ exclude = package-name”。
在此示例中,我们将在升级中排除samba,httpd,php和mariadb软件包,如下所示。

如果我们尝试升级其中一个软件包,则会收到“没有标记为更新的软件包”错误。

使用Pacman升级Archlinux中的特定软件包

要使用Pacman软件包管理器更新ArchLinux中的单个软件包,请运行以下命令

pacman -S packagename

例如,如果我们运行

pacman -S samba

该命令将仅更新samba软件包。