前回カスタムRPMパッケージを作ったのですが、他の人に配布するにあたって、どうするのがいいでしょうか?
パッケージを共有ディレクトリなどへ入れておき、使いたい人にそこから取得してもらってもいいのですが、パッケージをアップデートする度に同じことを行うのは面倒ですよね。
そこで、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するだけで更新されたパッケージを取得できます。
簡単!便利!おススメです。