自己生成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仓库!