首页 > 代码库 > yum仓库的搭建

yum仓库的搭建

                YUM仓库服务

借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工地去安装每一个rpm包,使管理员在维护大量linux服务器时更加轻松自如。特别是在拥有大量linux主机的本地网络中,构建一个源服务器可以大大缓解软件安装、升级等对于Internet的依赖。

实验案例:软件仓库部署及应用

实验环境:

随着公司内部的linux服务器不断增多,软件更新、系统升级等需求也逐渐凸显出来,为了提高软件包管理效率、减少重复下载,公司要求部署一台软件仓库服务器,面向内网提供安装源。

需求描述:

  1. 1.    服务器使用RHEL6操作系统,IP地址为192.168.1.1

  2. 2.    基于FTP方式为其他服务器提供软件安装源,使用yum命令安装软件。

  3. 3.    软件仓库中的所有软件包来自于RHEL6DVD光盘以及第三方组织的RPM包的集合。

实验步骤:

一、部署yum服务端;

Rpm软件包来源:

1)、Red Hat公司发布的RPM集合;

2)、第三方组织的RPM包集合

3)、用户自定义的RPM包集合

 

  1. 1.    使用虚拟机开启一台RHEL6系统作为YUM服务器,配置主机IP地址为192.168.1.1

[root@local~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0

  1. 2.    准备软件仓库目录

创建目录/var/ftp/rhel6

[root@local ~]#mkdir –p /var/ftp/rhel6

挂载RHEL6系统光盘到目录/media下,

[root@local ~]#mount /dev/cdrom /media

并将RHEL6光盘中的内容复制到该目录下。

[root@local ~]# cp –r./* /var/ftp/rhel6/

注:在rhel_6.0-i386-DVD的目录结构:

四大数据库:

 HighAvailability高可用相关软件包,如rhcs等相关套件。

 LoadBalancer  负载均衡相关软件包,如lvspirihan

 ResilientStorage:存储数据库头信息。

 Server       常规软件包,如mysqlhttpd,开发工具,系统管理工具等。

其他:

  Packages       真正存放所有软件包的目录。

  Images rhel:安装进程所需要的引导和驱动镜像文件。

  Islolinux:镜像文件引导时所需要的文件。

3.安装并启用vsftpd服务

安装vsftpd服务,

[root@local ~]# rpm –ivh/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 –I INPUT –p tcp –dport 21 –j 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包时要依赖以下两个包:deltarpmpython-deltarpm,不能忽略这两个包

 3)、安装FTP服务器

[root@local ~]# rpm –ivh /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源失效的罪魁祸首。

解决方法:

 删除软件仓库中的多余文件

wKioL1P-t93i9-pMAACv8CBJS9E500.jpg

[root@local ~]# rm –rf /etc/yum.repos.d/packagekit-media.repo

2.如果安装软件包是出现“public key for ……rpmis not install”。

解决方法:导入完整性验证的公钥

#mount /dev/sr0 /media

#rpm –import /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 –qi package 内容

clean  将已下载到本机的packagesheaders移除。

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清除headerrpm

yum grouplist列出所有组

yum groupinstall 软件组名:安装某个软件组名

示例:安装Postfix邮件服务器

#yum groupstall postfix

 

 

 


本文出自 “程亚娟” 博客,请务必保留此出处http://812893920.blog.51cto.com/8474261/1546108

yum仓库的搭建