目的
CentOS7(≒Redhat Enterprise Linux 7)はFedora 19に基づいて作成されていますが、Fedora 19の豊富なソフトウェア(パッケージ)のすべてを利用できるわけではありません。
この文書は、Fedora 19に存在しCentOS7に存在しないパッケージを、Fedora 19のソースコードから構築し、導入する方法を説明します。
準備
rootで実行
以降の手順はrootユーザで実施します。
パッケージのアップデート
あらかじめパッケージをアップデートしておきます。
yum update
ビルドの準備
ビルド用のパッケージ群をインストール
ビルドするためのgccなどのソフトウェアを以下のコマンドでまとめてインストールします。
yum groupinstall "Development Tools"
ビルドに必要な環境構築
rpmdevtoolsパッケージをインストールします
yum install rpmdevtools
ビルドに必要な環境を構築するために、以下のコマンドを実行します
rpmdev-setuptree
mockbuildユーザの作成
作らなくてもかまわないのですが、後の手順で余計なエラーメッセージを出力させないために、mockbuildユーザを作成します
useradd mockbuild
なお、本来ならこのmockbuildユーザでビルドを行うことが望ましいですが、今回は頻繁にyumコマンドを発行するため、以降の操作はrootユーザで実施します。
公開鍵のインポート
Fedora 19の公開鍵を
https://fedoraproject.org/ja/keys
から取得しインポートします。
この公開鍵をインポートすることで、後の手順で取得するrpmが確かにFedora Projectから提供されていることを証明できます。
wget https://fedoraproject.org/static/FB4B18E6.txt
rpm --import FB4B18E6.txt
wget https://fedoraproject.org/static/BA094068.txt
rpm --import BA094068.txt
ビルドとインストール
CentOS 7では日本語インプットメソッドがibus-anthyからibus-kkc(Kana Kanji)に変わってしまい、ibus-anthyはofficialなパッケージとして存在しません。
そこで、Fedora 19からibus-anthyのソースコードを取得し、CentOS 7用のパッケージを作成してみます。
以下の手順ではホームディレクトリで作業します。
cd ~
ibus-anthyのビルド
ibus-anthyのソースrpmをダウンロードします。
wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/19/Everything/source/SRPMS/i/ibus-anthy-1.5.3-1.fc19.src.rpm
ダウンロードしたソースrpmをインストールします。
rpm -ivh ibus-anthy-1.5.3-1.fc19.src.rpm
ホームディレクトリにrpmbuildというディレクトリが作成されます。
rpmbuildディレクトリ内は以下のディレクトリで構成されています。
- BUILD
- ビルドするためのワークディレクトリです。 - RPMS
- ビルドにより作成されたrpmファイルが格納されます。 - SOURCES
- ソースコードのtarボール(圧縮ファイル)やパッチが格納されます。 - SPECS
- ビルド、rpm作成のための情報が記述されているspecファイルが格納されます。 - SRPMS
- ビルドによる作成されたソースrpmファイルが格納されます。
ビルドを行うためには、ビルドするためのソフトウェア群が必要です。
これらのソフトウェアをまとめてインストールするために、以下のコマンドを実行します。
yum-builddep ~/rpmbuild/SPECS/ibus-anthy.spec
すると、以下のようなエラーが表示されてしまいました。
...
Error: anthy-devel のパッケージが見つかりません
このエラーは、ibus-anthyのビルドにはanthy-develが必要ですがCentOS7の標準パッケージとして存在しない、ことをを意味します。
anthyのビルド
では、先ほどまでの手順を用いて、先にanthyをソースコードからビルドし、インストールしてみます。
wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/19/Everything/source/SRPMS/a/anthy-9100h-21.fc19.src.rpm
rpm -ivh anthy-9100h-21.fc19.src.rpm
yum-builddep ~/rpmbuild/SPECS/anthy.spec
anthyのビルドに必要なソフトウェアまでインストールできました。
anthyをビルドするためにrpmbuildコマンドを利用します。
今回はSPECファイルを用いてビルドしrpmを作成したいので、以下のコマンドを実行します。
rpmbuild -bb ~/rpmbuild/SPECS/anthy.spec
rpmbuildコマンドは無事に完了しました。
作成されたrpmは、~/rpmbuild/RPMS/
ディレクトリに格納されます。
anthy-develをインストールします。
anthy-develのインストールには、anthyのインストールも必要です。
インストールはyum localinstall
コマンドで実施します。
yum localinstall ~/rpmbuild/RPMS/x86_64/anthy-9100h-21.el7.centos.x86_64.rpm
yum localinstall ~/rpmbuild/RPMS/x86_64/anthy-devel-9100h-21.el7.centos.x86_64.rpm
無事インストールが完了しました。
ではyum-builddepコマンドを再実行し、ibus-anthyに必要なパッケージを取得します
yum-builddep ~/rpmbuild/SPECS/ibus-anthy.spec
今度は問題なく完了します。
最後に、生成されたibus-anthyをインストールしましょう
rpmbuild -bb ~/rpmbuild/SPECS/ibus-anthy.spec
yum localinstall ~/rpmbuild/RPMS/x86_64/ibus-anthy-1.5.3-1.el7.centos.x86_64.rpm
あれ、今度はkasumiがないと、怒られてしまいました。
kasumiはibus-anthyから利用する辞書ツールです。
kasumiのビルド
今までの手順を用いてkasumiをインストールします
wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/19/Everything/source/SRPMS/k/kasumi-2.5-11.fc19.src.rpm
rpm -ivh kasumi-2.5-11.fc19.src.rpm
yum-builddep ~/rpmbuild/SPECS/kasumi.spec
rpmbuild -bb ~/rpmbuild/SPECS/kasumi.spec
yum localinstall ~/rpmbuild/RPMS/x86_64/kasumi-2.5-11.el7.centos.x86_64.rpm
無事インストール完了しました。
ibus-anthyのインストール
ibus-anthyのインストールを再々チャレンジしてみます。
yum localinstall ~/rpmbuild/RPMS/x86_64/ibus-anthy-1.5.3-1.el7.centos.x86_64.rpm
無事インストールできました。
Tips
その他、ビルドする際のTipsをまとめました。
ビルド環境は別のマシンで行う
ビルドするためには、多くのビルド用のパッケージが必要となり、OSの環境を汚します。
したがって、実際の利用環境とビルド環境を分け、ビルド環境で作成したrpmを実際の利用環境にインストールするのが好ましいです。
ビルドするためのパッケージが存在しない場合
ビルドするためのパッケージが存在しない場合、都度Fedora 19からパッケージを取得してビルドしても良いのですが、面倒です。
例えば、ビルドにpython3-develを利用している場合がありますが、CentOS7ではpython3を提供していません。
このような場合は、SPECファイルを開き
BuildRequires: python3-devel
を
BuildRequires: python2-devel
に変更して、ビルドしてみる価値はあります。
同様に微妙にパッケージ名が異なる場合がありますので、パッケージ名を修正する、もしくは必要と思われるパッケージを推測しインストールのうえ、該当するBuildRequires行をコメントアウトする、等の工夫が必要になってくることもあります。
セキュリティホールのないソフトウェアからビルドする
今回の手順では最新のソースrpmを取得していませんが、セキュリティホールやバグのない最新のrpmを取得してビルドするのが望ましいです。
Fedora 19であれば、
http://ftp.jaist.ac.jp/pub/Linux/Fedora/updates/
以下のアップデートされたパッケージを取得しましょう。
なお、Fedora 19のサポートはFedora 21リリースの1ヵ月後までですので、それ以降はFedora 20以降の最新のパッケージを取得してビルドするのがよいかもしれません。
ただし、Fedora 20以降はCentOS7からアーキテクチャが大きく変わる部分があるので、場合によってはビルドできないソフトウェアがあると思います。