天天看點

自己生成yum倉庫

自己生成yum倉庫

 上篇文章我們生成了自己的rpm包,那麼我們如何解決依賴關系?我們從别人那拿過來的rpm包,又如何解決依賴關系呢?如果系統CD光牒提供的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源就建立成功,如果你想把系統CD光牒下的rpm包和自己的rpm包重新生成yum源,隻需把系統CD光牒中的包和自己的包一起放到一個目錄下,然後用createrepo+目錄路徑 ,建立自己的yum倉庫。最後編輯yum的配置檔案即可

二、生成組包的yum源

要想使用groupinstall指令安裝一個組的包,其實和單個包的類似,你可以參考系統CD光牒中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倉庫!

      本文轉自Jx戰壕  51CTO部落格,原文連結:http://blog.51cto.com/xujpxm/1397474,如需轉載請自行聯系原作者