web-dev-qa-db-ja.com

複数のコンピューター間でのapt-getインストールの同期

複数のPC間でインストール(および削除)を同期する方法はありますか?

できればdropboxで-ファイルの同期を保つためにすでにそれを使用しているので。

パラメーターをファイルに保存するapt-get installおよびapt-get removeコマンドのエイリアス(インストール用、削除用)と、ファイル内のすべてのエントリーを読み取り、それぞれを実行する別のコマンドを考えましたコマンド。これは現実的なアプローチですか?

11
Chris

puppet を使用して、インストールするパッケージを指定する構成ファイルを作成できます。また、puppetmasterサーバーではなくDropboxを使用してマシン間でpuppet構成を同期し、さらに定期的にpuppetを実行して実装するcronジョブを使用できます構成の変更。

7
Mike Scott

より良い方法があるかどうかはわかりませんが(おそらくあります)、必要な規模に応じて、機械の一部にaptitudeの検索機能を使用できます。パターンに一致するパッケージを検索できます。したがって、aptitude search '~i'はインストールされたすべてのパッケージを提供します

ただし、さらに一歩進める必要があります。パッケージマネージャーは、どのパッケージがあなたから直接リクエストされ、どのパッケージが他のパッケージのために引き込まれたのかを知りたいです。その情報がなければ、いことが起こります。そのため、その検索パターンを拡張して、自動的にインストールされないパッケージを選択できます:aptitude search '!~M ~i'

検索機能の詳細については、 Aptitudeのリファレンスマニュアル をご覧ください。

これで、インストールするパッケージのリストができました。 -F(%p)のように、コマンドに-Fフラグを渡すことで、必要に応じて 出力のフォーマット を実行し、パッケージ名のみのリストを取得できます。


たとえば、これをmachine 1で実行できます:

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

次に、新しく作成したaptshell.shファイルをmachine 2にコピーし、machine 2そこで実行するには:

Sudo sh aptshell.sh

次に、元のmachine 2を新しいmachine 1として、元のmachine 1は新しいmachine 2として。現在、各マシンには、以前は他のマシンにしかなかったすべてのパッケージがあります。

9
Dylan McCall

これは古い質問ですが、誰もそれを言っていないので、おそらくdpkgとcronで何かをすることができます。 dpkgのget-selectionsおよびset-selectionsコマンドを使用して巧妙な処理を行うcronジョブをセットアップします。

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

これは提案された解決策ではありません。いずれかのコンピューターで変更を行うたびにselections.dpkgが更新されるようにするために何らかの方法を検討する必要があります...

2
John

Ubuntu Software Centerには、インストールされたパッケージを複数のコンピューター間で同期する機能があります。 Ubuntu Oneアカウントを使用してパッケージを保存します。 File > Sync Between Computers...を選択して、Ubuntu Oneアカウントでログインします。

Syncing packages with Ubuntu Software Center

現在、機能には何らかの制限があります。たとえば、デフォルトパッケージ(ppasではなく)のみがサポートされており、インストールするパッケージを手動で選択する必要があります(これは非常に良い機能です)。詳細な手順については、 この記事 を参照してください。

2
Amir Ali Akbari