ディスクがフォーマットされた後の簡単/自動再インストールのためにインストール済みパッケージのリストを作成する方法


8

私はシステムを32ビットから64ビットに変更し、以前と同じDebian Squeezeを使用しますが、以前にインストールしたプログラムをすべて失いたくないのは、すべての名前を覚えていないためです。

だから私はこれを行うコマンドが欲しかった、システムに付属している標準のプログラムではなく、ファイルにインストールしたすべてのプログラムの名前を保存し、他のシステムを使用しているときはすべてを自動的にインストールするためのファイルとディレクトリ。

もう1つの質問:で手動でインストールされたプログラムでこれを行うことは可能dpkg-i package.debですか?もしそうなら、どうすればそれを行うことができますか?

回答:


7

使ってみましたdpkg --get-selections >packagesか?一部のパッケージを除外する場合は、出力ファイルを編集できますpackages。完了したら、それをターゲットシステムに転送して、次のように言います。

dpkg --set-selections <packages

そして、パッケージはインストール用にマークされます。また、おそらく言う必要がありますaptitude update; aptitude dist-upgrade

他の質問:これらのパッケージがi386アーキテクチャパッケージでありmultiarch、インストール済みの場合は.deb、通常のでをインストールできますdpkg -i package.deb。しかし、ケースバイケースで調査し、それらを含むこれらのパッケージの64ビットバージョンをインストールする方がおそらく良いでしょう。


おかげで、すでにインストールされているパッケージがi386アーキテクチャであると言ったとき、あなたは本当に私を助けました、私はそれについて考えていませんでした。
Zignd

9

現在のDebianバージョンでは、明示的にインストールされたパッケージのリストを取得できます。

apt-mark showmanual

apt-mark showmanual存在しないDebianの古いバージョンを実行している場合、または追加の選択を実行したい場合は、aptitudeを使用できます。

aptitude search '~i !~M' -F %p >package.list

~iインストールされたパッケージと一致します。!~M他のパッケージの依存関係として自動的にインストールされたパッケージを省略します。-F %pパッケージ名のみを含むように出力形式を変更します。

後でこれらのパッケージをインストールできます

apt-get install $(cat package.list)

Debian squeezeにははありませんがapt-mark showmanualapt-mark showauto自動インストールされたパッケージをリストするsqueezeにはあります。これを使用する場合、で古いシステムのすべてのパッケージを一覧表示しdpkg --get-selections >package.list、これらのすべてを復元してから、で自動パッケージをマークできますapt-mark markauto。ユースケース(32ビットから64ビット)の場合、このアプローチでは、アーキテクチャーごとに名前が異なるため、いくつかのライブラリーが手動としてマークされたままになる可能性があります。

ユースケースがパッケージのセットを保持してアーキテクチャを変更するのではなく、同一のインストールを再現することである場合、すべてを自動的に実行するapt-clone(wheezy以降Debianで配布)と呼ばれるツールがあることに注意してください。


残念ながら、これは完璧ではありません。これを行うと、最初に表示されるのは「acl」で、明示的にロードしていません。rdependsを見ると、systemdはこれに依存しているようで、Debian 8ではすでにインストールされています。また、systemdもこのリストに含まれています。そのため、systemdとaclがインストールされていても、aptitudeはそれらを「自動」として識別しません。これは適性の欠陥かもしれませんか?
Liam

@Liamインストーラーはどのパッケージも自動としてマークしないと思います。そうしたとしても、ライブラリにとっては理にかなっているaclかもしれませんが、などのパッケージはベースシステムの重要な部分と見なされ、手動でインストールされたものとしてマークされます。これはユーザーではなく初期インストーラーによって「手動」でインストールされましたが、それでも「自動インストール」の意味は「依存関係を壊さない場合は安全に削除できる」であり、システムの動作が適切に機能しません。
Gilles「SO-邪悪なことをやめなさい」

1

そうするための簡単で標準的な方法がわかりません。「システムに付属の標準プログラム」とその他を区別できないため、dpkgのログとオプションをいじる必要があると思いますdpkg

これは正直ではありません私は太字の大文字のテキストを使用してそれを明確にすることを好みますが、あなたはこのようなことをすることができます

  • インストールされているソフトウェアのリストを/var/log/dpkg.log*ファイルから抽出します。

  • システムのインストール中にインストールされたものを削除します。(インストール時間を使用してそれらを検出します)

  • リストを次のdpkg --get-selections形式で保存します

エボラ!システムが稼働しているときに、プログラムを再インストールします

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