独自のRPMパッケージやyumリポジトリを作ってみよう 4ページ

独自yumリポジトリを利用するよう設定を行う

 作成した独自yumリポジトリにアクセスするには、リポジトリを利用する側(クライアント側)でyumの設定を行う必要がある。yumが利用するリポジトリの情報は、/etc/yum.repos.dディレクトリに格納されている。このファイルはいわゆる「ini形式」で記述されており、最小限下記のものを指定すれば良い。

[<リポジトリ名>]
name=<リポジトリの説明文>
baseurl=<リポジトリのURL>

 「リポジトリ名」には、リポジトリの名前を、「name」にはそのリポジトリを説明する文字列を、「baseurl」にはrepodataディレクトリが存在するディレクトリをURLで指定する。

 たとえば「hylompkgs」という名称で独自のリポジトリを登録する場合、以下のような内容となる。これを適当な名前(たとえば「hylmpkgs.repo」など)で/etc/yum.repos.dディレクトリ内に配置すれば良い。

# hylom's original yum repository
[hylompkgs]
name=hylom's original RPM packages
baseurl=http://hylom.net/rpmrepo/x86_64/

 これで指定したリポジトリがyumコマンドでの探索対象となり、ここからパッケージをインストールできるようになる。

 なお、前述のとおりyumのデフォルト設定では署名の検証ができないRPMパッケージはインストールできない。また、署名がされているRPMパッケージでも、それに対応する公開鍵がローカルにインストールされていない場合はインストールができない。署名がされているRPMパッケージをインストールしたい場合、署名に使用した鍵の公開鍵を以下のようにしてインポートしておく必要がある。

# rpm --import RPM-GPG-KEY-hylom

 また、リポジトリの設定ファイルに下記のように「gpgcheck=0」という設定を追加しておくことで、署名の検証を省略することも可能だ。ただしこの場合、署名されていないRPMパッケージを無制限にインストールできてしまうことになるのでその点には注意したい。

# hylom's original yum repository
[hylompkgs]
name=hylom's original RPM packages
baseurl=http://hylom.net/rpmrepo/x86_64/
gpgcheck=0

公開鍵およびリポジトリ設定ファイルをRPMパッケージとして配布する

 独自に作成したリポジトリを利用する場合、先に述べたとおり/etc/yum.repos.dディレクトリ内の設定ファイルと、公開鍵の設定が必要となる。これらをいちいち手動で実行するのは手間がかかるため、これらのファイルおよび設定を自動で行えるRPMパッケージを作成しておくと便利だ。たとえば、独自のリポジトリ名を「hylompkgs」とした場合、以下のようなspecファイルおよび設定を記載したリポジトリ設定ファイルや公開鍵を用意してRPMパッケージを作成しておけば、このRPMパッケージをインストールするだけでリポジトリが利用可能になる。

Name:           hylompkgs
Version:        6
Release:        0
Summary:        hylom's Original Packages for CentOS

Group:          System Environment/Base
License:        GPLv2

URL:            http://hylom.net/rpmrepo/
Source0:        http://hylom.net/rpmrepo/RPM-GPG-KEY-hylom
Source1:        hylompkgs.repo

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildArch:     noarch
Requires:      redhat-release >=  %{version}

%description
This package contains hylompkgs repository GPG key and configuration files.

%prep

%build

%install
rm -rf rm -rf $RPM_BUILD_ROOT

#GPG Key
install -dm 755 install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg%{_sysconfdir}/pki/rpm-gpg
install -pm 644 %{SOURCE0} install -pm 644 %{SOURCE0} $RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg%{_sysconfdir}/pki/rpm-gpg

# yum
install -dm 755 install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/yum.repos.d%{_sysconfdir}/yum.repos.d
install -pm 644 %{SOURCE1} install -pm 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/yum.repos.d%{_sysconfdir}/yum.repos.d

%clean
rm -rf rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%config(noreplace) /etc/yum.repos.d/*
/etc/pki/rpm-gpg/*

%changelog
* Fri Jun 28 2013 hylom <hylom@hylom.net> - 6.0
- Create Package

 また、ここで用意するリポジトリ設定ファイルの例は以下のようになる。

# hylom's original yum repository

[hylompkgs]
name=hylom's original RPM packages
baseurl=http://hylom.net/rpmrepo/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-hylom
enabled=1
gpgcheck=1

 ちなみにこのリポジトリ設定ファイル中の「gpgkey=」項目は、使用する公開鍵ファイルを指定するものだ。この設定を行っておくと、リポジトリからのパッケージインストール時に自動的に指定された公開鍵ファイルがインポートされるようになる。

設定ファイルのインストールなどにも積極的に利用したいRPM

 RPMファイルを作成するのに必要となるspecファイルの編集にはやや知識が必要であるが、既存のspecファイルを編集するだけならそんなに難しいことはない。

 また、RPMはソフトウェアをインストールするための仕組みだと思われていることが多いが、実際にはソフトウェアだけでなく、任意のスクリプトや設定ファイルなど、さまざまなファイルのインストールが可能だ。また、インストール/アンインストール時に任意のコマンドやスクリプトを実行してシステムの設定などを実行することも可能だ。これをうまく利用することで、厳格にサーバーのソフトウェア/ファイル管理を行うことが可能になる。

 ソフトウェアをRPMファイル化してからインストールすることで、圧倒的にファイルの管理が楽になる。たとえばWebサーバーなどをカスタマイズした設定でビルドする場合や複数台に同じ設定ファイルをインストールするといった場合には、ぜひRPMを活用してみてほしい。