自己生成yum仓库
上篇文章我们生成了自己的rpm包,那么我们如何解决依赖关系?我们从别人那拿过来的rpm包,又如何解决依赖关系呢?如果系统光盘提供的yum源不能解决我们的依赖关系呢?
有时候我们从网络上down下一个rpm包,安装的时候会提示有依赖关系,如果依赖少的话可以手动安装所依赖的包,如果依赖非常多,甚至依赖十几个包的时候,怎么办?
如果可以自己生成yum仓库,那么可不可以像系统自带的那样,用yum groupinstall 命令,直接安装一个组包呢?
下面来解决这个问题。
一、生成单个rpm包的yum源
我们需要安装createrepo工具
它由软件包createrepo-0.9.9-17.el6.noarch.rpm生成
#yum -y install createrepo
安装完之后就可以用createrepo命令来生成元数据
假设我们把下载的rpm包和他的依赖包都放到了/var/ftp/rhel6/目录这下
#createrepo -v /var/ftp/rhel6///生成元数据文件目录和文件
-v 查看详细信息verbose
此时会生成一个repodata目录,里面会存放以很长的名字命名的文件,代表你的yum仓库创建完成。
此时你修改yum源的配置文件,指定/var/ftp/rhel6/这个目录,就可以用yum来安装目录下的rpm包了
#vim /etc/yum.repos.d/rhel-server.repo //编辑yum源配置文件
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///var/ftp/rhel6
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
保存退出;
#yum clean all//清理一下yum源缓存
#yum repolist//重新list一下,你会发现,你的目录下有多少rpm包,就会list多少个
简单的自定义yum源就创建成功,如果你想把系统光盘下的rpm包和自己的rpm包重新生成yum源,只需把系统光盘中的包和自己的包一起放到一个目录下,然后用createrepo+目录路径 ,创建自己的yum仓库。最后编辑yum的配置文件即可
二、生成组包的yum源
要想使用groupinstall命令安装一个组的包,其实和单个包的类似,你可以参考系统光盘中repodata目录下,以comps-xxx-Server.xml结尾的文件,自己手动写一个;也可以用命令自动生成一个
用到的命令为:yum-groups-manager
安装软件包:
#yum -y install yum-utils-1.1.30-14.el6.noarch
安装成功之后即可使用命令生成一个组的.xml文件
比如我们以telnet 和telnet-server生成一个叫mygroup的组
#yum-groups-manager -n "mygroup" --id=mygroup
--save=mygroup.xml --mandatory python shell
//生成组的.xml文件
#ls mygroup.xml
#vim mygroup.xml
生成的文件内容大致如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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>mygroup</name>
<description></description>
<packagelist>
<packagereq type="mandatory">telnet</packagereq>
<packagereq type="mandatory">telnet-server</packagereq>
</packagelist>
</group>
</comps>
选项:
-n: 组名,
--id :组的id,如果不指定,会基于组名来生成,组id用来标识组
--save :保存结果到文件
--mandatory:存储组下包的名,只需写上包名即可,多个包名之间用空格间隔
最后用createrepo -g 命令加入组到yum仓库
#createrepo -g mygroup.xml /var/ftp/rhel6
#yum clean all
#yum grouplist //查看一下可用的groups
#yum -y groupinstall mygroup//现在可以进行组安装了
总结:
其实很简单,总共就2条命令
createrepo +目录路径
yum-groups-manager -n 组名 --id=组id --save=保存文件名 --mandatory 包名 报名 ...
创建完组的之后不要忘记再用createrepo命令把组加入到yum仓库!