首页 > 代码库 > Linux -- 配置YUM服务器

Linux -- 配置YUM服务器

  • 什么是 yum

yum  yellowdog updater modified 的缩写。yellowdog 是一个 Linux  distributionRH 将这种升级技术利用到自己的 distribution 形成了现在的 yum,感觉上 yum apt 的原理类似,但是 apt 是编译代码,执行效率远高于使用 python 写成的 yum

yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了 Linux 用户一直头痛的 dependencies 的问题。这一点上,yum  apt 相同。apt 原为 debian  deb 类型软件管理所使用,但是现在也能用到 RH 门下的rpm 了。

  一般这类软件通过一个或者多个配置文件描述对应的 repository 的网络地址,通过 http 或者 ftp 协议在需要的时候从 repository 获得必要的信息,下载相关的软件包。这样,本地用户通过建立不同的 repository 的描述说明,在有 Internet 连接时就能方便进行系统的升级维护工作。另外,如果需要使用代理,可以用 http_proxy ftp_proxy 这些 shell 里面标准环境变量的设定。

repository 是用 yum-arch 或者 createrepo 命令创建的,也可以用别人已有的 repository 作为镜像,这里探讨如何建立一个 repository

 

yum 的基本操作

yum 的基本操作包括软件的安装(本地,网络),升级(本地,网络),卸载,另外还有一定的查询功能。设定好了本地的 yum 之后,就可以很方便的进行安装。

 

1.列出所有可更新的软件清单
命令:yum check-update

2.安装所有更新软件
命令:yum update

3.仅安装指定的软件
命令:yum install <package_name>

4.仅更新指定的软件
命令:yum update <package_name>

5.列出所有可安裝的软件清单
命令:yum list

 

YUM安装删除软件
装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。 
安装的命令是,yum install xxxyum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。
 
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 


1.YUM安装软件包
命令:yum install <package_name>

2.YUM删除软件包
命令:yum remove <package_name>

 

YUM查询软件信息
 们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于 是我们可能得到gaimkopete等等,并从中选择。 
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。 


1.使用YUM查找软件包
命令:yum search <keyword>

2.列出所有可安装的软件包
命令:yum list

3.列出所有可更新的软件包
命令:yum list updates

4.列出所有已安装的软件包
命令:yum list installed

5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras

6.列出所指定的软件包
命令:yum list <package_name>

7.使用YUM获取软件包信息
命令:yum info <package_name>

8.列出所有软件包的信息
命令:yum info

9.列出所有可更新的软件包信息
命令:yum info updates

10.列出所有已安裝的软件包信息
命令:yum info installed

11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras

12.列出软件包提供哪些文件
命令:yum provides <package_name>

 

清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除headeryum clean packages清除下载的rpm包,yum clean all 股脑儿端 


1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages

2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers

3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders

4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

  • Linux yum 安装

Yum yellowdog updater modified的缩写。yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了 Linux 用户一直头痛的 dependencies 的问题。

一般这类软件通过一个或者多个配置文件描述对应的 repository 的网络地址,通过 http 或者 ftp 协议在需要的时候从 repository 获得必要的信息,下载相关的软件包。这样,本地用户通过建立不同的 repository 的描述说明,在有 Internet 连接时就能方便进行系统的升级维护工作。另外,如果需要使用代理,可以用 http_proxy 和 ftp_proxy 这些 shell 里面标准环境变量的设定。

现在的操作系统中都已经安装了YUM 工具,如果没有安装可以自己从网上下载安装。 


Yum包的下载:

可以用wget 直接从网上下载,该命令下载的文件会放在当前目录下。如:

[root@squid yum]# wget http://yum.baseurl.org/download/3.2/yum-3.2.26.tar.gz

[root@squid yum]# wget http://yum.baseurl.org/download/3.2/yum-3.2.26-0.src.rpm

 

Linux下的安装包有集中形式:

1.1 tar.gz 格式

tar.gz文件的安装,是属于自己编译源代码的方法。tar是把文件打成一个包,并不压缩;.gz是用gzip把打成包的.tar文件压缩,所以成了一个.tar.gz的文件。

这种格式的安装分四部:

