借助于YUM软件仓库.可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解 决rpm包之间的依赖关系,而无须管理员逐个.手工地去安装每个rpm包,使管理员在维护大量Linux 服务器时更加轻松自如。.特别是在拥有大量Linux主机的本地网络中,构建一台源服务器可以大大缓 解软件安装、升级等对Internet的依赖.
YUM的前身是YUP(Yellow dog Updater,Yellow dog Linux的软件更新器).最初由TSS公司(Terra Soft Solutions,INC.)使用Python语言开发而成.后来由杜克大学(Duck University)的Linux开发队 伍进行改进,命名为YUM(Yellow dog Updater, Modified).
要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装包文件及其依赖软件的 软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软 件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件了。
YUM软件仓库通常借助于HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供 软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据 (repodata),其中收集了目录下所有rpm包的头部信息。
在CentOS 7系统的安装光盘中,已针对软件目录Packages建立好repodata数据,因此只要简单 地将整个光盘中的内容通过HTTP或FTP进行发布,就可以作为软件仓库了
例如,可以创建 /var/ftp/centos7目录,并确保有足够的可用空间(本例中建议大于5GB),然后将CentOS 7光盘中 的所有数据复制到该目录下。
[root@lgcllc ~]# mount /dev/cdrom /mnt/ //光盘挂载到/mnt/目录
mount: /dev/sr0 写保护,将以只读方式挂载[root@lgcllc ~]# mkdir -p /var/ftp/centos7
[root@lgcllc ~]# cp -rf /mnt/* /var/ftp/centos7
对于用户搜集的非CentOS7光盘自带的更多其他软件包(必须包括存在依赖关系的所有安装文 件),除了准备相应的目录之外,还需要手动创建repodata数据文件,这就要用到createrepo 工具(需 要从 CentOS 7光盘中安装)
例如,若已将作为源发布的其他rpm安装包文件存放到/var/ftp/other 目录下,则可执行以下操作为其创建repodata数据。
[root@lgcllc ~]# mkdir /var/ftp/other
[root@lgcllc ~]# cd /var/ftp/other/
[root@lgcllc other]# createrepo -g /mnt/repodata/repomd.xml .///以现有的repodata目录为样板
[root@lgcllc ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm
root@lgcllc ~]# systemctl start vsftpd
[root@lgcllc ~]# systemctl enable vsftpd
访问ftp://192.168.55.123,确保可以查看到已复制到软件仓库目录/var/ftp/centos7下的光盘数据
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的yum工具来下 载、安装软件包,yum 工具使用的软件仓库信息存放在/etc/yum.repos.d目录下扩展名为“.repo” 的文件中,以上一小节的网络安装源为例,典型的仓库配置如下所示。
把/etc/yum.repos.d目录下的所有扩展名为".repo"的文件移动到/opt/
[root@lgcllc ~]# cd /etc/yum.repos.d/
[root@lgcllc yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@lgcllc yum.repos.d]# mv *.repo /opt/
[root@lgcllc yum.repos.d]# ls
[root@lgcllc yum.repos.d]#
[root@lgcllc yum.repos.d]# vim centos7.repo //新建扩展名".repo"的文件,编辑下列语句
[base] //仓库类别
name=CentOS 7.3 //仓库说明
baseurl=ftp://192.168.55.123/centos7 //URL访问路径
enabled=1 //启用此软件仓库(默认启用)
gpgcheck=1 //验证软件包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 //GPG公钥文件的位置
[other]
name=Other RPM Packages
baseurl=ftp://192.168.55.123/other
enabled=1
gpgcheck=0 //不验证软件包的签名
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将CentOS7光 盘挂载到/mnt/目录下以后,可以参考以下操作来进行配置,当然,这种方式仅限于在本 机使用。
把/etc/yum.repos.d目录下的所有扩展名为".repo"的文件移动到/opt/
[root@lgcllc ~]# cd /etc/yum.repos.d/
[root@lgcllc yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@lgcllc yum.repos.d]# mv *.repo /opt/
[root@lgcllc yum.repos.d]# ls
[root@lgcllc yum.repos.d]#
[root@lgcllc yum.repos.d]# vim local.repo //新建扩展名".repo"的文件,编辑下列语句
[local]
name=CentOS 7.3
baseurl=file:///mnt/
enabled=1
gpgcheck=0
1. yum list——查询软件包列表
直接执行“yum list”命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件 包列表,其中子命令 list表示列表查看。
若执行“yum list installed”命令,则表示只列出系统中已安装的软件包;
若执行“yumlist available" 命令,则表示只列出软件仓库中可用(尚未安装)的软件包;
若执行‘yum list updates命令,则表示只列出可以升级版本的软件包。
2. yum info——查询软件包的描述信息
当需要查看某个软件包的描述信息时,可以执行‘yum info软件包名”,其中子命令 info表示获 取信息。例如,执行以下操作可以查看软件包httpd的信息。
3.yum search——查询指定的软件包
当需要根据某个关键词来查找相关的软件包时,可以执行‘yum search关键词”.默认仅根据软 件包名称和描述信息进行搜索;若执行‘yum search all关键词”,可以扩大搜索范围。
例如,执行 以下操作将搜索软件仓库并列出与“httpd”相关的软件包。
使用yum工具安装、升级软件包.分别通过子命令install,update来完成,操作对象为指定的软 件包名(可以有多个).执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按Y 键确认安装或升级操作,若希望自动确认,可以在yum命令后添加“-y”选项。
例如,执行以下操 作将从软件仓库下载并安装net-snmp软件包,并自动解决其依赖关系,
[root@lgcllc ~]# yum -y install net-snmp
使用yum工具卸载软件包时,通过子命令remove来完成,卸载操作通过软件仓库也可以完成。
例如,执行以下操作将卸载autofs软件包,并自动解决其依赖关系。
[root@lgcllc ~]# yum -y remove autofs