切断されたCentOS 7システムを更新する方法の良い解決策を見つけるのに多くの時間を費やしましたが、まだ適切な解決策が見つかりませんでした。
切断されたシステム(RedHat / CentOS)を更新する方法のほとんどのソリューションは、ローカルストレージを作成するか、すべての最新パッケージを含むCD / DVDを使用するように指示します。
私が望むのは、切断されたシステムにインストールされているパッケージのリストを作成し(例:rpm -qaを使用)、そのリストを接続されたシステムにインポートしてすべてのアップデートをダウンロードすることです。私は基本的にこのように動作するスクリプトを書くのに時間を費やしました。スクリプトはリスト内のすべてのパッケージを段階的に調べて、アップデートがあるかどうかを確認し、アップデートがある場合はアップデートをダウンロードします。だからとても良いです。しかし、問題は原則として、パッケージが新しい依存関係を導入できることです。つまり、既存のシステムにまだインストールされていない新しいパッケージを導入できるということです。したがって、この問題を解決するには、スクリプトですべての依存関係を確認し、新しい依存関係が見つかったらダウンロードする必要があります。 yumを繰り返したくないので、オフラインアップデートに使用できるyumスクリプトやツールがすでにあるかどうか疑問に思います。
答え1
方法がありますが、かなりトリッキーでサーバーを台無しにする可能性があるためとても慎重です。
命名法:
- オンライン: リポジトリに接続されたシステム
- オフライン: システムが接続されていません
スピード:
rpm データベースを次から圧縮します。オフラインシステムに送信してオンラインシステム:
cd /var/lib/rpm/
tar -cvzf /tmp/rpmdb.tgz *
scp /tmp/rpmdb.tgz root@online:/tmp
あなたのオンラインシステムをrpmデータベースに置き換えます。オフラインシステム:
cp -r /var/lib/rpm{,.bak} # back up your rpmdb from your online system. Make sure not to lose this!!
rm -rf /var/lib/rpm/*
cd /var/lib/rpm
tar -xvf /tmp/rpmdb.tgz # now your online system pretends to have the rpm database from the offline system. Don't start really installing / uninstalling rpms or you'll break everything
これで、ダウンロードのみを使用して更新をシミュレートします(yumを使用せずにzypperを使用して実行しましたが、似ています)。
zypper up --download-only
これで、ダウンロードしたパッケージをすべてインポートでき、オフラインシステムを更新するのに十分です。
今を復元オンライン機械:
rm -rf /var/lib/rpm
cp -r /var/lib/rpm{.bak,}