1) 解包

tar -zxvf xxx.tar.gz,这样会生成一个以文件名命名的文件夹。

2) 执行configure的脚本

该脚本用于完成配置的任务。可以加很多参数,具体的可以运行. /configure --help得到帮助的,比如./configure --prefix=xxx是设定软件安装到哪里。设置好参数,运行./configure,会生成makefile文件。

3) 编译

Configure 生成了makefile文件运行make就可以完成编译。make是将读入所有由configure脚本程序建立的制作文件。这些制作文件会告诉make哪些文件需要被编译以及按照怎样的顺序对它们进行编译,因为可能会有上百个源程序文件。当make工作的时候,会在屏幕上显示出正在执行的每一个命令,以及与这个命令相关的全部参数。这些输出通常都是编译器的调用声明和所有传递给编译器的参数。如果编译器顺利地完成了工作,就不会出现什么错误信息。大多数编译器的错误信息十分清楚和明确,因此不用担心可能会漏掉一个错误。如果确实看到有一错误,也不用慌张。大多数错误信息并不反映出程序本身出现了一个问题,通常都是系统这里或者那里的问题。典型情况下,这些信息大多是因为文件访问权限不正确而产生的或者是因为文件没有找到。

4) 安装软件

执行make install,这个命令将启动安装脚本程序。因为make命令会在执行每一个命令的时候把它显示出来,所以将会看到许许多多的文字掠过眼前。如果没有看到什么错误信息,就说明这个软件包安装好了。

卸载:make uninstall

注意:如果下载的包里已经有了makefile 文件,就说明已经configure过了,直接安装就可以了。

 

1.2  *.src.rpm 

这中rpm 格式的包也是一种源码包,需要编译后才能安装。 具体有2种安装方法:

方法一:

1)执行rpm -i you-package.src.rpm
2cd /usr/src/redhat/SPECS
前两步和方法一相同
3rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件
这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等)
4)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。
执行rpm -i new-package.rpm即可安装完成。

方法二:
1执行rpm -i your-package.src.rpm
2cd /usr/src/redhat/SPECS
3rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件
4 cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录
5./configure 这一步和编译普通的源码软件一样,可以加上参数
6 make
7.make install

注:还有一种格式rpm格式的包: *.rpm , 这种包无需编译,直接安装即可:rpm -ivh *.rpm 

 


安装完后我们可以用yum update 来更新repository 第一更新的文件总大小在800M左右


  • 配置YUM 服务器

YUM是Yellow dog Updater, Modified的缩写,是由Duke University所发起的计划,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装、升级等等工作。在此在特别说明的是,YUM只是为了解决RPM的依赖关系的问题,而不是一种其它的软件安装模式。当然可以实现这样功能的除了YUM外,还有APT (Advanced Package Tool,是由debian所发展的一个软件管理工具)。

       YUM的工作原理,在每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装哪些基础软件。也就是说,在服务器上面先以分析工具将所有的RPM档案进行分析,然后将该分析纪录下来,只要在进行安装或升级时先查询该纪录的文件,就可以知道所有相关联的软件。

 

所以YUM的基本工作流程如下:

       服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。

       客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

 

       在这篇文章里,我们配置通过FTP的YUM服务器。 在RHEL的安装盘上有所有的YUM包。 我们只需要把这些YUM 软件放到硬盘上,并配置好FTP。 在客户端修改相关的YUM 参数就可以了。

 

 

服务器端配置 (FTP方式)

1.1  安装FTP 服务,并配置自启动

[root@centos Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

warning: vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                ########################################### [100%]

   1:vsftpd                 ########################################### [100%]

[root@centos Server]# chkconfig vsftpd on

[root@centos Server]# chkconfig vsftpd --list

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@centos Server]# service vsftpd restart

Shutting down vsftpd:                                      [FAILED]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@centos Server]#

 

linux FTP 的配置,在下篇文章里会做说明, 这篇只演示如何使用。

 

 

1.2 复制RPM 

       将RHEL 5光盘中的Server、VT、Cluster、ClusterStorage四个目录复制到/var/ftp/pub下。

 

[root@centos RHEL_5.4 i386 DVD]# du -k

