Github上にyumリポジトリを立てる

  • 53
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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コマンドで利用できるように設定をします。

/etc/yum.repos.d/myyum.repo
[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リポジトリが手に入りますね!