yum 指令

3,132 阅读4分钟

这是我参与11月更文挑战的第 9 天,活动详情查看:2021最后一次更文挑战

yum(Yellowdog Updater Modified):是一个基于 RPM 的软件包管理器,能够从指定服务器自动下载RPM包并且安装,可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。

工作原理示意图

yum 客户端及服务器的工作原理如下图所示

image.png

yum 的配置文件

配置文件所在目录:/etc/yum.repos.d

# vim /etc/yum.repos.d/alios.repo
----------------------------------------
[alios.7u2.base.$basearch]
name=alios
baseurl=http://yum.tbsite.net/alios/7u2/os/$basearch/  # $basearch:系统基础架构,如 x86_64
gpgcheck=0
----------------------------------------

x.repo 文件相关配置 key 简介:

  • 1、[alios.7u2.base.$basearch]: 仓库的ID,可以取任意名字,只要不和其他的ID冲突即可
  • 2、name=xxx: 用于描述容器含义
  • 3、enabled={1|0}: 是否启用这个仓库,0表示不启用,1表示启用,默认是启用的
  • 4、mirrorlist: 列出这个容器可以使用的镜像站点(如果不想使用,可以注释,本案例中没有体现)
  • 5、baseurl=url: 容器地址,mirrorlist 是由 yum 程序自行找镜像站点,baseurl 则是指定一个固定容器地址
  • 6、gpgcheck={1|0}: 是否进行签名合法性检测,0 表示不启用,1表示启用,如果选择启用 gpg 检查,则需要告知其 key 是什么
  • 7、gpgkey=url: 如果启用 gpg 检测,则需要指定 gpgkey 的路径,即使导入过 gpgkey,这里仍然需要手动为其指定路径,这个路径可以是远程服务器上的,也可以是本地的,只要让本地客户端访问到即可

如果两个仓库里的 RPM 包是一样的,一个在远程服务器上,另一个在本地光盘上,那么本地光盘的访问速度通常会快于远程服务器上。在配置文件中,我们可以定义这样的两个仓库,为其中一个设定优先级

注: gpgme.GpgmeError: (7, 32870, u’\ufffd\ufffd\ufffd\u8c78\ufffd\ufffd\ufffd\u02b5\ufffd\ufffd\ufffd ioctl \ufffd\ufffd\ufffd\ufffd’) #如果执行报这个错,表示当前系统字符编码不支持 Unicode,改一下就好**

配置 yum 数据源

默认情况下 yum 使用的源都是国外的地址,那我们如果期望下载速度更快一些时,就可以考虑使用国内的一些源,比如 aliyun 提供的, 以配置 docker yum 数据源为例:

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:bestyumcache, fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

然后就可以在 /etc/yum.repos.d/ 下看到 docker-ce.repo

$ sudo cat docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

# ...省略其他

yum 的一些基本功能

yum 基本功能主要包括:查询、删除、更新/升级以及软件组等

查询

yum 查询有以下几种姿势,这里挨个举例。

yum search xxx

搜索某个软件名称或者描述的重要关键字

$ yum search java
已加载插件:bestyumcache, branch, fastestmirror, langpacks
Loading mirror speeds from cached hostfile
kubernetes                                                                                                                                                                  579/579
================================================================================ N/S matched: java =================================================================================
abrt-java-connector.x86_64 : JNI Agent library converting Java exceptions to ABRT problems
aether-javadoc.noarch : Java API documentation for Aether
alicpp-gcc492-netlib-java.x86_64 : alicpp-gcc492-netlib-java-1.1.2.odps
ant-antunit-javadoc.noarch : Javadoc for ant-antunit
ant-contrib-javadoc.noarch : Javadoc for ant-contrib
ant-javadoc.noarch : Javadoc for ant

yum info xxx

列出软件功能(不太方便透露的信息,以 xxxx 代替了)

$ yum info docker\
已加载插件:bestyumcache, branch, fastestmirror, langpacks\
Loading mirror speeds from cached hostfile\
可安装的软件包\
名称 :docker\
架构 :x86_64\
版本 :xxxx\
发布 :xxxx\
大小 :103 M\
源 :xxxx\
简介 :xxxx\
网址 :xxxx\
协议 : Commercial\
描述 : CodeUrl:git@xxxx\
: CodeRev:e3xx79d\
: AoneLog: xxxx\
: AoneUrl:xxxx\
: xxx container service docker-xxx; branch: vxxx\

yum list

列出 yum 服务器上面所有的软件名称,这里就不列了(下面一个是按规则搜的)

yum list xxxx*

找出以 xxx 开头的软件名称

$ yum list docker
已加载插件:bestyumcache, branch, fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
docker.x86_64    version-xxx   xxxx

yum list updates

列出 yum 服务器上可提供本机进行升级的软件(返回的信息是 yum list 的子集,这里也不举例了)

安装 or 升级

  • yum install/update 软件名称
  • yum install 软件名称 -y #安装过程中免输入y确认

删除

  • yum remove 软件名称

软件组

  • yum grouplist //查看容器和本机上可用与安装过的软件组
  • yum groupinfo group_name //查看group内所有组名称
  • yum install/remove group_name //安装与删除

除此之外,如果我们想升级所有的软件包,可以通过如下方式搞定

  • yum -y update 升级所有包,改变软件设置和系统设置,系统版本内核都升级
  • yum -y upgrade 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

已经上线的用yum -y upgrade 比较稳,全新的用yum -y update 会更好

参考