だから私は1台のマシンで実行できます:
dpkg --get-selections '*' > selection.txt
別のマシンで:
dpkg --set-selections < selection.txt
...次のいずれかが続きます:
aptitude install
apt-get -u dselect-upgrade
...そのパッケージをインストールします。
ただし、パッケージ(たとえばxyz
)が別のパッケージの依存関係(abc
)として自動的にインストールされたかどうかなど、プロセスで一部の情報が失われるようです。 apt-get --purge remove abc
のようなことをするときはいつでもそれを見ることができます。元のマシンでは、パッケージxyz
がabc
の依存関係としてインストールされ、apt-get autoremove
を使用して削除できることが通知されます。
今、私はdeborphan
とdebfoster
を知っていますが、手元にある(単純な)タスクを考えると、それらを使用するのは面倒です。
上記の選択の保存と復元は、インストールされたパッケージの微妙な依存関係を復元するのに十分ではないようです。
パッケージ管理のためにメタデータの完全なセットをバックアップし、その全体を復元する方法はありますか?
バックアップ:
apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst
戻す:
Sudo apt-mark auto $(cat pkgs_auto.lst)
Sudo apt-mark manual $(cat pkgs_manual.lst)
この質問に対する選択された回答は不完全であり、機能しません(または機能しなくなります)。痛みを伴う修正は、bash for-loopを使用して出力* .lstファイルを解析し、apt install
にフィードすることです。ただし、悪い選択なので、ここでは説明しません。
より良い選択は、UnixおよびLinux Stackexchangeの この回答 に見られるように、apt-clone
を使用することです。これにより小さなファイルが作成されます(私のシステムでは約100K以下)。伝えられるところでは、それは少しの労力や痛みでパッケージをクローンします。
要するに、元のマシンでは:
apt-clone clone `uname -n`
次に、クローンを作成するマシンで、クローンファイルをコピーして実行します。
apt-clone restore original-machine-name.apt-clone.tar.gz
このページは最初のWeb検索で表示されたため、ここにこの回答を含めますが、他の回答には含まれていません。この方法はずっと簡単に見えます。