近期使用Linux系统较多,在进行软件的安装部署时,经常提示无法找到依赖包,很是麻烦,因此一直想找到一种方式解决此问题。
用过yum软件包管理器的人都知道,Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum软件包的工作模式是依存于网络的,但测评中心的网络安全设置过为严格,无法访问互联网,因此网络中的yum源也就无法被使用,所以架设本地的yum服务器势在必行。
此文档主要由三个部分来讲述服务端和客户端的架设,我所介绍的yum安装方法为简易的架设,可能有些高级功能无法实现,但软件安装完全功能不会受到影响。
本地yum服务器安装
我所架设的yum服务器是利用ftp方式实现网络共享的,因此需要以下两种软件。
l vsftpd2.0.5-12.el5
l createrepo-0.4.4-2.fc6.noarch.rpm
首先安装vsftp,这个安装很简单。
rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm
warning: vsftpd-2.0.5-12.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
vsftp安装完成后,测试安装是否成功:
service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
确定vsftpd服务开启后,URL地址进行测试:
vsftp的默认共享路径是:
/var/ftp/pub
确定了vsftp的默认共享路径,为了快速搭建yum服务器,暂时不对vsftp的路径做设置。我们需要将Redhat5光盘中Server目录下的所有文件拷贝至vsftp的默认共享目录/var/ftp/pub中,拷贝完毕后,使用URL路径ftp://100.154.0.223/pub测试是否能够查看共享的文件,如果能够查看所有rpm包,说明ftp共享成功。
vsftp安装成功后,接下来安装createrepo。createrepo是linux下的创建仓库的软件包。create是创建的意思,repo是repository的缩写,是仓库的意思。也可以解释为这个软件是整个rpm文件的数据库,通过读取createrepo从而获得rpm的信息。createrepo的安装也比较简单。
rpm -ivh /media/RHEL5\ i386\ DVD/Server/createrepo-0.4.11-3.el5.noarch.rpm
Preparing... ########################################### [100%]
1:createrepo ########################################### [100%]
工具安装完成后,开始创建repository信息库。
# createrepo –g /var/ftp/pub/repodata/comps-rhel5-server-core.xml /var/yum/Server/
/var/ftp/pub目录下的comps-rhel5-server-core.xml为光盘中Server目录复制过来的。
执行创建repository信息库后,运行:
createrepo -v /var/ftp/pub
开始扫描yum源并加入repository信息库。
通过以上配置,yum本地源基本配置完毕了,下面开始在yum本地服务器配置客户端并测试yum执行情况。
创建本地yum客户端的repo文件。
vi /etc/yum.repos.d/rhel5.repo
rhel.repo名字可以随便起,但是要以.repo为后缀。
[local] # yum块区域
name=aaa # 名字可以随便起
baseurl=ftp://100.154.0.70/pub # 搜索路径,必须指向你本机的yum源路径
gpgcheck=0 # gpgcheck是gpg验证是否开启的选项,1是开启, 0是不开启,一般情况可以关掉
enabled=1 # 0为不启用,1为启用,若没这一项,就是启用)
创建完成后,需要对创建的yum源服务器和客户端配置进行测试,我将使用yum的方式安装httpd服务,具体如下:
[root@back Server]# yum install -y httpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package httpd.i386 0:2.2.3-22.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
===================================================================
Package Arch Version Repository Size
===================================================================
Installing:
httpd i386 2.2.3-22.el5 Server 1.2 M
Transaction Summary
===================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 1.2 M
Downloading Packages:
httpd-2.2.3-22.el5.i386.rpm | 1.2 MB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : httpd [1/1]
Installed: httpd.i386 0:2.2.3-22.el5
Complete!
httpd安装完成,检验一下httpd服务是否安装成功。
[root@back Server]# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ]
安装成功,通过URL来测试一下。
如果看到Apache的测试页面,证明httpd服务安装成功。
yum客户端配置
刚才所配置的都是在yum服务器的本地进行测试的,但yum的精髓所在就是通过网络方便的进行软件的安装删除,下面我将使用远程的终端进行yum配置。
yum远程客户端配置更为简单,我已经写好了一个小脚本,直接运行即可,但涉及到其他用户可能需要对yum源的URL地址进行修改,所以还是文字说明一下。
yum客户端在使用yum时,需保证以安装了yum和yum相关的软件包,这个就不细说了,yum的安装网上有很多。此次客户端使用Linux Redhat5系统,该版本已经默认安装了yum程序。
下面开始配置,首先我们找到yum的源配置文件,路径默认为。
/etc/yum.repos.d
Redhat5的/etc/yum.repos.d/文件夹中默认存在了rhel-debuginfo.repo模板,我们只需新建一个结构和默认模板相同的模板即可。
vi /etc/yum.repos.d/rhel5.repo
需要注意的是,模板必须以repo结尾,前面已经说明了。在自定义的模板加入以下内容:
[Server]
name=Server Directory # 仓库名称
baseurl=ftp://100.154.0.70/pub # yum源地址
enabled=1 # 是否开启源
gpgcheck=0 # 是否开启验证
这个gpgcheck很多人不理解,因为很多的开源软件都是源码包,redhat将其打成rpm,并在其中加入可验证密钥,如果有人在rpm包中动过手脚,在安装的过程中会有一个错误提示,提示已被别人修改过,安装可能不是很安全。
若将gpgcheck设置为1,开启验证的话,就需要指向一个密钥进行验证。
gpgkey=ftp://100.154.0.70/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
到这里,客户端的配置就基本完成了,yum远程安装软件的测试方式和本地源安装测试方式相同,我就不一一说明了。
一个批量修改的小语句,里面的baseurl需要改下。
#!/bin/sh
echo "程序正在重写yum源指向,请稍等..."
rm -rf /etc/yum.repos.d/*
touch /etc/yum.repos.d/rhel5.repo
cat > /etc/yum.repos.d/rhel5.repo << EOF
[Server]
name=bjj
baseurl=ftp://100.154.0.70/pub
enabled=1
gpgcheck=0
[Cluster]
name=Cluster Directory
baseurl=ftp://100.154.0.70/pub
enabled=1
gpgcheck=0
[ClusterStorage]
name=ClusterStorage Directory
baseurl=ftp://100.154.0.70/pub
enabled=1
gpgcheck=0
[VT]
name=VT Directory
baseurl=ftp://100.154.0.70/pub
enabled=1
gpgcheck=0
EOF
sleep 2
echo "正在刷新yum源..."
sleep 3
yum list
复制到文本中保存成.sh脚本文件,赋权执行即可。