[Linux修炼]了解包管理器yum

144 阅读10分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情

前言

      本文就来分享一波笔者对于Linux下软件包管理器yum的学习经验和心得。

      笔者水平有限,难免存在纰漏,欢迎指正交流。

Linux 软件包管理器 yum

前置理解

      先理解一个概念:在Linux下什么是工具?本质也是指令。

      我们先搭建一下理解链路:

  1. 安装软件之前,需要先把软件包下载下来,所以有一个前提:必须在联网状态下。

  2. 软件包并不是在你的本地的(你的电脑),那么软件包在哪里呢?只能在别人的电脑上(远端服务器上,云服务器)。

  3. 你的电脑怎么知道你要下的软件在网络中哪一台服务器上呢?

    1. PC端(Windows下):搜索官网下载
    2. 手机端:应用商店 (仅仅只是手机上的一个app,软件包本身还是在服务器上,不过应用商店内置了服务器的链接,可以通过链接找到服务器并下载对应软件)
    3. 那么PC端(Linux下)呢?

image-20221017115253517

  1. 又是谁提供的软件包,谁又把软件包放在了服务器上呢?

    1. 企业、个人或组织提供的(为了获取利益)

    2. 软件包提供好之后,通常放在哪里呢?

      1. 官网
      2. 应用商店(通常是手机厂商提供服务器,各种软件要上架得交钱)

      上述就是一种商业模式,一种生态。

软件包与Linux下安装

      前面讲了这么些东西,那么在Linux下又是如何呢?

image-20221017120725577

      在Linux下安装软件, 一个通常的办法是下载程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比手机端上 "App" 和 "应用商店" 这样的关系。

      yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora、RedHat、CentOS等发行版上。 yum基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

image-20221017124559595

      下载之后一定要安装,安装的本质就是拷贝,而拷贝一定会拷贝到特定目录,目录是有权限的,有些目录可以修改内容而有些目录则不能,普通用户就要用sudo提权安装,root用户直接安装即可。

注意事项

      关于 yum 的所有操作必须保证主机(或虚拟机)网络畅通。要是用云服务器就不用太担心这种问题。

      可以通过 ping 指令验证,比如 ping www.baidu.com

如何安装软件

      通过 yum, 我们可以通过很简单的一条命令完成 sl 的安装 :

image-20221017125457780

      yum 会自动找到都有哪些软件包需要下载,在安装前会询问是否确认,这时候敲 "y" 确认安装:

image-20221017125538798

      出现 "complete" 字样,说明安装完成:

image-20221017125608922

      既然安装成功了我们不妨运行一下试试(小火车嘟嘟嘟~): image-20221017130149149

      如果不想安装前被询问,可以加上一个-y选项,比如:yum install -y sl,这样一来就会直接安装而不询问。

      yum安装软件只能一个装完了再装另一个,正在yum安装一个软件的过程中,如果再尝试用yum安装另外一个软件,yum会报错。

具体细节:

      yum会查询数据库,有无这一软件包,假如有,则检查其依赖冲突关系,假如没有依赖冲突,那么下载安装;假如有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,需要自己作出判断。

如何卸载软件

      仍然是一条命令就可以搞定,比如这里我们把前面装的sl删掉:

image-20221017125926529

      会询问我们是否确认移除,输入y确认:

image-20221017125956370

      出现 "complete" 字样,说明卸载完成:

image-20221017130020229

      如果不想卸载前被询问,可以加上一个-y选项,比如:yum remove -y sl,这样一来就会直接卸载而不询问。

如何看软件包

      通过 yum list 命令可以罗列出当前一共有哪些软件包。

      由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包。例如

image-20221017130909162

注意事项:

软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构。

"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包, 选择包时要和系统匹配。

"el7" 表示操作系统发行版的版本.,"el7" 表示的是 centos7/redhat7, "el6" 表示 centos6/redhat6。

最后一列,base 表示的是 "软件源" 的名称,类似于 "小米应用商店"、"华为应用商店" 这样的概念。

如何查询软件包

      我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道名字。这时yum的查询功能就起作用了。您能够用 yum search xxx这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索任何可用rpm的描述,列出任何描述中和messeger有关的rpm包,于是我们可能得到gaim,kopete等等,并从中选择。

命令:yum search

比如:

image-20221018193525724

      有时我们还会碰到安装了一个包,但又不知道其用途,我们能够用yum info xxx这个指令来获取信息。

命令:yum info 比如:

image-20221018193438046

关于 rzsz

      这个工具用于 Windows 机器和远端的 Linux 机器通过 XShell 传输文件。

      rz用于Linux端接收Windows端的文件,而sz用于Windows端接收Linux端的文件。

