私はDebianインスタンスにパッケージマネージャとしてaptをインストールし、多くのパッケージをインストールしました。インターネット接続なしで別のシステムに同じパッケージをインストールしたいと思います。依存関係で並べ替えられたインストール済みパッケージのリストを作成し、別のコンピュータにインストールできるようにパッケージの.debをインポートする簡単な方法はありますか?
私の目標は、パッケージリストと.debファイルを再生成し、それを使用して更新することで他のコンピュータを更新できることです。
答え1
インストールされたパッケージのリストを取得します。
dpkg --get-selections '*' > /tmp/selections.txt
インターネット接続可能なコンピュータにインストールされているパッケージを再ダウンロードするには:
apt-get clean awk '$2=="hold" || $2 == "install" {print $1}' /tmp/selections.txt | xargs -r apt-get -d -y reinstall
インストールされているパッケージのリストが大きすぎて1つのコマンドラインに表示されないようにするためにここで使用されます/var/cache/apt/archives/
。 xargs
注:実行はapt-get clean
オプションです。.deb
にすでに存在するすべてのファイルが削除されます/var/cache/apt/archives
。これは、単にインターネットではなくコンピュータにコピーする必要があるパッケージの数を最小限に抑えるためです(たとえば、以前のバージョン、削除されたパッケージなどがまだディレクトリに存在します)。欠点は、インストールされているすべてのパッケージがすでにアーカイブディレクトリにある場合でも再ダウンロードされることです。
インターネットではなくコンピュータ
/tmp/selections.txt
にコピーします。/tmp/
/var/cache/apt/archives
インターネット以外のコンピュータの同じディレクトリにすべてをコピーします。 scp、rsync、USBスティック、外付けハードドライブなどの方法は重要ではありません。重要なのは、/var/cache/apt/archives
ターゲットマシンにコピーされることです。インターネットではなくターゲットコンピュータで実行します。
dpkg --set-selections < /tmp/selections.txt apt-get dist-upgrade
apt-get dist-upgrade
以前にターゲット コンピューターにはインストールされていたが、他のコンピューターにはインストールされていないパッケージを削除するには、次の手順を実行します。dpkg --clear-selections
今後ランニングdpkg --set-selections
。
dpkg
およびオプションの詳細については、マニュアルページを--get-selections
参照してください。--set-selections
--clear-selections