実現したいこと
あるパッケージをインストールする際に必要となる RPM パッケージをすべて手元にダウンロードしたい。
インターネットへの接続が行えない閉鎖環境に RPM ファイルを持ち込んでローカルインストールしたいというようなケースで、このような需要が発生する。
実現方法
yum --downloadonly
オプションを利用することで実現できる。
以下コマンドを実行すると、 mariadb と、 mariadb が依存する mariadb-libs の RPM パッケージがダウンロードできていることがわかる。
$ sudo yum --downloadonly install mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
...
Background downloading packages, then exiting:
No Presto metadata available for base
(1/2): mariadb-libs-5.5.68-1.el7.x86_64.rpm | 760 kB 00:00:01
(2/2): mariadb-5.5.68-1.el7.x86_64.rpm | 8.8 MB 00:00:02
--------------------------------------------------------------------------------------------------------------------------
Total 3.3 MB/s | 9.5 MB 00:00:02
exiting because "Download Only" specified
パスは以下のように確認できる。
$ sudo find / -name mariadb-5.5.68-1.el7.x86_64.rpm 2>/dev/null
/var/cache/yum/x86_64/7/base/packages/mariadb-5.5.68-1.el7.x86_64.rpm
$ sudo find / -name mariadb-libs-5.5.68-1.el7.x86_64.rpm 2>/dev/null
/var/cache/yum/x86_64/7/base/packages/mariadb-libs-5.5.68-1.el7.x86_64.rpm
注意事項
なお、閉鎖環境に依存パッケージの一覧を持ち込んでローカル適用したいという場合、パッケージ取得のために可能な限り、本番環境と同様の環境を作成する必要があることに注意。
例えば、すでにインストール済みのパッケージはローカルインストールでパッケージがダウンロードされない。
これは依存パッケージについても同様である。
例えば先ほどの例において、すでに mariadb-libs をインストール済みの環境で同様のコマンドを実行すると、 mariadb-libs パッケージはインストールされない。
$ sudo yum install /var/cache/yum/x86_64/7/base/packages/mariadb-libs-5.5.68-1.el7.x86_64.rpm
Loaded plugins: fastestmirror
Examining /var/cache/yum/x86_64/7/base/packages/mariadb-libs-5.5.68-1.el7.x86_64.rpm: 1:mariadb-libs-5.5.68-1.el7.x86_64
...
Complete!
$ sudo rm -rf /var/cache/yum/*
$ sudo yum --downloadonly install mysql
Loaded plugins: fastestmirror
Determining fastest mirrors
...
Dependencies Resolved
==========================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================
Installing:
mariadb x86_64 1:5.5.68-1.el7 base 8.8 M
Transaction Summary
==========================================================================================================================
Install 1 Package
Total download size: 8.8 M
Installed size: 49 M
Background downloading packages, then exiting:
mariadb-5.5.68-1.el7.x86_64.rpm | 8.8 MB 00:00:10
exiting because "Download Only" specified
先ほどと異なり、mariadb-libs のパッケージが存在しないことが確認できる。
$ sudo find / -name mariadb-libs-5.5.68-1.el7.x86_64.rpm 2>/dev/null
$