[Linux] yumで一度利用したパッケージをキャッシュする

小ネタです。 AnsibleのPlaybookを作成していたのですが、何度もyumで同じパッケージのインストールを繰り返していると、処理に時間はかかるしネットワーク利用量(利用料)もバカになりません。

そこで一度でも利用したパッケージはローカルにキャッシュするよう設定します。

yumのパッケージをキャッシュする

設定

/etc/yum.confを開き、keepcache1を設定します(デフォルトは0)。以上で設定は終わりです。あとはいつも通りyum installするだけ。

$ sudo vi /etc/yum.conf 
keepcache=1

キャッシュ先のディレクトリを変更したい場合はcachedirも編集しておきます。

$ sudo vi /etc/yum.conf 
cachedir=/var/cache/yum/$basearch/$releasever

ちなみにどんどんファイル容量が肥大化していくため最終的にディスクフルの原因になりかねないので、用事が終わったら設定を元に戻すか、定常的に利用する場合には後述する方法でお掃除する必要があります。

キャッシュされたファイルの確認

キャッシュされたファイルは/var/cache/yum/の下にいます。

$ ls -lh /var/cache/yum/x86_64/7/
合計 8.0K
drwxr-xr-x. 4 root root 278  830 14:00 base
drwxr-xr-x. 4 root root 183  830 14:00 extras
drwxr-xr-x. 4 root root 137  830 14:00 mysql-connectors-community
drwxr-xr-x. 4 root root 137  830 14:00 mysql-tools-community
drwxr-xr-x. 4 root root 137  830 14:00 mysql57-community
-rw-r--r--. 1 root root 128  830 14:00 timedhosts
-rw-r--r--. 1 root root  79  830 13:14 timedhosts.txt
drwxr-xr-x. 4 root root 183  830 14:00 updates

特定のパッケージが存在するかどうか確認する場合はfindしてやります。以下はmysql関連のパッケージ一覧を表示します。

$ find /var/cache/yum -name 'mysql*' | grep '.rpm'

キャッシュをクリアする

yum cleanコマンドでキレイにお掃除できます。

$ sudo yum clean packages

参考ページ