首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教程:15个Yum更新命令示例

教程:15个Yum更新命令示例

作者头像
用户6543014
发布2020-02-26 12:59:53
10.5K0
发布2020-02-26 12:59:53
举报
文章被收录于专栏:CU技术社区CU技术社区

Yum是在Red Hat、CentOS和其他使用RPM软件包管理器的Linux发行版上使用的软件包管理器。 Yum用于安装、更新、删除或以其他方式操纵这些Linux系统上安装的软件包。

在本教程中,我们将介绍yum update命令–它的用途、使用方法以及您希望在系统上升级已安装的软件包时可能需要知道的所有其他命令。

Yum update

Yum update是用于更新系统上安装的应用程序的命令。如果在未指定任何软件包名称的情况下运行该命令,它将更新系统上当前安装的每个软件包。

 $ yum update

运行此命令时,yum首先将检查其存储库以获取系统当前已安装的软件的更新版本。下面的屏幕截图展示的是您首次发出yum update命令时通常会看到的输出类型。

yum update命令如您所见,yum的输出首先列出了它所查询的存储库,它们是CentOS的默认存储库:AppStream、Base和Extras。在这个下面,yum还列出了已找到其更新的各种软件包。

在此输出的末尾,yum将显示“事务摘要”,其中显示要安装和升级的软件包总数。

yum更新汇总在此示例中,将升级166个软件包,并安装6个新软件包。

在升级应用程序时需要安装新软件包的原因是,某些新软件包可能已成为该Linux发行版的一部分,或者某些升级后的应用程序可能依赖于尚未安装的其他软件包。

在查看了yum计划升级的软件的列表之后,您可以通过键入“ y”并按Enter来确认这些更改。

然后Yum将执行升级,这可能需要一些时间,具体取决于您的连接速度和系统本身。

完成后,您将获得一个最终摘要,其中将列出所有已成功升级的软件包以及可能遇到的任何错误。

无需gpg检查即可更新

GPG密钥用于验证RPM软件包的真实性。yum中的–nogpgcheck选项将指示它跳过检查软件包上的GPG签名验证。如果您有未签名的软件包或没有GPG密钥的情况下,这就会非常有用了。

$ yum update --nogpgcheck

当运行普通的yum update命令时,遇到诸如“ Package NameOfPackage.rpm is not signed .. install failed!”之类的错误,nogpgcheck选项忽略此警告,并继续进行软件包升级,就会是一个好的解决方法。

从本地仓库更新

可以为yum设置本地存储库,以便在更新时进行查询。如果要使用yum更新默认存储库中未包含的软件包,或者需要升级离线系统,通常可以这样做。

首先,将所有更新的RPM文件放置在新文件夹中。在此示例中,我们将使用/ root / rpms。

接下来,导航到以下目录,您可以在其中查看yum的所有repo文件:

$ cd /etc/yum.repos.d

本地repo文件要设置本地存储库,请在此目录中创建一个新文件。

$ vi MyRepo.repo

‍在您的repo文件中,以这种格式配置它,并根据需要更改行:

[MyRepo]
 
name=My Local Repo
 
baseurl=file:///root/rpms
 
enabled=1
 
gpgcheck=0

本地存储库和远程存储库之间的最大区别在于“ baseurl”行,其中file://protocol指定本地文件,而不是远程协议http://或ftp://

保存文件后,请应用正确的权限:

$ chmod 644 MyRepo.repo

‍现在应该可以使用该存储库了。在尝试执行yum update命令之前,请确保清除yum的缓存:

$ yum clean all

显示补丁

Yum可以使用以下命令显示可用的安全补丁,而无需安装它们:

$ yum updateinfo list security

如果未返回任何输出(如上面的屏幕截图所示),则意味着您的系统上没有任何安全补丁可用于已安装的软件。

更新单个包

如果您需要更新某个程序包而不为安装的每个应用程序都运行更新,则只需在yum update命令中指定程序包的名称即可。

$ yum update name-of-package

yum更新程序包名称可以指定多个软件包,以空格分隔就好。您需要正确输入软件包的名称,以便yum在其存储库中找到它。如果不确定软件包名称,可以首先检查下当前哪些软件包可以进行更新:

$ yum check-update

除某个软件包外其他的都更新

如果需要运行yum update命令,但希望排除某一个软件包不更新,则可以指定–exclude选项。

管理员可能会发现这种情况通常是指内核更新,如果发生错误的话影响会比较大,但又想更新一些不是特别敏感的应用程序。

要排除的软件包(在此示例中,指的是与内核相关的软件包):

$ yum update --exclude=kernel*

如果有多个相关软件包,或者不知道软件包的全名,则星号可以用作通配符来代替。

或者:

$ yum update -x 'kernel*'

排除多个软件包

您可以使用更多–exclude来排除多个软件包。

$ yum update --exclude=kernel* --exclude=httpd

