2007/12/17 カテゴリ : Tech  yum  Linux  RPM 

yumリポジトリの構築

前回カスタムRPMパッケージを作ったのですが、他の人に配布するにあたって、どうするのがいいでしょうか?
パッケージを共有ディレクトリなどへ入れておき、使いたい人にそこから取得してもらってもいいのですが、パッケージをアップデートする度に同じことを行うのは面倒ですよね。
そこで、yumコマンドで楽にインストールできるよう、リポジトリを構築することにしてみます。

まずは、リポジトリ作成に必要なcreaterepoコマンドをインストールします。

  1. # yum install createrepo

次に、RPMおよびSRPMを格納するディレクトリを作成します。リポジトリへのアクセスはHTTP経由にしますので、今回はCentOSのApache標準のDocumentRootである /var/www/html/ 以下へ作成します。

  1. # mkdir -p /var/www/html/repos/cent5/{i386,i686,x86_64,SRPMS}

作成したディレクトリへ提供したいRPMパッケージをコピーします。

  1. # cp /home/user/rpm/RPMS/i386/vim-*.rpm /var/www/html/repos/cent5/i386/
  2. # cp /home/user/rpm/RPMS/i686/vim-*.rpm /var/www/html/repos/cent5/i686/
  3. # cp /home/user/rpm/RPMS/x86_64/vim-*.rpm /var/www/html/repos/cent5/x86_64/
  4. # cp /home/user/rpm/SRPMS/vim-*.rpm /var/www/html/repos/cent5/SRPMS/

最後に、各ディレクトリへリポジトリ情報を作成します。

  1. # createrepo -v /var/www/html/repos/cent5/i386/
  2. 1/4 - vim-common-7.0.109-3.el5.3vs1.i386.rpm
  3. 2/4 - vim-enhanced-7.0.109-3.el5.3vs1.i386.rpm
  4. 3/4 - vim-minimal-7.0.109-3.el5.3vs1.i386.rpm
  5. 4/4 - vim-X11-7.0.109-3.el5.3vs1.i386.rpm
  6. Saving Primary metadata
  7. Saving file lists metadata
  8. Saving other metadata

  1. # createrepo -v /var/www/html/repos/cent5/i686/
  2. 1/4 - vim-common-7.0.109-3.el5.3vs1.i686.rpm
  3. 2/4 - vim-enhanced-7.0.109-3.el5.3vs1.i686.rpm
  4. 3/4 - vim-minimal-7.0.109-3.el5.3vs1.i686.rpm
  5. 4/4 - vim-X11-7.0.109-3.el5.3vs1.i686.rpm
  6. Saving Primary metadata
  7. Saving file lists metadata
  8. Saving other metadata

  1. # createrepo -v /var/www/html/repos/cent5/x86_64/
  2. 1/4 - vim-common-7.0.109-3.el5.3vs1.x86_64.rpm
  3. 2/4 - vim-enhanced-7.0.109-3.el5.3vs1.x86_64.rpm
  4. 3/4 - vim-minimal-7.0.109-3.el5.3vs1.x86_64.rpm
  5. 4/4 - vim-X11-7.0.109-3.el5.3vs1.x86_64.rpm
  6. Saving Primary metadata
  7. Saving file lists metadata
  8. Saving other metadata

  1. # createrepo -v /var/www/html/repos/cent5/SRPMS/
  2. 1/1 - vim-7.0.109-3.el5.3vs1.src.rpm
  3. Saving Primary metadata
  4. Saving file lists metadata
  5. Saving other metadata

ひとつひとつ作成するのが面倒な場合は、次のように一気に実行すれば楽かと思います。

  1. # find /var/www/html/repos/cent5/ -maxdepth 1 -mindepth 1 -exec createrepo -v {} \;

これでリポジトリの準備はできましたので、今度は取得する側のマシンにて設定を行います。

まず、リポジトリを追加するため /etc/yum.repos.d/CentOS-Asial.repo を作成します。

  1. # CentOS-Asial.repo
  2. [asial]
  3. name=CentOS-5 - Asial
  4. baseurl=http://yourserver/repos/cent5/$basearch/
  5. gpgcheck=0
  6. [asial-source]
  7. name=CentOS-5 - Asial Source
  8. baseurl=http://yourserver/repos/cent5/SRPMS/
  9. gpgcheck=0
  10. enabled=0

設定はこれだけですので、あとはyumコマンドを実行します。

  1. # yum check-update
  2. Loading "installonlyn" plugin
  3. Loading "fastestmirror" plugin
  4. Setting up repositories
  5. asial                     100% |=========================|  951 B    00:00
  6. Loading mirror speeds from cached hostfile
  7. Reading repository metadata in from local files
  8. primary.xml.gz            100% |=========================| 2.2 kB    00:00
  9. ################################################## 4/4
  10. vim-common.i386                          2:7.0.109-3.el5.3vs1   asial
  11. vim-enhanced.i386                        2:7.0.109-3.el5.3vs1   asial
  12. vim-minimal.i386                         2:7.0.109-3.el5.3vs1   asial

無事リポジトリが追加され、アップデートできるパッケージが表示されました!

なお、すでにi386のほうが入っているマシンへi686のほうをインストールしたい場合は、/etc/yum.repos.d/CentOS-Asial.repoの「$basearch」を「i686」へ変更し、/etc/yum.confの「exactarch=1」を一時的に「exactarch=0」へ変更してからyumコマンドを実行します。そして、インストールが終わったら/etc/yum.confを「exactarch=1」へ忘れずに戻します。

次に、SRPMも取得できるか試してみます。

  1. $ yumdownloader --enablerepo=asial-source --source vim
  2. Loading "installonlyn" plugin
  3. asial-source              100% |=========================|  951 B    00:00
  4. primary.xml.gz            100% |=========================|  899 B    00:00
  5. ################################################## 1/1
  6. vim-7.0.109-3.el5.3vs1.sr 100% |=========================|  11 MB    00:02

こちらも無事取得できましたね。

これで、リポジトリサーバ側でパッケージを更新して再度createrepoコマンドを実行すれば、他のマシンではyum updateするだけで更新されたパッケージを取得できます。

簡単!便利!おススメです。

トラックバックURI

アシアルPHP書籍情報