[关闭]
@cdmonkey 2022-05-09T06:17:10.000000Z 字数 7923 阅读 996

yum

命令总结


一、简介

内容请见学习笔记。

二、命令格式

  1. yum [option] [command] [package ...]

该指令可以看做是RPM指令的智能化工具,它的底层是基于RPM工作机制的,但是Yum给系统管理员提供了更为友好智能的管理RPM软件包的功能(例如,解决了复杂的RPM软件包的依赖关系和自动从服务器上下载更新等功能),可以实现自动化的下载并安装软件包,极大的简化了管理员的管理负担。

常用选项:
下面大多数的命令项可以通过配置文件(例如yum.conf)进行设置,并且给出了使用配置文件设置时候的配置选项。

此处输入图片的描述

选项 长选项 说明
-c_ --config 指定配置文件的位置,可以是HTTP、FTP的地址,或者是本地的文件路径。
-y --assumeyes 假设所有的问题的回答都是“yes”。配置的选项:assumeyes
-q --quiet
--installroot=root 指定一个可选的安装路径,所有的软件包都是基于这个路径被安装的。相应的配置选项为:installroot
-x --exclude 通过指定名字,排除软件仓库中更新的软件。配置的选项为:exclude
--nogpgcheck 运行的时候,不进行“GPG”签名检查。配置选项为:gpgcheck
--skip-broken 忽略依赖问题。配置选项为:skip_broken
--disablerepo 禁止一个通过id或者glob指定的特定的软件仓库。配置的选项为:enabled
--enablerepo

经验技巧:

常用指令:

  1. yum install #全部安装。
  2. yum install package1 #安装指定的安装包package1。
  3. yum groupinsall group1 #安装程序组group1。
  4. ----------------------
  5. yum update #全部更新。
  6. yum update package1 #更新指定程序包package1。
  7. yum check-update #检查可更新的程序。
  8. yum upgrade package1 #升级指定程序包package1。
  9. yum groupupdate group1 #升级程序组group1。
  10. ----------------------
  11. yum info package1 #显示安装包信息package1。
  12. yum list #显示所有已经安装和可以安装的程序包。
  13. yum list package1 #显示指定程序包安装情况package1。
  14. yum groupinfo group1 #显示程序组group1信息。
  15. yum search string #根据关键字string查找安装包。
  16. ----------------------
  17. yum remove package1 #删除程序包package1。
  18. yum groupremove group1 #删除程序组group1。
  19. yum deplist package1 #查看程序package1依赖情况。
  20. ----------------------
  21. yum clean packages #清除缓存目录下的软件包。

三、软件源的配置与使用

它的主要功能是方便的添加、删除以及更新软件包,自动解决软件包的倚赖性问题,便于管理大量系统软件的更新问题。其关键之处是要有可靠的“资源库(repository)”,顾名思义,这是软件的仓库,它可以是外部的站点,也可以是本地软件库,并且可以同时配置多个软件源仓库。

Configuration File

关于“yum”的设定分为两部分:main、repository。这两部分分别位于不同的文件内:

部分 说明
main 这部分定义了全局配置选项,该部分在整个配置文件中应该只有一处,通常为:/etc/yum.conf
repository 这部分定义了每个源的具体配置,可以有一到多个。通常位于/etc/yum.repos.d/目录下的各文件中。

main

  1. [root@WEB-A1 ~]# vim /etc/yum.conf
  2. [main]
  3. cachedir=/var/cache/yum/$basearch/$releasever #指定缓存目录,Yum在此存储下载的软件包和数据库。
  4. keepcache=0 #完成安装后是否保留软件包,0为不保留(默认值),1为保留。
  5. debuglevel=2 #调试信息输出等级,范围为0~10,缺省为2。
  6. logfile=/var/log/yum.log #日志文件的位置。用户可以到日志文件中去查询过去所做的更新。
  7. exactarch=1 #这里有1和0两个选项,如果设置为1,则Yum只会安装和系统架构匹配的软件包。默认值为1。
  8. obsoletes=1 #这是一个e的参数,简单的说就是相当于upgrade,允许更新陈旧的软件包。
  9. gpgcheck=1 #同样有1和0两个选择,分别代表是否是否进行GPG校验,以确定软件包的来源是否有效和安全。如果这个选项如果设置在全局部分,则对每个源都有效。
  10. plugins=1 #是否启用插件,默认1为允许,0表示不允许。我们一般会使用yum-fastestmirror这个插件。
  11. installonly_limit=5
  12. bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
  13. distroverpkg=centos-release