image-20221017132111345

image-20221017132218937

      还可以通过拖拽的方式将文件从Windows端上传到Linux端。

清除缓存

命令:yum clean

      该命令介绍如下,作用:清除yum缓存。

      yum 会把下载的软件包和header存储在cache中,而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令进行清除。

      更精确的用法是:

      yum clean headers清除header,

      yum clean packages清除下载的rpm包,

      yum clean all一全部清除。

      使用yum clean all 清除,绕开了没有root权限的问题。

yum的拓展

      我们在使用yum安装时好像只告诉了yum我们要安装什么,并没有直接告诉它要安装的软件要在哪里下载。前面讲了,yum内置了链接可以去服务器找到软件包,这些链接其实就在yum源配置文件。

      我们可以找到当前机器的yum源:

image-20221017151825470

其中CentOS-Base.repo是基础yum源,我们进去看看:

image-20221017152315602

image-20221017152147550

我们发现该yum源中有一些链接,而且是被配置过的(这里用的是腾讯云服务器),配置的是是国内的镜像源。自动配置是云服务器完成的,就不需要再自己手动配置了,但是如果用的是虚拟机就需要自己配置。

比如要在CentOS7 修改yum源为阿里源:

 1. 查看yum源信息:
     yum repolist
 2. 定位到base repo源位置
      cd /etc/yum.repos.d
 3. 接着备份旧的配置文件
     mv CentOS-Base.repo CentOS-Base.repo.bak
 4. 下载阿里源的文件
   wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   
 5.清理缓存
     yum clean all
 6.重新生成缓存
     yum makecache
 7. 再次查看yum源信息
    yum repolist

      有些软件没有被纳入CentOS、Ubuntu、kail等相关的生态平台的官方软件集合(能在CentOS-Base.repo下载的软件)中,需要到非官方的软件集合中下载,对应的yum源为epel-release,可以用yum install -y epel-release安装一下。

      官方软件集合收录的是成熟安全稳定的软件,而非官方软件集合就是官方软件集合的储备池,当软件达到一定要求了就可能被收录到官方软件集合中去。

      一般而言,软件和软件之间是有关联的,是具有一定耦合的。比如你下载的VS,它可不只含有一个软件,里面包含了编译器、编辑器、语言所依赖的动态库、静态库等等。yum安装某软件,就只是单纯地安装该软件,yum会自动解决软件和软件之间的耦合问题。

命令小结

      在我们平时对CentOS的软件安装中,yum命令在查找安装盘中的rpm比较快。一些常用命令整理如下:

1.列出任何可更新的软件清单

命令:yum check-update

2.安装任何更新软件

命令:yum update

yum -y update:升级所有包同时,也升级软件和系统内核;

yum -y upgrade:只升级所有包,不升级软件和系统内核,软件和内核保持原样。

3.仅安装指定的软件

命令:yum install xxx

4.仅更新指定的软件

命令:yum update xxx

5.列出任何可安装软件的清单

命令:yum list

6.删除软件包

命令:yum remove xxx

7.查找软件包

命令:yum search xxx

8.列出任何可更新的软件包

命令:yum list updates

9.列出任何已安装的软件包

命令:yum list installed

10.列出任何已安装但不在 yum Repository 內的软件包

命令:yum list extras

11.获取某软件包信息

命令:yum info xxx

12.列出任何软件包的信息

命令:yum info

13.列出任何可更新的软件包信息

命令:yum info updates

14.列出任何已安装的软件包信息

命令:yum info installed

15.列出任何已安装但不在 Yum Repository 內的软件包信息

命令:yum info extras

16.列出软件包提供哪些文档

命令:yum provides

17.清除缓存目录(/var/cache/yum)下的软件包

命令:yum clean packages

18.清除缓存目录(/var/cache/yum)下的 headers

命令:yum clean headers

19.清除缓存目录(/var/cache/yum)下旧的 headers

命令:yum clean oldheaders

20.清除缓存目录(/var/cache/yum)下的软件包及旧的headers

命令:yum clean或yum clean all (= yum clean packages,yum clean oldheaders).

21.将软件包信息缓存到本地

命令:yum makecache

      yum工具在每次安装指定软件包的时候,都会检测源服务器上的软件包信息,为了便捷不用每次都去搜索软件包信息,因此使用 yum makecache将软件包信息缓存到本地


以上就是本文全部内容,感谢观看,你的支持就是对我最大的鼓励~

src=http___c-ssl.duitang.com_uploads_item_201708_07_20170807082850_kGsQF.thumb.400_0.gif&refer=http___c-ssl.duitang.gif