使用此标志或根据需要多次使用-x。

检查上次yum更新运行情况

要查看yum事务的列表以及运行的日期和时间,请使用yum history命令。

$ yum history

在上面的屏幕截图中,您可以看到yum更新软件的最后一次发布是1月4日。

回滚(还原)更新

yum的一个重要功能是,它允许您撤消最近的更新,从而将升级后的软件包还原到其以前的版本。

每个yum操作(安装、更新、删除等)都分配有一个事务ID,并且在撤消yum更新时必须指定此ID。要查看最近的yum操作的事务ID列表,请使用以下命令:

$ yum history

在上面的屏幕截图中,您可以看到yum上次运行的操作是安装httpd软件包。撤消安装或更新的工作方式相同,因此在此示例中,我们将撤消最近安装的httpd。如屏幕截图所示,其ID为7。

要撤消此更改并将程序回滚到以前的版本,发出以下命令:

$ yum history undo 7

然后,yum会总结要进行的更改,并询问您是否要继续输入“ Y / N”。输入Y,指定的事务将被撤消。

清理失败的yum更新(故障排除)

如果运行yum update命令时一个或多个软件包未能成功升级,则系统最终可能会安装重复的软件包(同一程序的2个版本)。

有时,按照上面部分中的回滚说明可以解决此问题。如果这不起作用,则可以使用以下命令在系统上删除重复的软件包:

$ package-cleanup --dupes

Yum存储有关包、元数据和头文件的信息的高速缓存。如果遇到错误,清除yum的缓存是解决问题的第一步。使用以下命令执行此操作:

$ yum clean all

跳过错误

在更新或安装软件包时,该软件包可能需要其他软件才能正确运行。Yum意识到这些依赖关系,并将在更新期间通过安装或升级所需的额外软件包来尝试解决它们。

如果yum在安装必要的依赖项时遇到问题,则会产生错误,并且不会继续执行命令。如果您有其他需要更新的软件包,这就回是一个问题。

要指示yum继续更新其他软件包并跳过依赖项损坏的软件包,可以在yum update命令中指定–skip-broken命令。

$ yum update --skip-broken

获取需要更新的软件包列表

正常运行yum update命令,不带其他选项,将输出可用更新列表。

$ yum update

如果您想查看有关可用软件包更新的其他信息,请输入以下命令:

$ yum updateinfo

要查看有关系统可用的安全更新的信息,请键入以下命令:

$ yum updateinfo security

yum check更新和list 更新之间的区别

尽管这两个命令听起来很相似,但是其实是有区别的。

$ yum list updates

上面显示的list 更新的命令将列出存储库中所有可用更新的软件包。但是存储库中的一些包甚至可能没有安装到您的系统上。

 $ yum check-update

yum检查更新如上所示,check更新的命令是一种检查更新而不会提示用户的方法。例如,如果您要编写脚本以检查更新,则可以选择此命令。

如果有可用更新的软件包,则check-update命令将返回一个退出值100;如果没有可用更新,则它将返回退出值0。

如果遇到错误,则返回值1。使用这些退出代码对脚本进行相应编码。

有可用更新时通知

有一些软件包可以帮助您管理系统上的yum更新。当yum有可供安装的更新时,有些甚至可以通知管理员。其中一种这样的服务称为yum-cron。

使用yum安装yum-cron:

$ yum install yum-cron

将yum-cron服务设置为在启动时启动:

$ systemctl enable yum-cron.service
 
$ systemctl start yum-cron.service

使用vi或首选的文本编辑器在配置文件中配置yum-cron的设置:

$ vi /etc/yum/yum-cron.conf

‍在此文件中,你可以指定是否应自动应用更新。如果您只想接收通知,在配置文件中填写电子邮件信息就可以了。然后,只要系统有可用的更新,Yum-cron就会向你发送电子邮件通知你。

apply_updates = no #don’t apply updates automatically
 
email_from = root@localhost
 
email_to = admin@example.com
 
email_host = localhost

yum更新使用哪个端口

Yum在检查更新时使用端口80。如果您查看系统上的存储库文件,则会看到其中的所有链接均以http开头。

如果需要在防火墙中创建规则来允许yum工作,则需要允许端口80。

Yum更新与升级

到目前为止,在本教程中我们只讨论了yum update命令,但是还有另一个非常相似的命令:yum upgrade。

$ yum upgrade

yum升级这两个命令之间有很小的区别。yum update将更新您系统上的软件包,但跳过删除过时的软件包这一步。

Yum upgrade更新系统上的所有软件包的同时,也会删除过时的软件包。

这从本质上来看,yum update更安全,因为您不必担心在更新软件时意外删除必要的软件包。

发出yum upgrade命令时,请谨慎使用,因为它可能不会保留您仍在使用的某些软件包。

最后,希望本教程有帮助到你!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SACC开源架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档