centos学习-掌握核心命令之-yum

devtools/2024/9/25 7:46:09/

引言

在CentOS系统中,yum(Yellowdog Updater Modified)是一个强大的包管理工具,用于自动从指定的远程仓库下载并安装、更新、删除软件包。yum简化了依赖关系管理,使得Linux系统的软件包管理变得非常容易。下面是对CentOS中yum命令及有关配置文件的详细解释。

一、yum的基本概念和原理

yum基于RPM包管理,拥有自动化安装、升级、配置甚至删除软件的功能。它自动解决了软件包之间的依赖关系,使得用户可以轻松地安装、更新和删除软件包。yum的工作原理主要依赖于其仓库(repository)的概念,这些仓库包含了大量的软件包及其元数据,yum通过这些元数据来解析软件包之间的依赖关系。

二、yum命令的基本语法

yum命令的基本语法如下:

yum [options] [command] [package ...]

其中,options是可选的命令行选项,command是yum要执行的操作(如install、update等),package是要操作的软件包名。

三、yum的主要命令和选项

安装软件包
使用install命令可以安装一个或多个软件包:

yum install package1 package2 ...

更新软件包
使用update命令可以更新一个或多个软件包,或者使用upgrade命令更新所有已安装的软件包:

yum update package1 package2 ...  
yum upgrade

删除软件包
使用remove或erase命令可以删除一个或多个软件包:

yum remove package1 package2 ...  
yum erase package1 package2 ...

列出软件包
使用list命令可以列出所有可用或已安装的软件包:

yum list available  
yum list installed

搜索软件包
使用search命令可以根据关键字搜索软件包:

yum search keyword

查看软件包信息
使用info命令可以查看软件包的详细信息:

yum info package

清理缓存
使用clean命令可以清理yum的缓存目录:

yum clean all

配置yum仓库
yum的配置文件通常位于/etc/yum.conf和/etc/yum.repos.d/目录下。你可以直接编辑这些文件来配置或添加新的仓库。

软件包组管理
yum允许用户以软件包组的形式来安装、更新或删除多个相关的软件包。这通常用于安装一组具有共同功能的软件包,如开发工具组、图形界面组等。

例如,要安装开发工具组,可以使用以下命令:

yum groupinstall "Development Tools"

事务管理
yum使用事务机制来确保软件包管理操作的原子性。这意味着,要么所有的软件包都成功安装或更新,要么在遇到问题时回滚到操作之前的状态,确保系统的稳定性。
用户可以使用yum history命令查看历史事务,并使用yum history undo命令撤销特定的事务。

缓存管理
yum在下载软件包时会将其缓存到本地,以便后续操作能够更快地执行。但是,随着时间的推移,缓存可能会变得庞大且过时。因此,定期清理缓存是一个好习惯。

除了使用yum clean命令清理缓存外,用户还可以使用yum makecache命令重新生成缓存,以确保yum能够使用最新的仓库元数据。

四、yum的依赖管理

yum的强大之处在于其自动处理依赖关系的能力。当你尝试安装一个软件包时,yum会自动检查该软件包所依赖的其他软件包,并尝试安装这些依赖项。同样,当你尝试删除一个软件包时,yum也会检查是否有其他软件包依赖于它,并尽量避免删除这些依赖项。

五、yum的插件和扩展

yum还支持插件和扩展功能,这些功能可以通过安装额外的软件包来启用。例如,yum-fastestmirror插件可以自动选择最快的仓库镜像,yum-complete-transaction插件可以在系统崩溃后恢复未完成的事务等。
用户可以使用yum plugins命令来查看已安装的插件,并使用yum plugin-installyum plugin-remove命令来安装和删除插件。

六、yum的自定义配置

yum的配置文件允许用户根据需要进行自定义设置,以满足特定的需求。主要的配置文件包括/etc/yum.conf和/etc/yum.repos.d/目录下的.repo仓库配置文件。要配置本地仓库,需要在/etc/yum.repos.d/目录下创建一个新的仓库配置文件,并指定本地仓库的路径和相关信息。

在/etc/yum.conf中,用户可以设置全局选项,如缓存目录、默认安装选项等。而在/etc/yum.repos.d/目录下的仓库配置文件中,用户可以定义每个仓库的详细信息,如仓库的ID、名称、URL、启用状态等。

