yum|yum リポジトリを作成する
yumのリポジトリの作成手順を説明します。createrepo コマンドを使ってリポジトリを作成します。
Last Update : 2015年04月02日
yum|yum のリポジトリを作成する 項目
1. createrepo コマンドのインストール
yum のリポジトリを作るには、createrepo コマンドを使います。createrepo コマンドは以下のようにしてインストールします。
# yum install createrepo
2. パッケージの配置
リポジトリは、任意のパスに作成できます。ローカルからしかアクセスできない場所に作成してもいいし、apache等のWEBサービスの管理下にリポジトリを作成すれば、HTTP/HTTPS経由で他のシステムからもリポジトリへアクセスできるようになります。
リポジトリとするディレクトリを決めて、配布したいrpmパッケージをそのディレクトリへ配置します。
ここでは、/tmp/repo ディレクトリへbindパッケージを配置してみます。
# cd /tmp/repo
# yumdownloader bind* ← bind パッケージをダウンロード
# ls -l
合計 7392
-rw-r--r-- 1 root root 4288740 3月 11 20:18 2015 bind-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
-rw-r--r-- 1 root root 74988 3月 11 20:18 2015 bind-chroot-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
-rw-r--r-- 1 root root 390472 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.i686.rpm
-rw-r--r-- 1 root root 390480 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
-rw-r--r-- 1 root root 72932 2月 17 03:18 2015 bind-dyndb-ldap-2.3-6.el6_6.x86_64.rpm
-rw-r--r-- 1 root root 915376 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.i686.rpm
-rw-r--r-- 1 root root 905264 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
-rw-r--r-- 1 root root 317168 3月 11 20:18 2015 bind-sdb-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
-rw-r--r-- 1 root root 189384 3月 11 20:18 2015 bind-utils-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm
3. リポジトリの作成
createrepo コマンドを使って、yum のリポジトリを作成します。リポジトリのパスとして指定したディレクトリに配置されているrpmパッケージの情報を読み取って、メタデータが作成され、リポジトリとして動作する形になります。リポジトリとするディレクトリのパスの指定は必須です。
createrepo コマンドの書式
# createrepo [オプション] リポジトリのパス
※ リポジトリのパスは必ず指定する
createrepo コマンドのオプション
使えそうなオプション
オプション | 動作 |
---|---|
--outputdir | メディア等に書き出す際に使う |
--update | すでにあるリポジトリへのパッケージの更新や、追加をした場合に使う。 |
createrepo 使用例
# createrepo /tmp/repo ← リポジトリ作成
Spawning worker 0 with 9 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
これだけでyum のリポジトリが作成されます。
4. 作成したリポジトリへアクセスする
作成したリポジトリへアクセスするには、yum へ作成したリポジトリを追加します。
memo
リポジトリの追加手順の詳細は以下を参照。
yum|yum リポジトリの設定と追加
.repo ファイルを作成し、yum にリポジトリを認識させます。
# vi /etc/yum.repos.d/my_repo.repo
[my_repo]
name=My Repository
baseurl=file:///tmp/repo ← 作成したリポジトリへのパスを記入
memo
baseurl = file:///path/to/repo/
※ file: の後ろのスラッシュは二つではなく三つ。リポジトリへのパスを記入する。
HTTP/HTTPS 経由でアクセスする場合は、以下のようにします。
baseurl = http://servername/repo
※ リポジトリをおいてあるURLを記入する。
5. リポジトリの内容を更新する場合
作成したリポジトリを更新するには、リポジトリとしたディレクトリ内のrpmパッケージを更新し、createrepo コマンドを再実行するだけです。
リポジトリとしたディレクトリ内へ、パッケージを追加したり、おいてあるrpmパッケージを上書き更新、あるいは削除するたびに、手順3の「リポジトリの作成」のコマンドを再度実行し、リポジトリのメタデータを作成しなおす必要があります。
この際、「--update」オプションを使うと差分だけが処理の対象となり、システムへの負荷が軽減されます。
リポジトリの更新の例
# ls -l 合計 7396 -rw-r--r-- 1 root root 4288740 3月 11 20:18 2015 bind-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 74988 3月 11 20:18 2015 bind-chroot-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 390472 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.i686.rpm -rw-r--r-- 1 root root 390480 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 72932 2月 17 03:18 2015 bind-dyndb-ldap-2.3-6.el6_6.x86_64.rpm -rw-r--r-- 1 root root 915376 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.i686.rpm -rw-r--r-- 1 root root 905264 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 317168 3月 11 20:18 2015 bind-sdb-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 189384 3月 11 20:18 2015 bind-utils-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm drwxr-xr-x 2 root root 4096 4月 1 12:51 2015 repodata
bind関連のパッケージだけがディレクトリに存在しています。新しくパッケージを追加し、リポジトリを更新します。
# yumdownloader nkf ← 新しくrpm パッケージを追加 # ls -l 合計 7508 -rw-r--r-- 1 root root 4288740 3月 11 20:18 2015 bind-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 74988 3月 11 20:18 2015 bind-chroot-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 390472 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.i686.rpm -rw-r--r-- 1 root root 390480 3月 11 20:18 2015 bind-devel-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 72932 2月 17 03:18 2015 bind-dyndb-ldap-2.3-6.el6_6.x86_64.rpm -rw-r--r-- 1 root root 915376 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.i686.rpm -rw-r--r-- 1 root root 905264 3月 11 20:18 2015 bind-libs-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 317168 3月 11 20:18 2015 bind-sdb-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 189384 3月 11 20:18 2015 bind-utils-9.8.2-0.30.rc1.el6_6.2.x86_64.rpm -rw-r--r-- 1 root root 112856 7月 3 13:47 2011 nkf-2.0.8b-6.2.el6.x86_64.rpm ← 追加されたパッケージ drwxr-xr-x 2 root root 4096 4月 1 12:51 2015 repodata # createrepo --update /tmp/repo/ ← リポジトリを更新 Spawning worker 0 with 1 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
以上で、リポジトリが更新されます。