253     ./Cluster/repodata

69571   ./Cluster

143     ./ClusterStorage/repodata

10300   ./ClusterStorage

10546   ./Server/repodata

2626369 ./Server

182     ./VT/repodata

47724   ./VT

8512    ./images/pxeboot

8914    ./images/xen

166766  ./images

8646    ./isolinux

2934671 .

[root@centos RHEL_5.4 i386 DVD]# cp -rf Cluster /var/ftp/pub/

[root@centos RHEL_5.4 i386 DVD]# cp -rf ClusterStorage /var/ftp/pub/

[root@centos RHEL_5.4 i386 DVD]# cp -rf VT /var/ftp/pub/           

[root@centos RHEL_5.4 i386 DVD]# cp -rf Server/ /var/ftp/pub/

 

 

[root@centos pub]# pwd

/var/ftp/pub

[root@centos pub]# ls

Cluster  ClusterStorage  Server  VT

[root@centos pub]# du -k

276     ./Cluster/repodata

69816   ./Cluster

10584   ./Server/repodata

2638388 ./Server

160     ./ClusterStorage/repodata

10468   ./ClusterStorage

200     ./VT/repodata

47924   ./VT

2766600 .

[root@centos pub]#

 

1.3. 安装createrepo包,并重建包依赖关系

       createrepo包是用来生成RPM 依赖关系及分组信息的。 搭建YUM服务器,必须要重建着2个信息。

 

1.3.1 检查包安装情况

[root@centos Server]# rpm -q yum

yum-3.2.22-20.el5.centos

[root@centos Server]# rpm -q createrepo

package createrepo is not installed

[root@centos Server]# rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm

warning: createrepo-0.4.11-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                ########################################### [100%]

   1:createrepo             ########################################### [100%]

[root@centos Server]# rpm -q createrepo

createrepo-0.4.11-3.el5

[root@centos Server]#

 

1.3.2 重建分组及依赖关系

 

       在RHEL 5中每个目录下的repodata目录下都有一个repomd.xml,该文件中就记录了rpm包的依赖关系,还有一个comps-rhel5-*.xml文件,这个文件主要记录分组情况,建立yum仓库时,需要先重建该文件。

 

[root@centos repodata]# pwd

/var/ftp/pub/Server/repodata

[root@centos repodata]# ls

comps-rhel5-server-core.xml  filelists.xml.gz  other.xml.gz  primary.xml.gz  repomd.xml  TRANS.TBL

 

重建Server

[root@centos pub]# createrepo -g /var/ftp/pub/Server/repodata/comps-rhel5-server-core.xml /var/ftp/pub/Server/

2292/2292 - xorg-x11-xinit-1.0.2-15.el5.i386.rpm    --这里有2千多个包                          

Saving Primary metadata

Saving file lists metadata

Saving other metadata

[root@centos pub]#

 

重建VT

[root@centos pub]# createrepo -g /var/ftp/pub/VT/repodata/comps-rhel5-vt.xml /var/ftp/pub/VT/

36/36 - Virtualization-or-IN-5.2-11.noarch.rpm                                  

Saving Primary metadata

Saving file lists metadata

Saving other metadata

 

重建Cluster:

[root@centos pub]# createrepo -g /var/ftp/pub/Cluster/repodata/comps-rhel5-cluster.xml /var/ftp/pub/Cluster/

32/32 - Cluster_Administration-zh-TW-5.2-1.noarch.rpm                          

Saving Primary metadata

Saving file lists metadata

Saving other metadata

 

重建ClusterStorage

[root@centos pub]# createrepo -g /var/ftp/pub/ClusterStorage/repodata/comps-rhel5-cluster-st.xml /var/ftp/pub/ClusterStorage/

39/39 - Global_File_System-or-IN-5.2-1.noarch.rpm                              

Saving Primary metadata

Saving file lists metadata

Saving other metadata

[root@centos pub]#

 