通过编辑这些配置文件,用户可以自定义yum的行为,以满足特定的需求。例如,可以添加新的仓库以获取特定的软件包,或者禁用某个仓库以避免不必要的更新。

yum.conf 配置参数
assumeyes=0:这个参数决定是否提示确认操作。当设置为0时,执行如yum install package_name等命令时会提示用户确认操作。如果设置为1,则不会提示确认操作,直接进行安装。
cachedir=directory:这是yum存储其缓存和数据库文件的目录。例如,/var/cache/yum是yum下载的RPM包的缓存目录。
debuglevel=2:这个参数设置yum生成的调试输出的详细信息级别。其值范围通常为1到10之间的整数。设置更高的调试级别值将导致yum显示更详细的调试输出。默认值是2,而debuglevel=0将禁用调试输出。
exactarch=1:这个参数决定在更新包时是否考虑准确的体系结构。当启用时(默认值为1),它将确保只更新与当前系统体系结构匹配的包。
keepcache=0:这个参数决定安装成功后是否保留标题和包的缓存。当设置为0时,安装完成后不会保留缓存。
plugins=1:这个参数决定是否全局启用所有yum插件。当设置为1时,所有yum插件都将被启用。
reposdir
定义了包含.repo文件的目录位置。yum将从这些文件中读取仓库信息。默认值是/etc/yum.repos.d/。
gpgcheck
全局启用或禁用GPG检查。GPG检查用于验证下载的包的完整性。如果设置为1,则启用GPG检查;如果设置为0,则禁用。
installonly_limit
定义了installonly插件可以保留的RPM包的最大数量。这通常用于内核和其他特殊类型的包,这些包可能不需要保留多个版本。
exclude
列出不应该被安装或更新的包。这可以用来防止自动更新某些关键包,例如数据库或特定应用程序。
localinstall
当设置为1时,允许从本地文件安装RPM包,而不是只能从yum仓库。
history_list_view
定义了yum history命令的默认输出格式。

.repo 文件的配置
仓库标识
每个仓库配置通常以 [ 和 ] 包围的仓库 ID 开始,这是该仓库的唯一标识符。
一个 .repo 文件可以包含多个 [repository_id] 部分,每个部分定义一个不同的仓库。
基本配置
name:仓库的描述性名称。
baseurlmirrorlist:定义仓库的基础 URL 或镜像列表 URL。baseurl 指向仓库的实际位置,而 mirrorlist 则指向一个包含多个镜像地址的列表。
enabled:指定是否启用该仓库。1 表示启用,0 表示禁用。
gpgcheck:指定是否对从该仓库下载的包进行 GPG 签名检查。1 表示启用,0 表示禁用。
gpgkey:用于验证仓库中包签名的 GPG 密钥的 URL。
cost:定义仓库的成本,用于在多个仓库中决定使用哪个仓库。当多个仓库提供相同的包时,YUM 会使用成本较低的仓库。
includepkgsexcludepkgs:分别指定应包含或排除的特定包。
failovermethod:定义当 baseurl 或 mirrorlist 中的仓库不可用时,YUM 应如何操作。例如,可以设置为 “roundrobin” 以循环尝试列表中的每个地址。

示例:
name=Repository_Name  
baseurl=http://example.com/repo  
enabled=1  
gpgcheck=1  
gpgkey=http://example.com/repo/RPM-GPG-KEY
cost=1000  
includepkgs=package1,package2  
excludepkgs=package3  
failovermethod=roundrobin

注意:
在修改或添加 .repo 文件后,通常需要运行 yum clean all 来清除缓存,并运行 yum makecache 来重新生成缓存。
确保仓库的 URL 是正确的,并且服务器是可访问的。
如果启用了 GPG 检查,请确保 GPG 密钥的 URL 也是正确的,并且密钥是可用的。

七、yum的镜像选择与优化

在使用yum时,选择合适的软件仓库镜像源(repository mirror)对于提高软件包的下载速度和稳定性至关重要。默认情况下,yum可能会使用官方提供的镜像源,但由于地理位置和网络状况的差异,这些源可能并不是最快的。因此,用户可以考虑使用地理位置更近的镜像源,或者选择稳定性更高的镜像源。

