Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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リポジトリが手に入りますね!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away