yum でソースコードをダウンロードしたい

yumリポジトリからソースファイルをダウンロードするには − @IT

標準のyumコマンドには、ソースのRPM(SRPM)ファイルをダウンロードする機能がない。

らしい…。先に教えてください…。
どうりで man yum で探しても見つからないわけだな。source とかキーワードにして探してたよ…。


ダウンロードできるようにするためには yum-utils パッケージが必要なので、まずインストール。

# yum install yum-utils

そして、yumdownloaderコマンドに --sourceオプションを付けて実行すればパッケージ(拡張子.src.rpm)をダウンロードできる。

# yumdownloader --source パッケージ名


試しに、lsコマンドが含まれるパッケージを yumdownloader でダウンロードしてみる。
まず ls がどのパッケージに含まれるか調べる。

# rpm -qf /bin/ls
coreutils-6.9-3.fc7

カレントディレクトリにダウンロード。

# yumdownloader --source coreutils-6.9-3.fc7

展開(解凍)用のディレクトリを作っておく

% mkdir fedora_coreutils

カレントディレクトリに展開。大量のファイルが展開されるので注意。(参考:@IT:RPMパッケージからファイルを取り出すには

% rpm2cpio ../coreutils-6.9-9.fc7.src.rpm| cpio -id

ls.c の入ってるディレクトリを展開して、そこに移動。

% tar -jxf coreutils-6.9.tar.bz2
% cd coreutils-6.9/src

RPMファイルの解凍をもっと簡単にする

RPMファイルの解凍がめんどくさいなと思って調べたら、もっと簡単な方法があった。(参考:RPMパッケージを展開するには − @IT
必要なパッケージをインストール。

% sudo yum install rpmdevtools

RPM ファイルの展開。パッケージ名と同じ名前のディレクトリ内に展開してくれるので、新しくディレクトリを作らなくて済む。

% rpmdev-extract coreutils-6.9-9.fc7.src.rpm