最近找到几个新的软件包,觉得挺好用,也刚编译成rpm包,希望在所有使用到的机器上部署。后来发现,需要每一台机器去安装一遍,即使可以远程安装,这也是挺麻烦的。决定参考RedHat的升级机制,把yum也迁移到红旗上来。说做就做,效果还是不错的。
一、原理
yum是一个用于管理rpm包的后台程序,用Python写成,可以非常方便的解决rpm的依赖关系。在建立好yum服务器后,yum客户端可以通过http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包,甚至包括kernel的更新。它也可以理解为红旗环境下的apt管理工具。
要在红旗上部署yum服务,首先需要的就是规划软件包的目录次序:
引用
1、我准备要对红旗服务器DC和桌面DT提供服务;
2、涉及的平台,服务器对i386、x86_64平台,桌面只有i386平台;
3、提供系统本身的升级程序包,官方提供的升级包,自己编译的软件包,以及从其他途径获得、经过测试的软件包四大部分提供更新升级。
目录架构如下:
二、部署yum服务器
系统平台:
服务端:红旗DC Server 5.0 for x86
客户端:红旗DC Server 5.0 for x86和DT 5.0 for x86
1、准备
需要为yum提供python环境,可以从系统光盘获得:
引用
libxml2-2.6.16-6.i386.rpm
libxml2-python-2.6.16-6.i386.rpm
elfutils-0.97-5.i386.rpm
rpm-python-4.3.3-9_nonptl.1AX.i386.rpm
python-urlgrabber-2.9.6-2.noarch.rpm
使用rpm -ivh把上述的包都安装到系统中。
新版的yum使用xml格式的数据文件来分析和获得rpm信息,可以使用createrepo工具实现
安装:
rpm -ivh createrepo-0.4.4-1.noarch.rpm
2、拷贝
os目录是用于存放系统原来带的所有软件包的,则我们这样做:
mount -t iso9660 -o loop /iso/redflag-dc5.0-release-disc1.iso /mnt/cdrom
cp /mnt/cdrom/* ./os/i386/
umount /mnt/cdrom
mount -t iso9660 -o loop /iso/redflag-dc5.0-release-disc2.iso /mnt/cdrom
cp /mnt/cdrom/* ./os/i386/
3、生成yum用的repodata目录
运行:
createrepo /yum/dc/5.0/os/i386
运行后,会自动在i386目录下生成repodata目录,里面存放有对应RPM的依赖信息供后续yum使用。
这里只是演示了os目录,同样的,其他目录也存放上对应的文件,并用上述命令生成repodata目录。今后若有更新,需重新运行createrepo命令,以更新数据库
4、准备ftp服务
yum是通过http或ftp获得rpm包的,所以我们需要设置http或ftp服务,并把上述的yum目录的根目录作为ftp的根目录即可。类似提供这样的关系:
引用
ftp://ip/dc/5.0/os/i386三、部署yum客户端
我使用的是一个用最小化安装的红旗DC Server作为客户端。要使用yum服务,必须先解决yum的依赖关系。
1、准备
下面是需要使用的软件包,请从系统光盘、rpmfind或CentOS获得:地址
rpm -ivh libxml2-2.6.16-6.i386.rpm
rpm -ivh libxml2-Python-2.6.16-6.i386.rpm
rpm -ivh python-elementtree-1.2.6-4.i386.rpm
rpm -ivh sqlite-3.2.2-1.i386.rpm
rpm -ivh python-sqlite-1.1.6-1.i386.rpm
rpm -ivh python-urlgrabber-2.9.6-2.noarch.rpm
rpm -ivh elfutils-0.97-5.i386.rpm
rpm -ivh rpm-4.3.3-9_nonptl.i386.rpm
rpm -ivh rpm-python-4.3.3-9_nonptl.1AX.i386.rpm
2、安装
我使用的是自己编译的2.6.1-1版本,可以从下面的地址获得。你也可以使用centos提供的2.4.2-2版本。
下载地址:
rpm -ivh yum-2.6.1-1.noarch.rpm
3、配置
yum客户端的配置非常简单,只有一个配置文件:/etc/yum.conf,如下:
引用
[main]
cachedir=/var/cache/yum
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redflag-release
tolerant=1
exactarch=1
obsoletes=1
# 这里表示,你可以把配置文件放在/etc/yum.repos.d目录中,用.repo文件名# 结尾即可。
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[base]
name=Red Flag Linux $releasever – $basearch – Base
# 下面是获得rpm的http或ftp地址(yumer是用户名和密码)
baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/os/$basearch/
[updates]
name=Red Flag Linux $releasever – Updates
baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/updates/$basearch/
[extras]
name=Red Flag Linux $releasever – Extras
baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/extras/$basearch/
[addons]
name=Red Flag Linux $releasever – Addons
baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/addons/$basearch/
※注释:配置文件中可以使用几个变量,其他的请参考man yum.conf。
$releasever=distroverpkg定义的对应/etc/redflag-release的版本;
$arch=python中os.uname的定义;
$basearch=把$arch降级到最基础的架构,例如i686会表示为i386
4、使用
上面已经把yum配置完,使用方法是:
# yum <更新项目> <套件名称>
参数说明:
options:这里仅列出常见的参数而已。
-y 如果 yum 在工作过程中需要使用者响应,这个参数可以直接回答 yes
更新项目:更新的动作有底下几个:
install :安装某个套件,后面需要接套件名称;
update :这就是升级啦!如果 update 后面接套件名称,表示只要 yum 升级该套件而已
如果 update 后面不接套件名称,表示 yum 针对目前该主机所有已经安装的套件进行升级的动作!这是最常使用的项目了。
list :列出目前在 yum server 上面有的 RPM 套件;
info :某个套件的内容,类似 rpm -qi packages 的内容。
clean :将已将下载到本机的 packages 或 headers 移除。
remove :移除已经安装在我们系统的某个套件!
例如:
安装所有和mysql有关的套件
yum install *mysql*
检查是否有更新的套件
yum check-update
检查所有提供php的套件,并显示简介信息
yum search php
显示已经安装的套件
yum list installed
移除wget套件
yum remove wget四、其他
1、相关文件
引用
/etc/cron.daily/yum.cron
每日进行yum及其他软件包定时升级
/etc/init.d/yum
yum服务启动文件
2、更新套件
服务端:把新的套件放入对应的目录,然后运行createrepo更新XML数据库即可;
客户端:yum会定时的情况cache文件,但有时候我们马上就要更新需要的套件,可以这样做:
yum clean all
yum update mirrordir
3、利用其他套件更新
我们在日常的管理中,也可以利用其他的发行版提供的镜像来进行额外的更新。例如,我常用CentOS镜像来更新部分我的工具包:
在/etc/yum.conf文件中增加:
引用
[centos-update]
name=CentOS-$releasever – Update
baseurl=http://mirror.be10.com/centos/4.3/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.be10.com/centos/RPM-GPG-KEY-centos4
其中不一样的地方就是,centos做了签名,所以,需要加上gpgcheck和gpgkey,接下来我就可以进行更新:
yum clean all
yum install mysql
可以看到,mysql会使用centos提供的4.1.20-1版本,而不会使用系统自带的4.1.10a-2。
但千万要注意区分可使用的套件,并不是所有centos的套件都适合红旗使用的。若不知道如何区分,建议还是使用官方的SP补丁包吧。
用yum来更新红旗Linux
转载请注明出处:服务器评测 » 用yum来更新红旗Linux