Synchronisieren von apt-get-Installationen zwischen mehreren Computern

11

Gibt es eine Möglichkeit, meine Installationen (und Entfernungen) zwischen mehreren PCs zu synchronisieren?

Am besten mit Dropbox - da ich das bereits verwende, um meine Dateien synchron zu halten.

Ich dachte an einen Alias ​​für die Befehle apt-get installund apt-get remove, der die Parameter in einer Datei speichert (einen für die Installation, einen für das Entfernen) und einen weiteren Befehl, der alle Einträge in der Datei liest und den entsprechenden Befehl ausführt. Ist das ein realistischer Ansatz?

Chris
quelle

Antworten:

7

Sie können Puppet verwenden , um Konfigurationsdateien zu erstellen, in denen angegeben wird, welche Pakete installiert werden sollen, und Sie können Dropbox anstelle eines Puppetmaster-Servers verwenden, um die Puppet-Konfiguration zwischen Computern zu synchronisieren, sowie einen Cron-Job, um Puppet regelmäßig auszuführen und Konfigurationsänderungen zu implementieren.

Mike Scott
quelle
Dies ist eine großartige Idee für eine kleine Anzahl von Maschinen. In einer größeren Umgebung sollten Sie auf jeden Fall einen Puppenspieler haben. Wo ich arbeite, verwalten wir Tausende von Maschinen mit Puppen.
Ed Manet
9

Ich weiß nicht, ob es einen besseren Weg gibt (wahrscheinlich gibt es einen), aber je nach dem von Ihnen benötigten Maßstab können Sie die Suchfunktion von aptitude für einen Teil der Maschine verwenden. Hier können Sie nach Paketen suchen, die einem Muster entsprechen. Also, aptitude search '~i'gibt Ihnen alle installierten Pakete

Wir müssen jedoch noch einen Schritt weiter gehen. Der Paketmanager möchte wissen, welche Pakete direkt von Ihnen angefordert wurden und welche gerade aufgrund anderer Pakete eingezogen wurden. Ohne diese Informationen können hässliche Dinge passieren. Wir können dieses Suchmuster also erweitern, um Pakete auszuwählen, die nicht automatisch installiert werden:aptitude search '!~M ~i'

Die Suchfunktion wird im Referenzhandbuch von Aptitude ausführlich beschrieben .

Jetzt haben Sie Ihre Liste der zu installierenden Pakete. Sie können die Ausgabe nach Bedarf formatieren, indem Sie das Flag -F an diesen Befehl übergeben, z. B. -F '% p', um eine Liste mit nur Paketnamen zu erhalten.


Zum Beispiel könnten Sie diese auf laufen Maschine 1 :

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

Kopieren Sie dann die neu erstellte aptshell.shDatei auf Computer 2 und verwenden Sie diesen Befehl auf Computer 2 , um sie dort auszuführen:

sudo sh aptshell.sh

Wiederholen Sie dann den Vorgang mit der Originalmaschine 2 als neuer Maschine 1 und der Originalmaschine 1 als neuer Maschine 2 . Jetzt hat jede Maschine alle Pakete, die früher nur auf der anderen waren.

Dylan McCall
quelle
Es wäre großartig, Versionen einzuschließen ... Maschine 1 hat möglicherweise Versionen zurückgehalten, und Maschine 2 sollte dies widerspiegeln
Rondo
zB Eignung -F "% c% p% V" - Suche nach deaktivierbaren Spalten '! ~ M ~ i' | awk -F "" '{print "apt-get -y install" $ 2 "=" $ 3}'> aptshell.sh
Rondo
2

Dies ist eine alte Frage, aber da niemand sie gesagt hat, könnten Sie möglicherweise etwas mit dpkg und cron tun. Richten Sie einen Cron-Job ein, der mit den Befehlen get-selections und set-selections von dpkg etwas Kluges macht.

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


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

Dies ist keine vorgeschlagene Lösung. Sie müssen einen Weg finden, um sicherzustellen, dass die Datei selections.dpkg aktualisiert wird, wenn Sie auf einem der Computer Änderungen vornehmen.

John
quelle
2

Das Ubuntu Software Center verfügt über eine Funktion zum Synchronisieren installierter Pakete zwischen mehreren Computern. Es verwendet Ihr Ubuntu One-Konto zum Speichern von Paketen. Wählen Sie einfach File > Sync Between Computers...Ihr Ubuntu One-Konto aus und melden Sie sich an.

Synchronisieren von Paketen mit Ubuntu Software Center

Derzeit hat es eine irgendwie eingeschränkte Funktionalität, zum Beispiel unterstützt es nur Standardpakete (nicht Standardpakete ppa), und Sie müssen manuell auswählen, welche Pakete installiert werden sollen (dies kann als positive Funktion angesehen werden). Ausführliche Anweisungen finden Sie in diesem Artikel .

Amir Ali Akbari
quelle
-2

Sie können Dropbox nicht zum Synchronisieren von Paketinstallationen verwenden.

Synaptic hat eine Möglichkeit, eine Paket-Download-Liste zu speichern, aber ich bin nicht sicher, ob es sich um "alles handelt, was jemals installiert wurde" und nicht nur um "dies sind die Pakete, die ich dieses Mal herunterladen möchte".

Broam
quelle
-1 Da Ihre Annahme falsch ist, beschreibt die Frage einen Prozess zur Implementierung, bei dem er mithilfe einer Installations- / Entfernungsliste nur fragt, ob es eine realistische Implementierung gibt. Gemäß der Fragebeschreibung ist Dropbox nur das Medium, das zum Austausch der Synchronisationslisten verwendet wird
João Pinto