kazmax - Linux で自宅サーバー

yum|yum リポジトリを作成する

yumのリポジトリの作成手順を説明します。createrepo コマンドを使ってリポジトリを作成します。

Last Update : 2015年04月02日

yum|yum のリポジトリを作成する 項目

  1. createrepo コマンドのインストール
  2. パッケージの配置
  3. リポジトリの作成
  4. 作成したリポジトリへアクセスする
  5. リポジトリの内容を更新する場合

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

以上で、リポジトリが更新されます。

パッケージ管理 関連記事
Linux 基礎知識 関連記事