2007年08月06日

Linux Cソースからrpmパッケージまで

最近Linuxで新しいソフトウェアを入れたいと思ったら、大抵はapt-get installで済ませてしまう。あのライブラリのバージョンが無くて…とか新しすぎて…なんて事も無くなって来た。
 そのちょっと前はrpmコマンドを使ってて、これは依存関係は教えてくれるが自動でその問題を解決してくれるわけじゃない。更にその前はtarball(tarボール)、いわゆる〜.tar.gzというパッケージを取ってきて、configure、make make installというお約束の手順をふんでいたわけだ。
 そもそもLinuxのプログラムはC言語(か他の言語)で書かれたファイルの集まりにしか過ぎないわけで、それをコンパイルコンパイルコンパイルと何度もやった挙句に実行ファイル(バイナリファイル)が使えるようになるのは変わってないはず。ここではそのソースファイルの集まりからRPMパッケージになるまでどのような付加価値が付いてくるのか考えてみる。

 一番最初は make である。makeはおなじみの三つの手順がある。

> ./configure
> make
> make install

configureはインストールされるコンピュータのOS、CPU、入っているライブラリ等を調べる。makeではMakefileに書かれてあるようにコンパイルが実行される。そして最後にmake installで指定の場所に実行ファイルがコピーされる。

 さて、これらをまとめて一つの書庫にしたのが〜.tar.gz、いわゆるtarballである。

「IT media エンタープライズ:Linux Tip ./configure;make;make installにはどんな意味がある?」


 次にRPMである。RPMではよく知られているように、ソース版のSRPMとバイナリ版のRPMがある。両者はビルド(コンパイル)前と後の関係である。ではrpmパッケージの正体は何であろうか。
 平たく言えば、rpmファイル=tarball + SPECファイルと言っていい。SPECファイルにはインストールする場合の依存関係やその手順が書かれている。rpmbuildを行う事によって、tarballとSPECファイルからSRPMまたはRPMができる。

スタックアスタリスク:カスタムRPMの作成

以上の事をまとめるとそれぞれは次のような関係になると思われる。

rpms.jpg

 さて、tarballの時とRPMパッケージの時では何が変わるだろうか。Linuxのオーディオプレイヤーxmmsを見てみる。tarballはSourceForge.netにある。

http://sourceforge.net/projects/xmms/

そして、RPMパッケージは例えばVineLinuxの場合こんなところにある。

http://ftp.kddilabs.jp/pub/Linux/packages/Vine/Vine-3.2/i386/Vine/RPMS/

 まずtarball+SPEC→RPMとなった後は、該当するプロセッサのアーキテクチャが限定される。上述の場合はi386である。これは大抵のパソコンはi386だろうから問題も無いだろうが、組込み機器なんかにLinuxを入れる時に困るだろう。tarballの場合、該当するアーキテクチャのgccがあればよい。
 もう一つはディストリビューションが限定される可能性があると言う事である。上述のはVineだし、Degian/GNUはそもそもRPMではなくDEBというパッケージシステムを採用している。
posted by 柿03 at 17:06| Comment(0) | TrackBack(0) | 情報
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/4935927

この記事へのトラックバック