@cdmonkey
2022-05-09T14:17:10.000000Z
字数 7923
阅读 1101
命令总结
内容请见学习笔记。
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 |
经验技巧:
常用指令:
yum install #全部安装。
yum install package1 #安装指定的安装包package1。
yum groupinsall group1 #安装程序组group1。
----------------------
yum update #全部更新。
yum update package1 #更新指定程序包package1。
yum check-update #检查可更新的程序。
yum upgrade package1 #升级指定程序包package1。
yum groupupdate group1 #升级程序组group1。
----------------------
yum info package1 #显示安装包信息package1。
yum list #显示所有已经安装和可以安装的程序包。
yum list package1 #显示指定程序包安装情况package1。
yum groupinfo group1 #显示程序组group1信息。
yum search string #根据关键字string查找安装包。
----------------------
yum remove package1 #删除程序包package1。
yum groupremove group1 #删除程序组group1。
yum deplist package1 #查看程序package1依赖情况。
----------------------
yum clean packages #清除缓存目录下的软件包。
它的主要功能是方便的添加、删除以及更新软件包,自动解决软件包的倚赖性问题,便于管理大量系统软件的更新问题。其关键之处是要有可靠的“资源库(repository)”,顾名思义,这是软件的仓库,它可以是外部的站点,也可以是本地软件库,并且可以同时配置多个软件源仓库。
关于“yum”的设定分为两部分:main、repository。这两部分分别位于不同的文件内:
部分 | 说明 |
---|---|
main |
这部分定义了全局配置选项,该部分在整个配置文件中应该只有一处,通常为:/etc/yum.conf |
repository |
这部分定义了每个源的具体配置,可以有一到多个。通常位于/etc/yum.repos.d/ 目录下的各文件中。 |
[root@WEB-A1 ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #指定缓存目录,Yum在此存储下载的软件包和数据库。
keepcache=0 #完成安装后是否保留软件包,0为不保留(默认值),1为保留。
debuglevel=2 #调试信息输出等级,范围为0~10,缺省为2。
logfile=/var/log/yum.log #日志文件的位置。用户可以到日志文件中去查询过去所做的更新。
exactarch=1 #这里有1和0两个选项,如果设置为1,则Yum只会安装和系统架构匹配的软件包。默认值为1。
obsoletes=1 #这是一个e的参数,简单的说就是相当于upgrade,允许更新陈旧的软件包。
gpgcheck=1 #同样有1和0两个选择,分别代表是否是否进行GPG校验,以确定软件包的来源是否有效和安全。如果这个选项如果设置在全局部分,则对每个源都有效。
plugins=1 #是否启用插件,默认1为允许,0表示不允许。我们一般会使用yum-fastestmirror这个插件。
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
Yum是使用仓库来保存并管理软件包,仓库的配置文件是存放在
/etc/yum.repos.d/
这个文件目录下。
通常一个repo
文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,该文件中的设置内容将被“yum”读取和应用。
[root@WEB-A1 ~]# ll /etc/yum.repos.d/
total 16
-rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
-rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
[root@rc-jenkins yum.repos.d]# cat CentOS-Base.repo
[base] # [serverid],用于区别各个不同的仓库,必须有一个唯一的名称。
name=CentOS-$releasever - Base - mirrors.aliyun.com
# 上面是对仓库的描述,支持使用变量:$releasever、$basearch
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
# 上面的地址部分是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。同样支持使用变量。
# 这里可使用多个地址,但是只能有一个baseurl。其路径指向的目录必须是这个repository header目录的上一级。
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
...
配置文件 说明
-----------------------------------------------------------------------------------------
CentOS-Base.repo 网络源的配置文件。
CentOS-Media.repo 本地源的配置文件。
第一步:挂载系统安装光盘
[root@WEB-A1 ~]# mkdir /mnt/cdrom
[root@WEB-A1 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
#光驱挂载成功。
第二步:修改本地源的配置文件
需要修改两处,一是将路径的第二行修改为当前的光驱挂载点,第二处是生效开关,如下所示:
[root@WEB-A1 ~]# vim /etc/yum.repos.d/CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/ #-->file:///mnt/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0 #-->enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
第三步:禁用默认的网络源
所谓的禁用,就是将网络源的配置文件改名(例如添加一个后缀),否则yum指令会先在网络源中寻找适合的包,而改名后会直接从本地源读取。
[root@WEB-A1 ~]# cd /etc/yum.repos.d/
[root@WEB-A1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
#如此,通过修改配置文件名达到了禁用网络源的效果。
通过进行上面的操作,若果再执行yum指令,系统将把挂载的光盘作为首选的软件源。
http://mirrors.sohu.com/help/centos.html
[root@WEB-A1 ~]# cd /etc/yum.repos.d/
[root@WEB-A1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@WEB-A1 yum.repos.d]# wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
[root@WEB-A1 yum.repos.d]# yum makecache
#可能会出现下面的报错信息:
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"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: addons. Please verify its path and try again
#解决办法就是将配置文件中的整个“[addons]”部分都注释掉。
http://mirrors.163.com/.help/centos.html
安装软件包时可以对软件包进行“gpg-GNU Private Guard”校验,从而确定软件包的来源是有效和安全的。该加密采用非对称加密的方法,而客户端系统上存储的是公钥。
安装完软件后会有如下的一行提示信息:
Warning: RPMDB altered outside of yum.
网上找到的解决方法是删除“yum”的历史记录即可:
[root@Node-A1 ~]# mv /var/lib/yum/history/*.sqlite /tmp/
Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from http://172.16.132.241/epel/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
Userid: "EPEL (6) <epel@fedoraproject.org>"
From : http://172.16.132.241/epel/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]:
解决办法:
rpm --import http://rsync.mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-6
首先卸载自带 yum 套件:
rpm -qa|grep yum|xargs rpm -e --nodeps
rpm -e python-urlgrabber-3.9.1-8.el6.noarch
安装 CentOS 的套件:
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
# 这两个要一起安装:
rpm -ivh yum-3.2.29-81.el6.centos.noarch.rpm \
yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
#
rpm -ivh yum-plugin-security-1.1.30-41.el6.noarch.rpm yum-utils-1.1.30-41.el6.noarch.rpm
查看所有 yum
包:
[root@fact ~]# rpm -qa | grep yum
yum-3.4.3-150.0.1.el7.noarch
yum-utils-1.1.31-40.el7.noarch
yum-metadata-parser-1.1.4-10.el7.x86_64
PackageKit-yum-1.0.7-6.0.1.el7.x86_64
yum-rhn-plugin-2.0.1-6.0.1.el7.noarch
yum-langpacks-0.4.2-7.el7.noarch
yum-plugin-ulninfo-0.2-13.el7.noarch # 可能没有这个东西
全部卸载:
rpm -e yum-3.4.3-150.0.1.el7.noarch --nodeps
rpm -e yum-metadata-parser-1.1.4-10.el7.x86_64 --nodeps
rpm -e yum-rhn-plugin-2.0.1-6.0.1.el7.noarch --nodeps
rpm -e yum-langpacks-0.4.2-7.el7.noarch --nodeps
rpm -e yum-utils-1.1.31-40.el7.noarch --nodeps
rpm -e PackageKit-yum-1.0.7-6.0.1.el7.x86_64 --nodeps
rpm -e yum-plugin-ulninfo-0.2-13.el7.noarch --nodeps
重新下载上面的这些包:
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-rhn-plugin-2.0.1-10.el7.noarch.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-langpacks-0.4.2-7.el7.noarch.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/PackageKit-yum-1.1.10-2.el7.centos.x86_64.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
# 安装时会有依赖问题。因而还要下面下面这两个包:
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/rpm-4.11.3-45.el7.x86_64.rpm
wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm
安装:
rpm -Uvh rpm-4.11.3-32.el7.x86_64.rpm --nodeps
rpm -Uvh python-urlgrabber-3.10-8.el7.noarch.rpm --nodeps
最后进行安装:
[root@factstdydb yum]# rpm -ivh yum-*.rpm
若是有依赖关系,那就分着安装:
rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
rpm -ivh python-urlgrabber-3.10-10.el7.noarch.rpm
rpm -ivh yum-3.4.3-168.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
rpm -ivh yum-utils-1.1.31-54.el7_8.noarch.rpm
rpm -ivh yum-rhn-plugin-2.0.1-10.el7.noarch.rpm
rpm -ivh yum-langpacks-0.4.2-7.el7.noarch.rpm
# 装这些就没问题了
当然不要忘记替换 repo
文件。