回答:
より良い方法があるかどうかはわかりませんが(おそらくあります)、必要な規模に応じて、機械の一部にaptitudeの検索機能を使用できます。パターンに一致するパッケージを検索できます。したがって、aptitude search '~i'
インストールされているすべてのパッケージを提供します
ただし、さらに一歩進める必要があります。パッケージマネージャーは、どのパッケージがあなたから直接リクエストされ、どのパッケージが他のパッケージのために引き込まれたのかを知りたいです。その情報がなければ、いことが起こります。そのため、その検索パターンを展開して、自動的にインストールされないパッケージを選択できます。aptitude search '!~M ~i'
検索機能の詳細については、Aptitudeのリファレンスマニュアルを参照してください。
これで、インストールするパッケージのリストができました。あなたはできる出力をフォーマットするだけで、パッケージ名でリストを取得するには-F「%のP」のように、そのコマンドに-fフラグを渡すことで、必要に応じて。
たとえば、マシン1でこれを実行できます。
aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh
そして、新しく作成されたコピーaptshell.sh
に上のファイルをマシン2とし、このコマンドを使用し、マシン2がそれを実行します:
sudo sh aptshell.sh
元と、プロセスを繰り返す機械2新品同様機1、及びオリジナルマシン1新品同様機2。現在、各マシンには、以前は他のマシンにしかなかったすべてのパッケージがあります。
これは古い質問ですが、誰もそれを言っていないので、dpkgとcronで何かできるかもしれません。dpkgのget-selectionsコマンドとset-selectionsコマンドで何か巧妙なことをするcronジョブをセットアップします。
dpkg --set-selections < ~/Dropbox/selections.dpkg
dpkg --get-selections > ~/Dropbox/selections.dpkg
これは提案された解決策ではありません。いずれかのコンピューターで変更を行うたびにselections.dpkgが更新されるようにするために何らかの方法を検討する必要があります...