用Redhat系的Linux OS(RHEL, CentOS 和 Fedora等)时,使用yum工具来管理软件包是很有必要的,当管理很多的系统或者不方便连接外部yum源时,建立一个内部使用的yum源也是很重要的。平时使用RHEL系列的OS比较多(目前是RHEL6.4),在2年前就建立了内部使用的yum源,偶尔也需要将其更新到最新的版本,所以还是重复做一下建立yum源的步骤。这里简单记录以下如何建立yum源吧,其实也很简单。
1. 准备工作:安装必须要的软件(如createrepo),准备yum源用到的RPM包
2. 复制RPM包到特定的目录下
3. 在目录下运行createrepo命令
4. 将yum源的目录作为http或ftp服务暴露出来
5. 在客户端系统上,配置yum源,一般是在 /etc/yum.repo.d/ 目录中建立test.repo这样文件,在里面配置使用的yum源的URL.
6. 配置好yum源后,可以运行“yum repolist”看一下效果,也可以“yum install $your-software”来使用。
写了个简单的脚本来建立yum源,如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash # set up YUM repository # yum install createrepo # install 'createrepo' tool base_dir=/home/yum/pub/6Server # mkdir -p $base_dir/{SRPMS,i386,x86_64} # create dir if needed for i in "SRPMS i386 x86_64" do # cp /your-src/*.rpm $base_dir/$i/ # you may copy RPMs to the destination pushd $base_dir/$i > /dev/null 2>&1 createrepo . popd >/dev/null 2>&1 done |
使用yum源的系统上,关于yum源的配置文件,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# put this .repo file into /etc/yum.repo.d/ directory. [rhel$releasever] name=Red Hat Enterprise Linux $releasever baseurl=http://mydomain.com/yum/$releasever/$basearch enabled=1 gpgcheck=0 [rhel6_optional] name=Red Hat Enterprise Linux rhel6_optional baseurl=http://mydomain.com/yum/$releasever_optional/$basearch enabled=1 gpgcheck=0 |
注意:在我的64位的RHEL6.4上,$releasever被解析为6Server,$basearch被解析为x86_64.
有网友问到:建立repo时,如何保持或者创建一些group让其关联安装一些列RPM包呢(可用yum grouplist命令查看的)?
方法是在createrepo时,添加-g参数来指定准备好的关于group信息的XML文件,命令为:
[user@machine] createrepo -g comps.xml MyRepo
comps.xml文件的示例为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd"> <comps> <group> <id>mygroup</id> <default>False</default> <uservisible>True</uservisible> <display_order>1024</display_order> <name>My group</name> <description></description> <packagelist> <packagereq type="mandatory">glibc</packagereq> <packagereq type="mandatory">rpm</packagereq> <packagereq type="mandatory">yum</packagereq> </packagelist> </group> </comps> |
这个comps.xml文件可以用命令来生成:
yum-groups-manager -n "My Group" --id=mygroup --save=mygroups.xml --mandatory yum glibc rpm
参考资料:
http://ramblings.narrabilis.com/creating-a-yum-repository-repo-and-creating-a-yum-group-to-install-kickstart
http://yum.baseurl.org/wiki/YumGroups