こんなネタ、アタシが書かなくても大量に情報出てくると思うけどね。自分用メモです。
そもそも「古くからのUnixユーザ」だもんで、ソースからビルドするのは全く厭わない人だし、なんなら自分がビルドした方が信用出来るぜ、と思うこともままあって、これをしたいのはまぁ、「ソースからビルドするのは依存物が多過ぎて大変」なほどの大物か、もしくは「自分ではない誰かのため」の作業の場合ね。だからこんなこと、個人的に滅多にやらない…からこそ、あんま憶えらんなくてな。
今回これをしたかったのはまさしく大物「emacs」だったのな。これは自力でビルドするのはそこそこ大変さ。
まず当然だけれど、ステップがふたつ。一つ目は「対象の rpm をダウンロードすること」であって、ここはどうしたってインターネットに繋がる linux が必要。しかも「インストールしたいターゲットと全く同じバージョンの linux」な。(これがあるからあたしはソースからビルドする方が「楽だ」と思うわけなんだけどね。)
この最初のステップをさ、標準のままの yum で出来たらよかったんだけどね、出来ないんだなぁ…。2つ選択肢がありますよ。1つ目は、yum の「downloadonlyプラグイン」を使うこと。これは別途インストール必要なのねん。RHEL5系では
1 me@host: ~$ yum install yum-downloadonly
RHEL6系(CentOS6とか)では
1 me@host: ~$ yum install yum-plugin-downloadonly
もうひとつは「yumdownloader」:
1 me@host: ~$ yum install yum-utils
で、「欲しいパッケージのダウンロード(今の場合 emacs)」は、
1 me@host: ~$ yum install --downloadonly --downloaddir=/path/to/dldir emacs
yumdownloaderの場合は
1 me@host: ~$ yumdownloader --destdir=/path/to/dldir --resolve emacs
あとはこれでダウンロードした rpm たちを、「なんとかして」(実際これが一番厄介だったりするけどさ)インストールしたい linux 環境に持っていく、と。
ターゲットの linux では downloadonly も yumdownloader も不要で、標準の yum だけあればいい(追記参照):
1 me@host: ~$ yum --nogpgcheck localinstall emacs-23.1-25.el6.x86_64.rpm
とか。同じ場所にまとまってれば、ダウンロードしてきた依存物も拾ってくれるみたい。
なお、この情報は以下2つのサイトから得ました:
- How to use yum to download a package without installing it
- Use yum to install a local package, automatically checking/satisfying dependencies
追記(2015-05-05 15:30):
嘘こいた。インターネットに行ける環境だけで確認したので、うまくいった気になってしまってた。Now retrying…。
追記(2015-05-05 15:39):
一応こんなバカ丸出しのやり方で。依存順じゃないので、何回か繰り返せばいい:
1 me@host: ~$ for i in *.rpm ; do
2 > yum --disablerepo='*' --nogpgcheck localinstall $i
3 > done