要更换yum的镜像源,用户需要编辑/etc/yum.repos.d/目录下的相关配置文件,将原有的镜像地址替换为新的镜像地址。同时,也可以考虑使用如yum-fastestmirror这样的插件来自动选择最快的镜像源。

根据需求还可以搭建内部的YUM镜像服务器,实现对软件包的统一管理和分发,提高下载速度并降低对外部网络的依赖。

八、yum与其他工具的集成

yum作为软件包管理工具,与其他Linux系统工具和服务有着良好的集成。例如,它可以与自动化配置管理工具(如Ansible、Puppet等)集成,实现软件包的自动化部署和更新。此外,yum还可以与SELinux(Security-Enhanced Linux)等安全工具配合,确保在安装和更新软件包时遵守安全策略。

九、使用yum进行软件包的版本控制

在软件部署和维护过程中,对软件包的版本控制至关重要。yum提供了一些选项来管理特定版本的软件包,允许用户安装、更新或降级到特定版本的软件包。

例如,使用yum install package-name-version命令可以安装特定版本的软件包。通过指定包名和版本号,用户能够确保安装了所需的确切版本。同样,使用yum downgrade package-name-version命令可以降级到较早的软件包版本。

此外,yum还提供了版本锁定功能,可以阻止某些软件包被意外更新。这对于维护系统的稳定性和一致性非常有用。通过创建版本锁定文件并指定要锁定的软件包及其版本,用户可以确保这些软件包不会被更新到更高的版本。

十、yum的扩展性和自定义插件

yum的扩展性是其强大功能之一,它允许用户通过编写自定义插件来扩展其功能。插件是一种可以添加到yum中的代码片段,用于实现特定的功能或行为。

通过编写自定义插件,用户可以添加新的命令、扩展仓库支持、处理特定的软件包依赖关系等。这为用户提供了极大的灵活性,使他们能够根据自己的需求定制yum的行为。

要使用自定义插件,用户需要将其放置在/usr/lib/yum-plugins/目录下,并确保插件文件具有正确的执行权限。然后,在yum的配置文件中启用该插件,即可在yum操作中使用该插件提供的功能。

十一、yum与其他Linux发行版的兼容性

虽然yum最初是为CentOS和Red Hat Enterprise Linux(RHEL)开发的,但它也与其他基于RPM的Linux发行版兼容。这些发行版包括Fedora、Scientific Linux等。由于它们都使用RPM作为软件包格式,因此yum可以在这些系统上无缝地管理软件包。

然而,需要注意的是,不同发行版可能对yum的配置和插件支持有所不同。因此,在使用yum时,用户应该参考特定发行版的文档和最佳实践,以确保获得最佳的性能和安全性。

十二、yum的安全性

在使用yum安装软件包时,安全性是一个需要重点考虑的因素。由于软件包可能包含可执行代码,因此确保从可信的源获取软件包至关重要。用户应该只从官方或经过验证的仓库中获取软件包,避免从未知的或不受信任的源安装软件。

此外,定期更新系统和软件包也是保持系统安全的重要措施。通过yum update命令,用户可以获取最新的安全补丁和功能更新,提升系统的安全性。

同时,用户还应该关注yum自身的安全漏洞和更新。随着安全研究的深入,可能会发现yum或其依赖组件存在安全漏洞。因此,定期查看官方安全公告并应用相关更新是非常重要的。

十三、yum的常见问题与解决方案

在使用yum时,可能会遇到一些常见问题,如依赖关系错误、软件包冲突、无法连接到仓库等。下面是一些常见问题的解决方案:

依赖关系错误:当yum提示依赖关系问题时,通常是因为要安装的软件包与系统中的其他软件包存在冲突或缺失依赖项。可以尝试使用yum update命令更新系统,或者安装缺失的依赖项。
软件包冲突:有时,尝试安装的软件包可能与已安装的软件包存在版本冲突。在这种情况下,可以使用yum replace命令替换冲突的软件包,或者先删除已安装的软件包再尝试安装新版本。
无法连接到仓库:如果yum无法连接到远程仓库,可能是由于网络问题或仓库地址错误。可以检查网络连接,并确认仓库地址是否正确。此外,也可以尝试清除缓存并重新生成缓存。

