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


44

だから私は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

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

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

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


私はしばしば、すべてのパッケージ(マイナスlibs)で 'sudo apt-get install'を使用して大きなシェルスクリプトを生成するのと同じことを考えました。もちろん、私はあなたが持っている同じ問題に遭遇します。
チャックR

探し始めるのに最適な場所は、dpkgが実際にその情報に責任があるかどうかを確認することだと思います。そうでなければ、多分それはaptの仕事でしょう。
ハックル

3
手動で行う場合、apt-mark自動パッケージと手動インストールパッケージに関する情報を保存/復元することに興味があるかもしれません
-Lekensteyn

10.04パッケージリポジトリにはありませんか?これはCanonicalリポジトリまたはサードパーティの一部ですか?
0xC0000022L

2
いいえ、それは単なる「参考情報」のコメントです。パッケージのマークを取得および設定するには、apt-mark(aptの一部であるため、既にインストールされている必要があります)を使用します(詳細については、マンページを参照してください)。
htorque

回答:


39

バックアップ:

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)

ありがとう、あなたまたはLekensteynが答えとしてそれを書くように頼もうとしていました。
0xC0000022L

これらのコマンドを使用すると、そのリストからプログラムを再インストールできますか?
スヴェトラーナベルキン

これにより、復元時に余分にインストールされているパッケージを削除できますか?
n611x007

1
autoとの違いを説明できますmanualか?ありがとう。
アント

誤って他のパッケージの束を手動としてマークしました...元に戻す方法はありますか?ありがとう
-dentex

2

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.