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
yum でインストールされたファイルの一覧を検索したい
「yum install パッケージ名」でインストールするのは楽だけど、どこに何のファイルがあるか分からないと困るときがある(設定ファイルを編集したいときとか)。もちろん、ごり押しで find を使って探す方法もあるけど、別のもっと賢い方法を見つけたのでメモしておく。
あまり良い例じゃないけど、例えば、ls が入ってるパッケージって coreutils だっけ?っていうときに、
% rpm -ql coreutils | grep -E '*/ls' /bin/ls /usr/share/man/man1/ls.1.gz
とすれば、確かめられる。
もっと現実的にありそうな場合だと、「Samba ずっと前に yum でインストールしたけど、設定ファイルの smb.conf ってどこにあるんだろう?」っていうときに
% rpm -ql samba | grep smb.conf /usr/share/doc/samba-3.0.26a/LDAP/smbldap-tools-0.9.2/smb.conf
とすれば、確かめられて便利かも。