YUM仓库服务
借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工地去安装每一个rpm包,使管理员在维护大量linux服务器时更加轻松自如。特别是在拥有大量linux主机的本地网络中,构建一个源服务器可以大大缓解软件安装、升级等对于Internet的依赖。
实验案例:软件仓库部署及应用
实验环境:
随着公司内部的linux服务器不断增多,软件更新、系统升级等需求也逐渐凸显出来,为了提高软件包管理效率、减少重复下载,公司要求部署一台软件仓库服务器,面向内网提供安装源。
需求描述:
1. 服务器使用RHEL6操作系统,IP地址为192.168.1.1。
2. 基于FTP方式为其他服务器提供软件安装源,使用yum命令安装软件。
3. 软件仓库中的所有软件包来自于RHEL6的DVD光盘以及第三方组织的RPM包的集合。
实验步骤:
一、部署yum服务端;
Rpm软件包来源:
(1)、Red Hat公司发布的RPM集合;
(2)、第三方组织的RPM包集合
(3)、用户自定义的RPM包集合
1. 使用虚拟机开启一台RHEL6系统作为YUM服务器,配置主机IP地址为192.168.1.1;
[root@local~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0
2. 准备软件仓库目录
创建目录/var/ftp/rhel6,
[root@local ~]#mkdir �Cp /var/ftp/rhel6
挂载RHEL6系统光盘到目录/media下,
[root@local ~]#mount /dev/cdrom /media
并将RHEL6光盘中的内容复制到该目录下。
[root@local ~]# cp �Cr./* /var/ftp/rhel6/
注:在rhel_6.0-i386-DVD的目录结构:
四大数据库:
HighAvailability:高可用相关软件包,如rhcs等相关套件。
LoadBalancer: 负载均衡相关软件包,如lvs,pirihan
ResilientStorage:存储数据库头信息。
Server: 常规软件包,如mysql,httpd,开发工具,系统管理工具等。
其他:
Packages: 真正存放所有软件包的目录。
Images rhel:安装进程所需要的引导和驱动镜像文件。
Islolinux:镜像文件引导时所需要的文件。
3.安装并启用vsftpd服务
安装vsftpd服务,
[root@local ~]# rpm �Civh/var/ftprhel6/Packages/vsftpd -2.2.2-6.el6_0.1.i686.rpm
赋予vsftpd开机自动启动权限,
[root@local ~]# chkconfig vsftpd on
启动vsftpd服务
[root@local ~]# service vsftpd start
注意:一般在公司中都会安装防火墙,在平时做实验的时候进行测试可以关闭防火墙;
[root@local ~]#service iptables stop
但是在公司中关闭防火墙对于公司来说是非常危险的;所以建议大家在防火墙上开启例外端口来保证数据的正常传输。
[root@local ~]#iptables �CI INPUT �Cp tcp �Cdport 21 �Cj ACCEPT
添加支持FTP的模块:
[root@local ~]#modprobe ip_conntrack_ftp
保存对iptables防火墙所进行的修改,
[root@local ~]#service iptables save
启动iptables防火墙;
[root@local ~]#service iptables start
二、配置yum客户端
(一)客户端通过FTP的方式访问
1. (1)、在/etc/yum.repo.d目录下创建一个以.repo结尾的文件:
[root@local ~]# vim/etc/yum.repos.d/yum.repo
[Server] //仓库名称
name=Server //仓库描述信息
baseurl=ftp://192.168.1. 1/rhel6/Server //URL访问路径
enabled=1 //启用此软件仓库(1表示“是”;2表示“否”)
gpgcheck=0 //是否验证软件包的签名(1表示“是”;2表示“否”)
[LoadBalancer]
name=LoadBalancer
baseurl= ftp://192.168.1.1/rhel6/LocaBalancer
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl= ftp://192.168.1.1/rhel6/HighAvailability
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl= ftp://192.168.1.1/ /rhel6/ResilientStorage
enabled=1
gpgcheck=0
验证:在客户端上安装rpm包,例如:bind
如果可以下载的话,那么你的yum服务器就表示搭建好了!!!
注:
注:通过HTTP的方式,与ftp方法类似
(二)、配置YUM服务器作为本机的客户端。
在RHEL6系统上搭建的YUM服务器既可以作为服务端为其他主机提供RPM包安装服务,又可以作为客户端,为本机提供RPM包安装服务等。
以上述的RHEL6系统为例:
(1)、在/etc/yum.repo.d目录下创建一个以.repo结尾的文件:
[root@local ~]# vim/etc/yum.repos.d/yum.repo
[Server] //仓库名称
name=Server //仓库描述信息
baseurl=file:///var/ftp/rhel6/Server //URL访问路径
enabled=1 //启用此软件仓库(1表示“是”;2表示“否”)
gpgcheck=0 //是否验证软件包的签名(1表示“是”;2表示“否”)
[LoadBalancer]
name=LoadBalancer
baseurl=file:///var/ftp/LoadBalancer
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=file:///var/ftp/rhel6/HighAvailability
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=file:///var/ftp/rhel6/ResilientStorage
enabled=1
gpgcheck=0
三、对于用户搜集的非RHEL6光盘的更多其他软件包(必须包括存在依赖关系的所有安装文件,除了应准备相应的目录以外,还需要手动创造repodata数据文件,这就需要用到createrepo工具(RHEL6光盘中存在)
Createrepoa主要用于收集目录中的rpm包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件)。
以Openvas为例:
(1) 挂载光盘
[root@local ~]# mount /dev/cdrom/media/
(2) 下载createrepo工具
[root@local~]#rpm -ivh /media/Packages/createrepo-0.9.8-4.el6.noarch.rpm
注意:安装createrepo包时要依赖以下两个包:deltarpm和python-deltarpm,不能忽略这两个包
(3)、安装FTP服务器
[root@local ~]# rpm �Civh /media/Packaged/vsftpd-2….(按tab键自动补齐)
(4)、在/var/ftp/创建一个为other的文件。
[root@local ~]# mkdir /var/ftp/other
(5)、将第三方rpm包全部复制到/var/ftp/other文件里
(6)、创建软件仓库信息文件:
[root@local ~]# createrepo --database/var/ftp/other
(7)、在客户端上创建扩展名为.repo的文件,内容如下:
以本地作为yum客户端为例:
[root@local ~]# vim /etc/yum.repos.d/yum.repo
[other]
name=other
baseurl=file:///var/ftp/other
enabled=1
gpgcheck=0
(8)、安装other中的任意软件进行测试。
四、以上可能出现的问题解决方法:
1.如果首次安装软件包之后,再次安装别的软件包的时候,很可能会发现报错了,错误信息如下:
Error:Cannot retrieve repository metadata (repomd.xml) for repository:
InstallMedia, Please verify its path and try again.
原因:
rhel6在首次读取该软件仓库之后,将一同被你拷贝到软件仓库目录的yum.repo复制一份到/etc/yum.repos.d/,而该文件也就是导致本地yum源失效的罪魁祸首。
解决方法:
删除软件仓库中的多余文件
[root@local ~]# rm �Crf /etc/yum.repos.d/packagekit-media.repo
2.如果安装软件包是出现“public key for ……rpmis not install”。
解决方法:导入完整性验证的公钥
#mount /dev/sr0 /media
#rpm �Cimport /media/RPM-GRG-KEY-redhat-release
3.若yum服务器开启了selinux功能,客户端通过yum安装会失败。
解决方法:
(1)、关闭selinux 功能setenforce 0
(2)、setsebool allow_ftpd_full_access on
五、常用yum命令
YUM命令格式:
yum <options> <command> <package…>
相关参数说明:
常用的options:
-y:如果在工作过程中如果需要使用者响应,这个参数可以直接回答yes。
Command:
list: 列出在yum server 上面有的rpm套件,
yum list installed 表示只列出系统中已安装的软件包
yum list available 表示只列出软件仓库尚未安装的软件包
yum list update 表示可以列出可以升级版本的软件包
install:安装某个套件
update:升级某个套件,如果update后面没有接套件名称,即更新目前主机所有已安装的套件
info: 列出某个套件的详细信息,相当于rpm �Cqi package 内容
clean: 将已下载到本机的packages或headers移除。
remove: 移除已经安装在系统中的某个套件
yum update: 全部更新、
yum update package: 更新指定程序包package
yum check-update: 检查可更新的程序
yum info <package>:显示安装包信息
yum list:显示所有已经安装和可以安装的程序包
yum list <package>:显示指定程序包安装情况
yum search <keyword>:查找软件包
yum search all +关键词:可以扩大搜索范围
yum clean headers:清除header
yum clean packages:清除下载的rpm包
yum clean all:清除header和rpm包
yum grouplist:列出所有组
yum groupinstall 软件组名:安装某个软件组名
示例:安装Postfix邮件服务器
#yum groupstall postfix