repository

Yum是使用仓库来保存并管理软件包,仓库的配置文件是存放在/etc/yum.repos.d/这个文件目录下。

通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,该文件中的设置内容将被“yum”读取和应用。

  1. [root@WEB-A1 ~]# ll /etc/yum.repos.d/
  2. total 16
  3. -rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
  4. -rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
  5. -rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
  6. -rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
  1. [root@rc-jenkins yum.repos.d]# cat CentOS-Base.repo
  2. [base] # [serverid],用于区别各个不同的仓库,必须有一个唯一的名称。
  3. name=CentOS-$releasever - Base - mirrors.aliyun.com
  4. # 上面是对仓库的描述,支持使用变量:$releasever、$basearch
  5. failovermethod=priority
  6. baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
  7. http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
  8. # 上面的地址部分是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。同样支持使用变量。
  9. # 这里可使用多个地址,但是只能有一个baseurl。其路径指向的目录必须是这个repository header目录的上一级。
  10. gpgcheck=1
  11. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
  12. ...

配置本地源

配置文件                     说明
-----------------------------------------------------------------------------------------
CentOS-Base.repo       网络源的配置文件。
CentOS-Media.repo      本地源的配置文件。

第一步:挂载系统安装光盘

  1. [root@WEB-A1 ~]# mkdir /mnt/cdrom
  2. [root@WEB-A1 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom
  3. mount: block device /dev/sr0 is write-protected, mounting read-only
  4. #光驱挂载成功。

第二步:修改本地源的配置文件
需要修改两处,一是将路径的第二行修改为当前的光驱挂载点,第二处是生效开关,如下所示:

  1. [root@WEB-A1 ~]# vim /etc/yum.repos.d/CentOS-Media.repo
  2. [c6-media]
  3. name=CentOS-$releasever - Media
  4. baseurl=file:///media/CentOS/
  5. file:///media/cdrom/ #-->file:///mnt/cdrom/
  6. file:///media/cdrecorder/
  7. gpgcheck=1
  8. enabled=0 #-->enabled=1
  9. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

第三步:禁用默认的网络源
所谓的禁用,就是将网络源的配置文件改名(例如添加一个后缀),否则yum指令会先在网络源中寻找适合的包,而改名后会直接从本地源读取。

  1. [root@WEB-A1 ~]# cd /etc/yum.repos.d/
  2. [root@WEB-A1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
  3. #如此,通过修改配置文件名达到了禁用网络源的效果。

通过进行上面的操作,若果再执行yum指令,系统将把挂载的光盘作为首选的软件源。

配置网络源

sohu

http://mirrors.sohu.com/help/centos.html

  1. [root@WEB-A1 ~]# cd /etc/yum.repos.d/
  2. [root@WEB-A1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
  3. [root@WEB-A1 yum.repos.d]# wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
  4. [root@WEB-A1 yum.repos.d]# yum makecache
  5. #可能会出现下面的报错信息:
  6. http://mirrors.sohu.com/centos/6/addons/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
  7. Trying other mirror.
  8. Error: Cannot retrieve repository metadata (repomd.xml) for repository: addons. Please verify its path and try again
  9. #解决办法就是将配置文件中的整个“[addons]”部分都注释掉。

163

http://mirrors.163.com/.help/centos.html

四、Reinstall YUM

五、GPG

安装软件包时可以对软件包进行“gpg-GNU Private Guard”校验,从而确定软件包的来源是有效和安全的。该加密采用非对称加密的方法,而客户端系统上存储的是公钥。

六、排错

安装完软件后会有如下的一行提示信息:

  1. Warning: RPMDB altered outside of yum.

网上找到的解决方法是删除“yum”的历史记录即可:

  1. [root@Node-A1 ~]# mv /var/lib/yum/history/*.sqlite /tmp/
  1. Downloading Packages:
  2. warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
  3. Retrieving key from http://172.16.132.241/epel/RPM-GPG-KEY-EPEL-6
  4. Importing GPG key 0x0608B895:
  5. Userid: "EPEL (6) <epel@fedoraproject.org>"
  6. From : http://172.16.132.241/epel/RPM-GPG-KEY-EPEL-6
  7. Is this ok [y/N]:

解决办法:

  1. rpm --import http://rsync.mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-6

RedHat 6.4 change yum

首先卸载自带 yum 套件:

  1. rpm -qa|grep yum|xargs rpm -e --nodeps
  2. rpm -e python-urlgrabber-3.9.1-8.el6.noarch

安装 CentOS 的套件:

  1. rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
  2. rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
  3. rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
  4. # 这两个要一起安装:
  5. rpm -ivh yum-3.2.29-81.el6.centos.noarch.rpm \
  6. yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
  7. #
  8. rpm -ivh yum-plugin-security-1.1.30-41.el6.noarch.rpm yum-utils-1.1.30-41.el6.noarch.rpm

RedHat 7.3 change yum

https://www.cnblogs.com/F1renze/p/8577195.html

查看所有 yum 包:

  1. [root@fact ~]# rpm -qa | grep yum
  2. yum-3.4.3-150.0.1.el7.noarch
  3. yum-utils-1.1.31-40.el7.noarch
  4. yum-metadata-parser-1.1.4-10.el7.x86_64
  5. PackageKit-yum-1.0.7-6.0.1.el7.x86_64
  6. yum-rhn-plugin-2.0.1-6.0.1.el7.noarch
  7. yum-langpacks-0.4.2-7.el7.noarch
  8. yum-plugin-ulninfo-0.2-13.el7.noarch # 可能没有这个东西

全部卸载:

  1. rpm -e yum-3.4.3-150.0.1.el7.noarch --nodeps
  2. rpm -e yum-metadata-parser-1.1.4-10.el7.x86_64 --nodeps
  3. rpm -e yum-rhn-plugin-2.0.1-6.0.1.el7.noarch --nodeps
  4. rpm -e yum-langpacks-0.4.2-7.el7.noarch --nodeps
  5. rpm -e yum-utils-1.1.31-40.el7.noarch --nodeps
  6. rpm -e PackageKit-yum-1.0.7-6.0.1.el7.x86_64 --nodeps
  7. rpm -e yum-plugin-ulninfo-0.2-13.el7.noarch --nodeps

重新下载上面的这些包:

  1. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
  2. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
  3. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-rhn-plugin-2.0.1-10.el7.noarch.rpm
  4. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-langpacks-0.4.2-7.el7.noarch.rpm
  5. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
  6. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/PackageKit-yum-1.1.10-2.el7.centos.x86_64.rpm
  7. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
  8. # 安装时会有依赖问题。因而还要下面下面这两个包:
  9. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/rpm-4.11.3-45.el7.x86_64.rpm
  10. wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm

安装:

  1. rpm -Uvh rpm-4.11.3-32.el7.x86_64.rpm --nodeps
  2. rpm -Uvh python-urlgrabber-3.10-8.el7.noarch.rpm --nodeps

最后进行安装:

  1. [root@factstdydb yum]# rpm -ivh yum-*.rpm

若是有依赖关系,那就分着安装:

  1. rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
  2. rpm -ivh python-urlgrabber-3.10-10.el7.noarch.rpm
  3. rpm -ivh yum-3.4.3-168.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
  4. rpm -ivh yum-utils-1.1.31-54.el7_8.noarch.rpm
  5. rpm -ivh yum-rhn-plugin-2.0.1-10.el7.noarch.rpm
  6. rpm -ivh yum-langpacks-0.4.2-7.el7.noarch.rpm
  7. # 装这些就没问题了

当然不要忘记替换 repo 文件。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注