yum在执行软件包管理操作时会产生日志记录,这对于故障排除和审计非常有用。默认情况下,yum的日志文件位于/var/log/yum.log。通过查看这些日志文件,用户可以了解yum操作的详细信息,包括安装、更新和删除的软件包、依赖关系解析结果以及任何错误或警告消息。

十四、yum与DNF的关系及未来展望

虽然yum在CentOS中一直发挥着重要的作用,但随着技术的不断发展和新的Linux发行版的出现,一些替代方案也逐渐崭露头角。例如,dnf(Dandified YUM)是yum的下一代版本,它在性能、依赖关系解析和插件支持等方面进行了改进。旨在提供更快、更稳定、更灵活的包管理体验。在Fedora等发行版中,dnf 已经取代了yum成为默认的包管理工具。

然而,对于许多CentOS用户来说,yum 仍然是一个稳定可靠的选择。它简单易用,功能强大,能够满足大多数用户的需求。在未来,随着CentOS和其衍生版本的不断发展,我们可能会看到更多的包管理工具出现,但yum 仍然会是一个重要的里程碑。

虽然yum在CentOS等老版本系统中仍然广泛使用,但随着时间的推移和系统的升级,DNF可能会逐渐取代yum成为主流的包管理工具。因此,对于系统管理员和开发人员来说,了解并熟悉DNF的使用和管理是很有必要的。

随着技术的不断发展和系统的升级,我们需要不断学习和适应新的管理工具和技术,以更好地管理Linux系统。


http://www.ppmy.cn/devtools/23603.html

相关文章

宠物领养|基于SprinBoot+vue的宠物领养管理系统(源码+数据库+文档)

宠物领养目录 基于Spring Boot的宠物领养系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1前台 1.1 宠物领养 1.2 宠物认领 1.3 教学视频 2后台 2.1宠物领养管理 2.2 宠物领养审核管理 2.3 宠物认领管理 2.4 宠物认领审核管理 2.5 教学视频管理 四、…

Vue中嵌套路由(子路由)的使用

请注意不要把普通路由设为子路由,否则路由不会跳转的。 当你想要在一个路由的组件内部展示另一个组件,并且这个内部组件的 URL 是基于外部组件的 URL 时,才需要使用 children。 使用 children 的情况: 侧边栏或顶部导航的页面布局…

微信小程序按钮点击时的样式hover-class=“hover“

小程序的button组件很好用,按钮点击的时候会显示点击状态,默认的就是颜色加深 但是我们改变了button的背景色之后,就看不出点击效果了,解决起来也很简单 关键代码就是小程序的 hover-class 属性,需要注意的是&#xff…

k8s:精通 Pod 操作的关键命令

在Kubernetes(K8s)中,Pod是最基本的部署单元,包含了运行应用所需要的容器、存储、网络等资源。精通Pod操作的关键命令对于有效地管理和维护Kubernetes集群至关重要。以下是一些关键的Pod操作命令: 查看Pod列表&#x…

从零开始学C语言系列之第二章《C语言概述及基本知识2》

往期回顾 【第一章】《认识C语言》 【第二章】C语言概述及基本知识1 文章目录 往期回顾进制进制的概念计算机中为什么要用二进制进制间的相互转换问题 变量及常量数据变量基本概念:进阶概念:函数:全局变量:局部变量:重…

决策树分析及其在项目管理中的应用

决策树分析是一种分类学习方法,其主要用于解决分类和回归问题。在决策树中,每个内部节点表示一个属性上的测试,每个分支代表一个属性输出,而每个叶节点则代表类或类分布。通过从根节点到内部节点的路径,可以构建一系列…

Docker基本操作 Linux里边操作

docker镜像操作命令: docker images:查看所有镜像; docker rmi:删除镜像 后边可以跟镜像的名字或者id指定要删除的镜像; docker pull:拉取镜像; docker push:推送镜像到服务; docker save :打包镜像 后边有用法; docker load:加载镜像&…

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣,小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着,关键词、评分还有uv(授权)等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…