RPMのコンパイルオプションを変更してインストールする方法

RPMのコンパイルオプションを変更してインストールする方法
あぱーブログ
2015年5月20日  カテゴリー:Linux  タグ: , , ,
Pocket
LINEで送る

RPM は、CentOSなどRedHat系のOSで使われている、パッケージ管理システムです。実際には RPM の依存関係を考慮して、インストールなどをしてくれる yumコマンド を使って、RPM パッケージを扱うことが多いかと思います。

RPM パッケージに含まれる、ソフトやライブラリはコンパイル済なので、ソースファイルからコンパイル(ビルド)する手間を軽減できます。便利な仕組みなのですが、稀にコンパイルオプションを変更して、インストールしたくなる時があります。そこで今回は、RPM パッケージのコンパイルオプションを変更して、インストールする方法ご紹介いたします。

今回は、SSL/TLSライブラリ「GnuTLS」のコンパイルオプションを変更して、インストールしてみました。

下準備

rpmbuild と yum-utils のインストール

RPMの作成に必要な rpmbuild コマンドと、SRPMのダウンロードに使う yumdownloader (yum-utils) をインストールします。

rpmbuild 実行用の「mockbuild」ユーザを作成

rpmbuild コマンドを root ユーザで実行すると、システムを破損する可能性があるそうです。くわばらくわばら(^^;)

Building RPMs should NEVER be done with the root user. It should ALWAYS be done with an unprivileged user. Building RPMs as root might damage your system. You have been warned.

HowTos/SetupRpmBuildEnvironment - CentOS Wiki より引用

RPM ソースパッケージ(SRPM)のダウンロード

RPM パッケージの元となる、ソースパッケージ(SRPM)をダウンロードします。

rpmbuild 実行用の「mockbuild」ユーザに切換えます。

CentOS-Sourceリポジトリを有効にして、GnuTLS の RPMソースパッケージをダウンロードします。

拡張子「.src.rpm」の SRPMファイルがダウンロードされます。

SPECファイルを修正して、コンパイルオプションを変更

ソースパッケージを rpm コマンドでインストールします。(通常のインストールとは違い、ソースファイルなどが展開されるのみです)

同じ場所に「rpmbuild」というディレクトリが作成され、この中にソースファイルや、SPECファイルが入っています。

SPECファイルの「%build」セクションに、コンパイルオプションの指定があります。
今回はオプションに「--without-tpm」を加えます。

vi rpmbuild/SPECS/gnutls.spec

上記オプションにより、RPMパッケージを作成するのに tpmtool が不要になりますので、下記をコメントにしておきます。

RPM パッケージの作成

修正した SPECファイルを元に、バイナリパッケージを作成します。

依存するライブラリが不足している場合は、以下のようなエラーが表示されます。

root ユーザに切換えて、不足しているライブラリをインストールしましょう。

再度 mockbuild ユーザに切換えて、バイナリパッケージを作成します。(時間がかかります)

rpmbuild/RPMS/ 以下に、バイナリパッケージが作成されます。

作成した RPM パッケージのインストール

普段通り、root ユーザに切換え rpm コマンドで、作成した RPMパッケージをインストールすればOKです。

今回作成した GnuTLS の RPM は、既にインストールされているため「 --force」オプションを付けて強制インストールしました。

終わりに

今回は、CentOS7.1.1503 + Zabbix2.4 で発生する不具合に対応するため、GnuTLS のコンパイルオプションを変更する必要がありました。こういった時にも rpmbuild の仕組みは便利ですね。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です