LoginSignup
3
6

More than 5 years have passed since last update.

CentOS7にFedoraのパッケージをインストールする

Posted at

目的

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からアーキテクチャが大きく変わる部分があるので、場合によってはビルドできないソフトウェアがあると思います。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6