自分で作るRPMパッケージ
現在主流のディストリビューションがRed Hat系であることは異論の余地がありません。その特徴の1つに、RPMによるバイナリパッケージの提供があります。このおかげで、煩わしいコンパイル作業が省けます。ただ、いかにパッケージが増えても、自分の欲しいソフトウェアが見つからないことがあります。また、自分に必要なオプションを使うには、出来合いのパッケージでは不向きです。では、思い切って自分でパッケージを作ってみてはどうでしょうか。
関野史朗
2001/1/26
出来合いのRPMパッケージを使ったインストールはとても楽です。RPMファイルを入手して、rpmコマンドを使うだけ。必要なソフトウェアが足りないと、その旨を表示してくれるので、先にそちらをインストールすればいいのです。欲をいえば、Debian GNU/Linuxのapt-getコマンドのように、足りないパッケージも自動的にゲットしてインストールしてくれるとさらに楽なのですが。
もう1つの利点として、不要になったパッケージを簡単に削除できることがあります。新しいソフトウェアを試すときには、この特徴を大いに重宝します。自分でソースコードからコンパイルしてインストールすると、関連するファイルをきれいに削除するのがなかなか大変なのです。まあ、ちゃんとメモしておけばいいのですし、どのみちRPMパッケージにしてもファイルの一覧を作るわけですけれど。
で、いっそのこと自分でRPMパッケージを作ったらどうでしょう。最近はセキュリティパッチも頻繁に出ますが、自分でRPMパッケージを作れれば最新のパッチも簡単に当てられます。オプションを使って、Pentium III用に最適化したバイナリなども作れます。ものによっては不要な機能を削除することで、よりコンパクトなバイナリになったりもします。
さて、RPMを作るといっても、いきなり一から始めるのでは大変です。無難なプログラムで最適化のオプションを変えるあたりからやってみましょう。
■作業用ディレクトリの作成
まず準備として、ホームディレクトリに以下のような構成の作業用ディレクトリを作ります。作業はなるべく一般ユーザーで行い、スーパーユーザーになる時間は減らしましょう。それだけで、ミスによってシステムにダメージを与える可能性が減ります。
|
||||||||||||||
作業用ディレクトリの構成と各用途 |
これらのディレクトリは、次のコマンドで作成できます。
$ cd |
次に、作業用ディレクトリを指定する設定ファイルを作成します。
$ echo "%_topdir /home/isamu-n/RPM" > ~/.rpmmacros |
■SRPMのリビルド
以下、作業はLASER5 Linux 6.4で行いました。とりあえずのサンプルということで何でもよいのですが、簡単なものとしてctagsを使ってみます。まず、CD-ROMなり、Internetからなり、ctags-3.2-1..src.rpmというファイルを入手します。
src.rpmファイルは、ソースコードや依存関係などを記述したspecファイルがまとまったものです。RPMのバイナリファイルを作る一番簡単な方法は、入手したsrc.rpmファイルをrpmコマンドでrebuildすることです。
$ rpm --rebuild ctags-3.2-1..src.rpm |
ですが、入手したファイルでこれを実行したところ、途中でエラーが出てしまいました。具体的には、
ファイルが見つかりません:/var/tmp/ctags-root/usr/man/man1/ctags.1 |
というものです。そこで~/RPM/SPEC/ctags.specを調べてみると、47行目あたりに/usr/man/man1/ctags.1という記述があります。ところが作業ディレクトリである/var/tmp/ctags-root/usr/man/man1を見ると、そこにあるのはctags.1.gzでした。これはrpmのバージョンが変わり、マニュアルを自動的に圧縮するようになったためです。従って、ctags.specの方をctags.1.gzに書き換える必要があります。
今度は、書き換えたspecファイルを引数にして、次のようにrpmコマンドを実行します。
$ rpm -bb ctags.spec |
こうすると、素直に~/RPM/RPMS/i386/ctags-3.2-1.i386.rpmが出来上がります。このままではオリジナルのパッケージと見分けがつきませんから、リリース番号を変えておきましょう。広く一般に流通させる場合は注意が必要ですが、個人や会社内で使うだけであればそれほど厳格に考えなくてもいいでしょう。
~/RPM/SPEC/ctags.specを開いて、冒頭付近にある“Release:”に続く番号を1から2に変えます。さらに、ファイルの最後にある“%Changelog”のセクションにも変更点を書いておくと、後から見直したときに分かりやすくなります。specファイルを書き換えたら、今度は次のオプションでrpmコマンドを実行します。
$ rpm -ba ctags.spec |
これで~/RPM/SRPMS/ctags-3.2-2.src.rpmと~/RPM/RPMS/i386/ctags-3.2-2.i386.rpmが出来上がります。あとはいつもどおり、スーパーユーザーになってctags-3.2-2.rpmをインストールすればOKです。
このとき、作成した各ディレクトリを見ると、BUILDにはctags-3.2というディレクトリができていて、その下にソースコードが展開されています。コンパイルした結果のオブジェクトファイルや実行ファイルもあります。SOURCESディレクトリには、tarコマンドでまとめられたソースコード一式と、適用するパッチがあります。これはソースパッケージをインストールしたためです。
コンパイルオプションを変更したいときは、“%build”セクションに書いてあるのがコンパイル時に実行されるスクリプトなので、ここを適当に変更します。ただし、見れば分かるようにマクロが定義されています。ここを直接書き換えるよりは、マクロの定義を変更した方がよさそうです。例えば~/.rpmrcに
optflags: i386 -O3 -m486 -fno-strength-reduce |
と書いておくと、これが利用されます。
1/3
|
Index | |
自分で作るRPMパッケージ | |
RPMによる管理のメリット | |
SRPMの利用 作業用ディレクトリの作成 SRPMのリビルド |
|
RPMパッケージの自作 パッケージ作成の下準備 specファイルの書き方 rpmコマンドの実行 |
|
Appendix パッケージ作成のrpmオプション 各種リスト |
Linux Square全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|