web-dev-qa-db-ja.com

dpkgからのすべてのデータと依存関係の復元--set-selections '*'

だから私は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のようなことをするときはいつでもそれを見ることができます。元のマシンでは、パッケージxyzabcの依存関係としてインストールされ、apt-get autoremoveを使用して削除できることが通知されます。

今、私はdeborphandebfosterを知っていますが、手元にある(単純な)タスクを考えると、それらを使用するのは面倒です。

上記の選択の保存と復元は、インストールされたパッケージの微妙な依存関係を復元するのに十分ではないようです。

パッケージ管理のためにメタデータの完全なセットをバックアップし、その全体を復元する方法はありますか?

44
0xC0000022L

バックアップ:

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)
39
htorque

この質問に対する選択された回答は不完全であり、機能しません(または機能しなくなります)。痛みを伴う修正は、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検索で表示されたため、ここにこの回答を含めますが、他の回答には含まれていません。この方法はずっと簡単に見えます。

2
casualcoder