yumリポジトリの構築
前回カスタムRPMパッケージを作ったのですが、他の人に配布するにあたって、どうするのがいいでしょうか?
パッケージを共有ディレクトリなどへ入れておき、使いたい人にそこから取得してもらってもいいのですが、パッケージをアップデートする度に同じことを行うのは面倒ですよね。
そこで、yumコマンドで楽にインストールできるよう、リポジトリを構築することにしてみます。
まずは、リポジトリ作成に必要なcreaterepoコマンドをインストールします。
次に、RPMおよびSRPMを格納するディレクトリを作成します。リポジトリへのアクセスはHTTP経由にしますので、今回はCentOSのApache標準のDocumentRootである /var/www/html/ 以下へ作成します。
作成したディレクトリへ提供したいRPMパッケージをコピーします。
最後に、各ディレクトリへリポジトリ情報を作成します。
ひとつひとつ作成するのが面倒な場合は、次のように一気に実行すれば楽かと思います。
これでリポジトリの準備はできましたので、今度は取得する側のマシンにて設定を行います。
まず、リポジトリを追加するため /etc/yum.repos.d/CentOS-Asial.repo を作成します。
設定はこれだけですので、あとはyumコマンドを実行します。
無事リポジトリが追加され、アップデートできるパッケージが表示されました!
なお、すでに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も取得できるか試してみます。
こちらも無事取得できましたね。
これで、リポジトリサーバ側でパッケージを更新して再度createrepoコマンドを実行すれば、他のマシンではyum updateするだけで更新されたパッケージを取得できます。
簡単!便利!おススメです。
パッケージを共有ディレクトリなどへ入れておき、使いたい人にそこから取得してもらってもいいのですが、パッケージをアップデートする度に同じことを行うのは面倒ですよね。
そこで、yumコマンドで楽にインストールできるよう、リポジトリを構築することにしてみます。
まずは、リポジトリ作成に必要なcreaterepoコマンドをインストールします。
- #
yum install createrepo
次に、RPMおよびSRPMを格納するディレクトリを作成します。リポジトリへのアクセスはHTTP経由にしますので、今回はCentOSのApache標準のDocumentRootである /var/www/html/ 以下へ作成します。
- #
mkdir -p /var/www/html/repos/cent5/{i386,i686,x86_64,SRPMS}
作成したディレクトリへ提供したいRPMパッケージをコピーします。
- #
cp /home/user/rpm/RPMS/i386/vim-*.rpm /var/www/html/repos/cent5/i386/ - #
cp /home/user/rpm/RPMS/i686/vim-*.rpm /var/www/html/repos/cent5/i686/ - #
cp /home/user/rpm/RPMS/x86_64/vim-*.rpm /var/www/html/repos/cent5/x86_64/ - #
cp /home/user/rpm/SRPMS/vim-*.rpm /var/www/html/repos/cent5/SRPMS/
最後に、各ディレクトリへリポジトリ情報を作成します。
- #
createrepo -v /var/www/html/repos/cent5/i386/ - 1/4
- vim-common-7.0.109-3.el5.3vs1.i386.rpm - 2/4
- vim-enhanced-7.0.109-3.el5.3vs1.i386.rpm - 3/4
- vim-minimal-7.0.109-3.el5.3vs1.i386.rpm - 4/4
- vim-X11-7.0.109-3.el5.3vs1.i386.rpm - Saving
Primary metadata - Saving
file lists metadata - Saving
other metadata
- #
createrepo -v /var/www/html/repos/cent5/i686/ - 1/4
- vim-common-7.0.109-3.el5.3vs1.i686.rpm - 2/4
- vim-enhanced-7.0.109-3.el5.3vs1.i686.rpm - 3/4
- vim-minimal-7.0.109-3.el5.3vs1.i686.rpm - 4/4
- vim-X11-7.0.109-3.el5.3vs1.i686.rpm - Saving
Primary metadata - Saving
file lists metadata - Saving
other metadata
- #
createrepo -v /var/www/html/repos/cent5/x86_64/ - 1/4
- vim-common-7.0.109-3.el5.3vs1.x86_64.rpm - 2/4
- vim-enhanced-7.0.109-3.el5.3vs1.x86_64.rpm - 3/4
- vim-minimal-7.0.109-3.el5.3vs1.x86_64.rpm - 4/4
- vim-X11-7.0.109-3.el5.3vs1.x86_64.rpm - Saving
Primary metadata - Saving
file lists metadata - Saving
other metadata
- #
createrepo -v /var/www/html/repos/cent5/SRPMS/ - 1/1
- vim-7.0.109-3.el5.3vs1.src.rpm - Saving
Primary metadata - Saving
file lists metadata - Saving
other metadata
ひとつひとつ作成するのが面倒な場合は、次のように一気に実行すれば楽かと思います。
- #
find /var/www/html/repos/cent5/ -maxdepth 1 -mindepth 1 -exec createrepo -v {} \;
これでリポジトリの準備はできましたので、今度は取得する側のマシンにて設定を行います。
まず、リポジトリを追加するため /etc/yum.repos.d/CentOS-Asial.repo を作成します。
- #
CentOS-Asial.repo - [asial]
- name=CentOS-5
- Asial - baseurl=http://yourserver/repos/cent5/$basearch/
- gpgcheck=0
- [asial-source]
- name=CentOS-5
- Asial Source - baseurl=http://yourserver/repos/cent5/SRPMS/
- gpgcheck=0
- enabled=0
設定はこれだけですので、あとはyumコマンドを実行します。
- #
yum check-update - Loading
"installonlyn" plugin - Loading
"fastestmirror" plugin - Setting
up repositories - asial
100% |=========================| 951 B 00:00 - Loading
mirror speeds from cached hostfile - Reading
repository metadata in from local files - primary.xml.gz
100% |=========================| 2.2 kB 00:00 - ##################################################
4/4 - vim-common.i386
2:7.0.109-3.el5.3vs1 asial - vim-enhanced.i386
2:7.0.109-3.el5.3vs1 asial - 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も取得できるか試してみます。
- $
yumdownloader --enablerepo=asial-source --source vim - Loading
"installonlyn" plugin - asial-source
100% |=========================| 951 B 00:00 - primary.xml.gz
100% |=========================| 899 B 00:00 - ##################################################
1/1 - vim-7.0.109-3.el5.3vs1.sr
100% |=========================| 11 MB 00:02
こちらも無事取得できましたね。
これで、リポジトリサーバ側でパッケージを更新して再度createrepoコマンドを実行すれば、他のマシンではyum updateするだけで更新されたパッケージを取得できます。
簡単!便利!おススメです。
トラックバックURI
最近の記事
JavaScriptのクロスドメイン問題対応方法 [2012年05月17日 : 笹亀弘]
JavaScriptのコーディング規約を気軽にチェック [2012年05月14日 : 中川善樹]
誕生日プレゼント [2012年05月10日 : 阿部恵]
イラストでわかる!git入門の入門 [2012年05月09日 : 志田仁美]
【CSS3】HSL色空間による色指定のすゝめ [2012年05月09日 : 橋本章史]
インスピレーションをかきたてるポスターデザインのまとめ記事のまとめ [2012年04月25日 : 鴨田健次]
エンジニアの英会話 〜とっさの一言〜 [2012年04月19日 : 斉藤勝也]
イコライザーをFireworksで描いてみました [2012年04月16日 : 和田記光]
SFNewTech Japan Night のファイナリストに選出されました!(他、もろもろの出展の御案内) [2012年04月06日 : 小林有佳]
使えるとちょっと便利なSSHのTIPS [2012年04月04日 : 牧野克俊]













最近のコメント