1.4 修改YUM 配置文件

       在每个客户端使用YUM时,必须需要修改配置文件。

       我们先看文件: /etc/yum.repos.d/*.repo。 这个文件名称可以随便定义,但是扩展名必须是repo.

      

[root@centos pub]# cat /etc/yum.repos.d/CentOS-Base.repo

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

...

 

这个是我CentOS上的部分内容。 其他的类似。 这个文件其实是在使用yum安装的客户端使用的。 我们在服务器创建这个配置文件的原因是方便使用。 假如在公司里的Linux客户端非常多,我们不必去修改每个客户端的这个YUN配置文件。 只需要从服务器上将这个文件下载到本机就可以了。

 

YUM服务器上创建文件:

[root@centos pub]# cat /etc/yum.repos.d/rhel54.86.repo   

[rhel-base]

name= TianleSoftware Redhat Enterprise 5.4

baseurl=ftp://192.168.6.2/pub/Server

gpgcheck=0

enabled=1

 

[rhel-vt]

name= TianleSoftware Redhat Enterprise 5.4

baseurl=ftp://192.168.6.2/pub/VT

gpgcheck=0

enabled=1

 

[rhel-cluster]

name= TianleSoftware Redhat Enterprise 5.4

baseurl=ftp://192.168.6.2/pub/Cluster

gpgcheck=0

enabled=1

 

[rhel-ClusterStorage]

name= TianleSoftware Redhat Enterprise 5.4

baseurl=ftp://192.168.6.2/pub/ClusterStorage

gpgcheck=0

enabled=1

 

       说明: 这里提供的只是一个FTP地址,所以可以使用其他的方式来实现FTP。 不一定非要像第一步里说明的,使用LINUX的FTP。

 

相关参数说明:

       [ ]内的是仓库的名字,不重复即可。

       name仓库的描述.

       baseurl: YUM源地址, 这里配置的是FTP,还可以是HTTP,FILE等。

       enabled 是否启用这个仓库,1为起用,0为禁用
       gpgcheck :是否检查GPG签名(验证要安装的包是不是REDHAT官方的)。


二. 服务器端配置(本地光盘方式)

步骤也很简单,如下:

 

1.     创建介质装载目录

mkdir /media/disk

 

2.     插入系统光盘

一般在系统光盘里有我们所有需要的RPM 包,所以,可以直接从系统盘里获取RPM 包,而不用从网上在下载。

 

3.     挂载介质到我们之前创建的目录

mount /dev/cdrom1 /media/disk

 

4.     创建yum 配置文件

[root@rac2 /]#touch /etc/yum.repos.d/anqing.repo

       --这里的文件名可以自己指定,不影响使用。

 

5.     在yum 配置文件里添加如下内容:

[dave]  --这里可以自己指定

name = Dave YUM Server  --这里也可以自己指定

baseurl=file:///media/disk/Server/

gpgcheck=0

enabled=1

 

6.     验证YUM:

 

[root@rac2 yum.repos.d]# yum update

Loaded plugins: refresh-packagekit

dave                                                                        | 3.7 kB     00:00 ...

dave/primary_db                                                             | 3.1 MB     00:00 ...

Setting up Update Process

No Packages marked for Update

 

--查找libXp包

[root@rac2 /]# rpm-qa|grep libXp

libXpm-3.5.8-2.el6.x86_64

libXp-1.0.0-15.1.el6.x86_64

 

--卸载libXp 包

[root@rac2 /]# rpm -e libXp-1.0.0-15.1.el6.x86_64

 

--安装libXp 包:

[root@rac2 /]# yum -y install libXp  

Loaded plugins: refresh-packagekit

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package libXp.x86_640:1.0.0-15.1.el6 will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

====================================================================================================

 Package              Arch                  Version                       Repository           Size

====================================================================================================

Installing:

 libXp                x86_64                1.0.0-15.1.el6                dave                 22 k

 

Transaction Summary

====================================================================================================

Install       1 Package(s)

--这里可以看到使用的yum 的配置文件。

 

Total download size: 22 k

Installed size: 39 k

Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Warning: RPMDB altered outside of yum.

 Installing : libXp-1.0.0-15.1.el6.x86_64                                                     1/1

 

Installed:

 libXp.x86_64 0:1.0.0-15.1.el6                                                                    

 

Complete!

[root@rac2 /]#




三. 客户端配置

 

 

[root@singledb yum.repos.d]# cd /etc/yum.repos.d/                    

[root@singledb yum.repos.d]# wget ftp://192.168.6.2/pub/rhel54.86.repo

--2011-01-03 11:39:53--  ftp://192.168.6.2/pub/rhel54.86.repo

           => `rhel54.86.repo.1‘

Connecting to 192.168.6.2:21... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ... done.  ==> CWD /pub ... done.

==> SIZE rhel54.86.repo ... 471

==> PASV ... done.    ==> RETR rhel54.86.repo ... done.

Length: 471

 

100%[==========================================================>] 471         --.-K/s   in 0s     

 

2011-01-03 11:39:53 (23.6 MB/s) - `rhel54.86.repo.1‘ saved [471]

 

[root@singledb yum.repos.d]# yum update

Loaded plugins: rhnplugin, security

This system is not registered with RHN.

RHN support will be disabled.

rhel-ClusterStorage                                                          | 1.1 kB     00:00    

rhel-ClusterStorage/primary                                                  | 8.3 kB     00:00    

rhel-ClusterStorage                                                                           39/39

rhel-base                                                                    | 1.1 kB     00:00    

rhel-base/primary                                                            | 806 kB     00:00    

rhel-base                                                                                 2292/2292

rhel-cluster                                                                 | 1.1 kB     00:00    

rhel-cluster/primary                                                         | 5.9 kB     00:00    

rhel-cluster                                                                                  32/32

rhel-vt                                                                      | 1.1 kB     00:00    

rhel-vt/primary                                                              | 9.0 kB     00:00    

rhel-vt                                                                                       36/36

Skipping security plugin, no data

Setting up Update Process

No Packages marked for Update

 

yum 安装 ant 

[root@singledb yum.repos.d]# yum -y install ant

Loaded plugins: rhnplugin, security

This system is not registered with RHN.

RHN support will be disabled.

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package ant.i386 0:1.6.5-2jpp.2 set to be updated

--> Processing Dependency: xml-commons-apis for package: ant

--> Running transaction check

---> Package xml-commons-apis.i386 0:1.3.02-0.b2.7jpp.10 set to be updated

--> Processing Dependency: xml-commons = 1.3.02-0.b2.7jpp.10 for package: xml-commons-apis

--> Running transaction check

---> Package xml-commons.i386 0:1.3.02-0.b2.7jpp.10 set to be updated

--> Finished Dependency Resolution

 

Dependencies Resolved

 

====================================================================================================

 Package                    Arch           Version                        Repository           Size

====================================================================================================

Installing:

 ant                        i386           1.6.5-2jpp.2                   rhel-base           2.0 M

Installing for dependencies:

 xml-commons                i386           1.3.02-0.b2.7jpp.10            rhel-base            19 k

 xml-commons-apis           i386           1.3.02-0.b2.7jpp.10            rhel-base           335 k

 

Transaction Summary

====================================================================================================

Install      3 Package(s)        

Update       0 Package(s)        

Remove       0 Package(s)        

 

Total download size: 2.4 M

Downloading Packages:

(1/3): xml-commons-1.3.02-0.b2.7jpp.10.i386.rpm                              |  19 kB     00:00    

(2/3): xml-commons-apis-1.3.02-0.b2.7jpp.10.i386.rpm                         | 335 kB     00:00    

(3/3): ant-1.6.5-2jpp.2.i386.rpm                                             | 2.0 MB     00:00    

----------------------------------------------------------------------------------------------------

Total                                                               3.3 MB/s | 2.4 MB     00:00    

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

  Installing     : xml-commons                                                                  1/3

  Installing     : xml-commons-apis                                                             2/3

  Installing     : ant                                                                          3/3

 

Installed:

  ant.i386 0:1.6.5-2jpp.2                                                                          

 

Dependency Installed:

  xml-commons.i386 0:1.3.02-0.b2.7jpp.10         xml-commons-apis.i386 0:1.3.02-0.b2.7jpp.10       

 

Complete!

[root@singledb yum.repos.d]#


参考: http://blog.csdn.net/tianlesoftware/article/details/6113902 

本文出自 “--” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1553240

Linux -- 配置YUM服务器