通过源代码编译的方式安装程序在灵活性、可定制性方面具有无可比拟的优势,但也正因为这种特性给管理员带来了额外的维护开销,当应用在大规模的服务器群时存在一定的局限性。另外,在大规模的Linux应用环境中,如web集群,分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的USB光驱、移动硬盘等安装方法显然已经难以满足需求。
部署YUE软件仓库
借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工地去安装每个rpm包,是管理员在维护大量linux服务器时更加轻松自如。特别是在拥有大量linux主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对internet的依赖。
YUM的前身是YUP(Yellow dog Updater,Yellow dog Linux的软件更新器),最初由TSS公司(TerraSorf Solutions , INC)使用Python语言开发而出,后来由杜克大学的Linux开发队伍进行改进,命名为YUM(Yellow dog Updater , Modified)。
要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装包文件及依赖软件的软件仓库,提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件了。
环境如下
准备网络安装源(服务器端)
YUM软件仓库通常借助于HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据,其中收集了目录下所有rpm包的头部信息。
准备软件仓库目录
在CentOS7系统的安装光盘中,已针对软件目录Packages建立好repodata数据,因此只要简单地将整个光盘中的内容通过HTTP或FTP进行发布,就可以作为软件仓库了。例如,可以创建/var/ftp/centos7目录,并确保有足够的可用空间(建议大于5G),然后将CentOS7光盘的所有数据复制到该目录下。
1. [root@localhost ~]# mkdir -p /var/ftp/centos7 2. [root@localhost ~]# mount /dev/cdrom /media 3. mount: /dev/sr0 写保护,将以只读方式挂载 4. [root@localhost ~]# cp -rf /media/* /var/ftp/centos7/
对于用户搜集的非centos7光盘自带的更多其他软件包(必须包括存在依赖关系的所有安装文件),除了准备相应的目录之外,还需要手动创建repodata数据文件,这就要用到createrepo工具(需要从CentOS7光盘中安装)。例如,若已将作为源发布的其他rpm安装包文件存放到/var/ftp/otenr目录下,则可执行以下操作为其创建repodata数据。
1. [root@localhost ~]# mkdir /var/ftp/other 2. [root@localhost ~]# cd /var/ftp/other/ 3. [root@localhost other]# createrepo -g /media/repodata/repomd.xml ./ 4. Saving Primary metadata 5. Saving file lists metadata 6. Saving other metadata 7. Generating sqlite DBs 8. Sqlite DBs complete
安装并启用vsftpd服务
1. [root@localhost ~]# rpm -ivh /media/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm 2. 警告:/media/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 3. 准备中... ################################# [100%] 4. 正在升级/安装... 5. 1:vsftpd-3.0.2-21.el7 ################################# [100%] 6. [root@localhost ~]# systemctl start vsftpd 7. [root@localhost ~]# systemctl enable vsftpd
访问ftp://192.168.1.10/centos7/,确保可以查看到已复制到软件仓库目录/var/ftp/centos7下的光盘数据;访问ftp://192.168.1.10/other/,可以查看非CentOS7光盘自带的其他软件包。
配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的yum工具来下载、安装软件包。yum工具使用的软件仓库信息存放在/etc/yum.repos.d目录下扩展名为".repo"的文件中。以上一小节的网络安装源为例,典型的仓库配置如下所示。
1. [root@localhost ~]# rm -rf /etc/yum.repos.d/* //删除原仓库 2. [root@localhost ~]# vim /etc/yum.repos.d/centos7.repo //创建新仓库 3. [base] //仓库类别 4. name=AAA //仓库名称(说明) 5. baseurl=ftp://192.168.1.10/centos7 //URL访问路径 6. enabled=1 //启用此软件仓库(默认开启) 7. gpgcheck=0 //验证软件包的签名
上述操作中,文件centos7.repo需要手动创建,/etc/yum.repos.d目录下若有其他未用的“*.repo”文件建议将其删除。“enabled=1”为默认项,可以省略;“gpgcheck”配置用来检查软件包的完整性,若无此要求则可以省略。
验证:查看是否检查依赖关系安装samba
1. [root@localhost ~]# yum -y install samba* 2. ...... //省略部分 3. Dependency Installed: 4. pyldb.x86_64 0:1.1.26-1.el7 pytalloc.x86_64 0:2.1.6-1.el7 5. python-tdb.x86_64 0:1.3.8-1.el7_2 python-tevent.x86_64 0:0.9.28-1.el7 6. 7. Complete!
配置本地yum仓库(服务器端)
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将CentOS7光盘挂载到/media/目录下以后,可以参考以下操作进行。注:这种方式仅限于在本机使用。
1. [root@localhost ~]# rm -rf /etc/yum.repos.d/* 2. [root@localhost ~]# vim /etc/yum.repos.d/local.repo 3. [local] 4. name=cnetos 5. baseurl=file:///media/ 6. enabled=1 7. gpgcheck=0
验证
1. [root@localhost ~]# yum -y install samba* 2. 作为依赖被安装: 3. pyldb.x86_64 0:1.1.26-1.el7 pytalloc.x86_64 0:2.1.6-1.el7 4. python-tdb.x86_64 0:1.3.8-1.el7_2 python-tevent.x86_64 0:0.9.28-1.el7 5. 6. 完毕!
使用yum工具管理软件包
查询软件包列表
1. yum ilist 软件名 2. [root@localhost ~]# yum list 3. 已加载插件:fastestmirror, langpacks 4. Loading mirror speeds from cached hostfile 5. 已安装的软件包 //已安装的软件包列表 6. ......//省略部分 7. 可安装的软件包 //可安装的软件包列表 8. ......//省略部分
1. yum list installed——列出已安装的软件包 2. yum list available——列出yum仓库中未安装的软件包 3. yum list updates——列出可以升级版本的软件包
查询软件包的描述信息
1. yum info 软件名 2. [root@localhost ~]# yum info httpd 3. 已加载插件:fastestmirror, langpacks 4. Loading mirror speeds from cached hostfile 5. 可安装的软件包 6. 名称 :httpd 7. 架构 :x86_64 8. 版本 :2.4.6 9. 发布 :45.el7.centos 10. 大小 :2.7 M 11. 源 :local 12. 简介 : Apache HTTP Server 13. 网址 :http://httpd.apache.org/ 14. 协议 : ASL 2.0 15. 描述 : The Apache HTTP Server is a powerful, efficient, and extensible 16. : web server.
查询指定的软件包
all选项表示可以扩大范围搜索。
1. yum search 关键词 2. [root@localhost ~]# yum search all httpd 3. 已加载插件:fastestmirror, langpacks 4. Loading mirror speeds from cached hostfile 5. ================================== 匹配:httpd =================================== 6. httpd-devel.x86_64 : Development interfaces for the Apache HTTP server 7. httpd-manual.noarch : Documentation for the Apache HTTP server 8. httpd-tools.x86_64 : Tools for use with the Apache HTTP Server 9. libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in 10. : applications 11. httpd.x86_64 : Apache HTTP Server 12. mod_dav_svn.x86_64 : Apache httpd module for Subversion server 13. mod_fcgid.x86_64 : FastCGI interface module for Apache 2 14. mod_ssl.x86_64 : SSL/TLS module for the Apache HTTP Server
安装、升级、卸载软件包
使用yum工具安装、升级软件包,分别通过子命令install、update来完成,操作对象为指定的软件包名(可以是多个)。yum命令后添加“-y”选项可以自动确认确定安装或升级操作。例如,执行以下操作将从软件仓库下载并安装net-snmp软件包,并自动解决依赖关系。
1. [root@localhost ~]# yum -y install net-snmp 2. 已加载插件:fastestmirror, langpacks 3. Loading mirror speeds from cached hostfile 4. 正在解决依赖关系 5. --> 正在检查事务 6. ......//省略部分 7. 作为依赖被安装: 8. net-snmp-agent-libs.x86_64 1:5.7.2-24.el7_2.1 9. 10. 完毕!
使用yum工具卸载软件包时,通过子命令remove来完成,卸载操作通过软件仓库也可以完成。例如,执行以下操作将卸载autofs软件包,并自动解决依赖关系。
1. [root@localhost ~]# yum -y remove autofs 2. 已加载插件:fastestmirror, langpacks 3. 正在解决依赖关系 4. --> 正在检查事务 5. pa-client.x86_64 0:4.4.0-12.el7.centos 6. 7. 完毕!