如何在Ubuntu/CentOS中升级单个软件包
在本文中,我们将深入探讨如何升级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软件包。