
第20号(2008年5月)
記事:オープンソースのいいところ
オープンソースのいいところのひとつはソースが自由に読めるところです。
レッドハット製品もオープンソースなので、当然ソースコードを提供しています。ソースコードはプログラミングそのものに興味がなくても、日常的なトラブルシュートやシステムの理解に有用です。
● ソースコードを読む!
Red Hat 製品のソースコードは、Red Hat Networkから入手できます。あるパッケージのソースコードを入手するには、主に以下の方法があります。
・RHNのパッケージのページからダウンロード
・yumdownloader
・ソースCD

図1:RHNのスクリーンショット (矢印部分がソースパッケージへのリンク)
以下では、yumdownloaderを利用した、ソースコードの取得方法をご紹介します。
yumdownloaderはyum-utilsパッケージで提供されています。
rpmbuild は rpm-buildパッケージで提供されています。
● 準備
rpmの作業用ディレクトリを指定するために、 ~/.rpmmacros を以下のように編集します。
%packager Kazuo Moriwaka
%_topdir /home/kmoriwak/rpmbuild
|
作業用のディレクトリを作成します。
$ mkdir ~/rpmbuild
$ mkdir ~/rpmbuild/SPECS
$ mkdir ~/rpmbuild/SOURCES
$ mkdir ~/rpmbuild/BUILD
|
● tarコマンドのソースコードを入手してみましょう。
src.rpm形式で配布されています。
yumdownloader を利用してダウンロードしましょう。
which と rpm -qf をつかってパッケージ名を確認し、yumdownloaderでソースパッケージを入手します。
$ which tar
/bin/tar
$ rpm -qf /bin/tar
tar-1.17-7.fc8
$ yumdownloader --source tar
fedora-source 100% |=========================| 2.1 kB
00:00
tar-1.17-7.fc8.src.rpm 100% |=========================| 2.7 MB
00:03
$ ls -al
合計 2764
drwxr-xr-x 2 kmoriwak kmoriwak 4096 May 13 13:25 .
drwxr-xr-x 51 kmoriwak kmoriwak 4096 May 13 13:21 ..
-rw-r--r-- 1 kmoriwak kmoriwak 2813402 Feb 16 00:19
tar-1.17-7.fc8.src.rpm
|
.src.rpmをインストールします。最初につくった作業用のディレクトリにソースパッケージの内容が展開されます。
$ rpm -ivh tar-1.17-7.fc8.src.rpm
1:tar 警告: ユーザ mockbuild は存在しません - rootを使用します
(警告略)
########################################### [100%]
警告: ユーザ mockbuild は存在しません - root を使用します
(警告略)
|
specファイルはSPECSに、それ以外のファイル(ソースとパッチ)はSOURCESに置かれます。
元のソースコードと差分情報から、RHELで実際に利用されているソースコードを作成します。
cd ~/rpmbuild ; rpmbuild -bp SPECS/tar.spec
|
ここで -bp オプションは、specファイル中の%prep を実行することで、通常ソースコードの展開とパッチの適用をおこないます。
これで、~/rpmbuild/BUILD 内にtar のソースコードが展開されました。
● ソースコード利用のアイデア
ソースコードには直接ビルドしてバイナリをつくったり、改造して動作を変更したりしない場合でも有用な使い道があります。
・メッセージの意味を確認
画面やログに出力されるメッセージの意味がよくわからないとき、ソースコードで対応する部分を検索してよむと意味がはっきりすることがあります。
・上限値の確認
プログラムの引数などで、上限値をみつけるのに、トライアンドエラーではなく、ソースコードで確認することができます。
・動作の確認
ある引数を与えたときにどのように動作するのかなど、細かな動作を確認するためには、ソースコードは必須です。またソースコードレベルで確認することで、確信をもって利用することができます。
・不具合内容の確認
レッドハットからのerrataリリースなどで、変更がおこなわれた時、ある程度の解説は提供されますがソースをよみこなすことでより具体的な修正内容を確認することができます。
ソースコードを活用して便利なRHEL生活をおくりましょう。
レッドハット株式会社/ニュースレター編集部