yumの使い方レベルの話なので、ほぼ自分用のメモです。
やりたいこと
複数の環境(本番・開発など)で別々の時期にパッケージインストール、更新をする際に、パッケージバージョンを合わせられるようにyum update
を実行できるようにしたい
環境
よくあるインフラ運用のシーンを想定し、ここでは以下の環境を想定する。
- 開発検証環境(今日作業する)
- 本番環境(本番リリースである1ヶ月後に作業する予定)
解決方法
環境数や範囲があまりにも多い場合はキャッシュリポジトリを作るといった大掛かりなことが考えられるが、今回は数台レベル想定なので、ローカルキャッシュを用いる。
実際の手順
開発環境でyum update
する。
# yum update
これで開発環境はその日時点の最新状態になる。
次に本番環境でリポジトリのメタ情報のキャッシュ作成とパッケージ取得を行う。
# mkdir repocache
# yum update --downloadonly --downloaddir=repocache
ポイントは--downloadonly
オプション。
パッケージの取得まで行うが、インストールは行わず処理を終了してくれる。
ここではyum update
で更新対象となったパッケージ群のrpmファイルがrepocache
フォルダに保存される。
そして日を改め、本番環境でリリース作業を行う時、キャッシュからアップデートを行う。
# yum -C update --downloaddir=repocache
-C
オプションを使うことで、最新のリポジトリメタ情報を取得しに行かず、キャッシュからupdate
の対象を選びに行く。
そして、ダウンロード済みのrpmファイル郡は全部保存されているため、保存先を--downloaddir
オプションで指定してあげることで無事キャッシュからyum update
ができる。
これで2つの環境のパッチレベル・パッケージバージョンは同一の状態を成立できる。