Github上にyumリポジトリを立てる
はじめに
Redhat/CentOS/Fedoraなどで使われているRPMを管理するコマンドyumはとても便利です。
yumリポジトリは自分で立てることができて、自作のRPMを公開したり、公式リポジトリに含まれないRPMを利用したり出来ます。
今回はGithub上にyumリポジトリを立ててみます。
yumリポジトリの仕組み
yumリポジトリはftpかhttpでアクセスできる環境であれば、特に他に必要な条件はありません。
単純にはApacheを立ててRPM類を公開するだけでyumリポジトリになります。
ただし、単純にRPMを置くだけではなく、どのようなRPMがあるかなどのメタ情報を含むXMLファイルなどを所定の場所に置いておく必要があります。
Github Pagesとは
Github PagesはGithubの提供する静的なHTMLコンテンツの公開サービスです。(無料)
Github上にgitリポジトリを作り、gh-pagesという名前のブランチを作成すると、それだけでコンテンツが公開されます。
このコンテンツは単純にHTTPでアクセス可能ですので、RPMファイルとメタファイルを配置することでyumリポジトリとして利用可能になるのです。
RPMの準備
公開したいRPMをローカルのディレクトリに適当に配置します。
(サブディレクトリ等があってもOKです)
今回は/tmp/rpmsの下に配置した想定とします。
yumリポジトリのメタファイルを作成
yumリポジトリのメタファイルをcreaterepoというツールで自動生成します。
ツールはyumで普通に導入可能です。
$ yum install -y createrepo
$ createrepo /tmp/rpms
上記の実行により/tmp/rpmsの下にrepodataというディレクトリができていて、中にメタファイルが色々入っています。
gitリポジトリ作成
ブラウザでGithubにログインして、新たなgitリポジトリを画面から作成してください。
今回はyumrepoという名前のgitリポジトリを作成した想定とします。
Github Pagesへ公開
先ほど生成されたメタファイルとrpmファイルをgitリポジトリにpushします。
$ git clone https://github.com/user/yumrepo.git
$ cd yumrepo
$ git checkout --orphan gh-pages
$ cp -R /tmp/rpms/* .
$ git commit -a -m "Add RPMs"
$ git push origin gh-pages
ポイントとしては、gh-pagesというブランチを切る位で、あとは本当に普通にpushしているだけです。
公開の確認
上記の特殊なブランチにpushしたファイルは下記から普通にhttpアクセスできるようになります。
http://[ユーザ名].github.io/リポジトリ名/
下記の感じでhttpでrpmが取得可能な状態になっているか確認します。
$ wget http://user.github.io/yumrepo/xxx.rpm
yumリポジトリ利用の設定
ここまでで、すでにgithub上にpushしたrpmがyumリポジトリとして使える状態になっています。
実際にyumコマンドで利用できるように設定をします。
[repos.myrepo]
name=CentOS-$releasever - myyumrepo
baseurl=http://user.github.io/yumrepo/
enabled=1
gpgcheck=0
自前のyumリポジトリを利用してみる
yumコマンドを実行してみます。
$ yum -y install xxx --disablerepo=\* --enablerepo="repos.myrepo"
これであなたのオリジナルyumリポジトリからrpmのインストールをすることができるようになりました。
終わりに
これで気軽にオレオレyumリポジトリが手に入りますね!