部署YUM软件仓库
借助于YUM软件仓库,可以完成安装,卸载,自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个,手工的去安装每个rpm包,使管理员在维护Linux服务器时更加轻松自如。特别是在拥有大量Linux主机的本地网路中,构建一台"源"服务器时可以大大缓解软件安装,升级等对internet的依赖。
YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(DUniversity)的 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@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]#
cp -rf /media/cdrom/* /var/ftp/centos7
对于用户搜集的非
CentOS 7
光盘自带的更多其他软件包(必须包括存在依赖关系的所
有安装文件),除了准备相应的目录之外,还需要手动创建
repodata
数据文件,这就要用到
createrepo
工具(需要从
CentOS 7
光盘中安装)。例如,若已将作为源发布的其他
rpm
安
装包文件存放到
/var/ftp/other
目录下,则可执行以下操作为其创建
repodata
数据。
安装并启用 vsftpd 服务
[root@localhost ~]#
rpm -ivh /media/cdrom/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
[root@localhost ~]#
systemctl start vsftpd
[root@localhost ~]#
systemctl enable vsftpd
Created
symlink
from
/etc/systemd/system/multi-user.target.wants/vsftpd.service
to
/usr/lib/systemd/system/vsftpd.service.
访 问
ftp://192.168.4.254/centos7/
, 确 保 可 以 查 看 到 已 复 制 到 软 件 仓 库 目 录
/var/ftp/centos7
下的光盘数据;访问
ftp://192.168.4.254/other/
,可以查看非
CentOS 7
光
盘自带的其他软件包。
[root@localhost ~]#
ftp 192.168.4.254
……
//
省略登录信息
ftp>
cd centos7
250 Directory successfully changed.
ftp>
ls
……
//
省略部分信息
226 Directory send OK
配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的
yum
工具来下载、安装软件包。
yum
工具使用的软件仓库信息存放在
/etc/yum.repos.d
目录下扩
展名为
“.repo”
的文件中。以上一小节的网络安装源为例,典型的仓库配置如下所示。
[root@localhost ~]#
vi /etc/yum.repos.d/centos7.repo
[base]
//
仓库类别
name=CentOS 7.3
//
仓库名称
(
说明
)
baseurl=ftp://192.168.4.254/centos7
//URL
访问路径
enabled=1
//
启用此软件仓库
gpgcheck=1
//
验证软件包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
//GPG
公钥文件的位置
[other]
name=Other RPM Pa