随着某公司内部的Linux服务器不断增多,软件更新,系统升级等需求也逐渐凸显。为了提高软 件包管理效率,减少重复下载,公司要求部署一台软件仓库服务器,面向内网提供安装源。
需求描述
> 服务器使用CentOS7操作系统IP地址为192.168.4.254.
> 基于FTP方式为其他服务器提供软件安装源,使用yum命令安装软件。
> 软件仓库中的所有软件包均来自CentOS7的DVD光盘(或镜像文件)。
推荐步骤
①部署YUM软件仓库。
(1)从CentOS7光盘中安装vsftpd软件包,配置并启用vsftpd服务。
(2)创建目录/var/ftp/centos7.并将CentOS 7光盘中的内容复制到该目录下。
(3)在客户机访问ftp://192.168.4.254/centos7,确认能够下载软件仓库中的文件。
(4)在客户端(可以与服务端使用同一台主机)指定软件仓库位置。
② 使用 yum工具管理软件包。
(1)查看当前系统中已安装了哪些软件包,查看YUM软件仓库中有哪些软件包可用。
(2)搜索与DNS相关的软件包,并查看其中的描述信息。
(3)安装软件包net-snmp.卸载软件包autofs。
(4)执行"yum grouplist"命令,查看YUM软件仓库中的软件分组。
11.1.1准备网络安装源(服务器端)
YUM软件仓库通常借助于HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供 软件源服务,为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据 (repodata),其中收集了目录下所有rpm包的头部信息。
1.准备软件仓库目录
在CentOS 7系统的安装光盘中,已针对软件目录Packages建立好repodata数据,因此只要简单 地将整个光盘中的内容通过HTTP或FTP进行发布,就可以作为软件仓库了。例如,可以创建 /var/ftp/centos7目录,并确保有足够的可用空间(本例中建议大于5GB),然后将CentOS 7光盘中 的所有数据复制到该目录下。
[root@node01 ~]# mount /dev/cdrom /mnt/
[root@node01 ~]# mkdir -p /var/ftp/centos7
[root@node01 ~]# cp -rf /mnt/* /var/ftp/centos7
对于用户搜集的非CentOS7光盘自带的更多其他软件包(必须包括存在依赖关系的所有安装文 件),除了准备相应的目录之外,还需要手动创建repodata数据文件,这就要用到createrepo工具(需要从CentOS 7光盘中安装),例如,若已将作为源发布的其他rpm安装包文件存放到/var/ftp/other 目录下,则可执行以下操作为其创建repodata数据。
[root@node01 ~]# mkdir /var/ftp/other
[root@node01 ~]# cd /var/ftp/other/
[root@node01 other]# createrepo -g /mnt/repodata/repomd.xml ./
2.安装并启用vsftpd服务
[root@node01 ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm
[root@node01 ~]# systemctl start vsftpd
[root@node01 ~]# systemctl enable vsftpd
访问ftp://192.168.4.254/centos7/,确保可以查看到已复制到软件仓库目录/var/ftp/centos7下的光盘数据:访问ftp://192.168.4.254/other/,可以查看非CentOS7光盘自带的其他软件包。
11.1.2配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的yum工具来下 载、安装软件包。yum工具使用的软件仓库信息存放在/etc/yum.repos.d目录下扩展名为“.repo” 的文件中,以上一小节的网络安装源为例,典型的仓库配置如下所示。
[root@node02 ~]# cd /etc/yum.repos.d/
[root@node02 yum.repos.d]# mv * /opt/
[root@node02 ~]# vim /etc/yum.repos.d/centos7.repo
[base] //仓库类别,可自定义
name=CentOS 7.3 //仓库名称(说明),可自定义
baseurl=ftp://192.168.184.101/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.184.101/other
enableed=1
gpgcheck=0 //不验证软件包的签名
上述操作中,文件centos7.repo需要手动创建./etc/yum.repos.d目录下若有其他未用的“*.repo 文件建议将其删除。enabled=1"为默认项,可以省略:"gpgcheck"和“gpgkey”两行配置用来检查 软件包的完整性,若无此要求则可以省略。
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将CentOS7光 盘挂载到/mnt目录下以后,可以参考以下操作来进行配置。当然,这种方式仅限于在本机使用。
以下是服务端配置yum源,与实验无关
[root@node01 ~]# vim /etc/yum.repos.d/local.repo
[local]
name=CnetOS 7.3
baseurl=file:///mnt/
enabled=1
gpgcheck=0
11.2.1查询软件包 yum
工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的软件包. 分别可结合子命令list,info,search来实现。
1.yum list——查询软件包列表
直接执行“yum list”命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件 包列表,其中子命令list表示列表查看。
[root@node02 ~]# yum list
已安装的软件包
可安装的软件包(来自服务端的yum源)
若执行‘yum list installed’命令,则表示只列出系统中已安装的软件包:若执行‘yum list available" 命令,则表示只列出软件仓库中可用(尚未安装)的软件包:若执行“yum list updates命令,则表示只列出可以升级版本的软件包。
2.yum info——查询软件包的描述信息
当需要查看某个软件包的描述信息时,可以执行‘yum info软件包名”,其中子命令info表示获取信息。例如,执行以下操作可以查看软件包httpd的信息。
[root@node02 ~]# yum info httpd
3.yum search——查询指定的软件包
当需要根据某个关键词来查找相关的软件包时,可以执行“yum search关键词”,默认仅根据软 件包名称和描述信息进行搜索:若执行‘yum search all关键词”,可以扩大搜索范围。例如,执行 以下操作将搜索软件仓库并列出与“httpd”相关的软件包。
[root@node02 ~]# yum search all httpd
注:通过执行查询操作“yum grouplist”“yum groupinfo分组名称”可 以获得YUM仓库中的软件分组信息。例如,执行“yum groupinfo gnome-desktop”命令后将列出软件分组gnome-desktop所包括的软件包 等信息。 cne
11.2.2安装、升级、卸载软件包
使用yum工具安装、升级软件包,分别通过子命令install、update来完成,操作对象为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按Y 键确认安装或升级操作,若希望自动确认,可以在yum命令后添加“-y”选项。例如,执行以下操 作将从软件仓库下载并安装net-snmp软件包,并自动解决其依赖关系。
[root@node02 ~]# yum clean all
[root@node02 ~]# yum -y install net-snmp
使用yum工具卸载软件包时,通过子命令remove来完成,卸载操作通过软件仓库也可以完成。 例如,执行以下操作将卸载autofs软件包,并自动解决其依赖关系.
[root@node02 ~]# yum -y remove autofs
(4)执行yum grouplist命令,查看YUM软件仓库中的软件分组。
[root@node02 ~]# yum grouplist