Verwenden einer Datei zum Installieren von Paketen mit apt-get

9

Ich finde es sehr praktisch, Pakete über Paketdateien wie Brewfiles, Caskfiles, Dockerfiles, package.json usw. auf einem neuen Computer zu installieren.

Gibt es eine Alternative dazu für apt-get, da ich es immer noch nur
über die Kommandozeile mit benutze

apt-get install pkg1 pkg2 pkg3…

?

Thibmaek
quelle
2
Braucht es einen? Sie könnten verwenden xargs: xargs -P1 apt-get install < list-of-packages.
Muru
@muru Nun, ich weiß nicht wirklich, wie xargs funktioniert (lese jetzt man), aber ich denke nicht, dass dies eine Lösung ist, um die Pakete in einer Datei zu zentralisieren? Ich müsste die Dateien nach dem <immer noch manuell
auflisten,
1
Das <ist Shell-Umleitung. Verwenden Sie für mehrere Dateien:cat file1 file2 .. | xargs -P1 apt-get install
Muru

Antworten:

13

Wie in den Kommentaren Ihrer Frage angegeben, können Sie eine einfache Textdatei mit dem Namen erstellen packages.txt, in der die zu installierenden Pakete aufgelistet sind:

iceweasel
terminator
vim

Führen Sie dann den folgenden Befehl aus:

cat packages.txt | xargs sudo apt-get install

Mit xargs werden die Paketnamen aus der packages.txtDatei an die Befehlszeile übergeben. Von der Manpage:

xargs liest Elemente aus der Standardeingabe, die durch Leerzeichen (die durch doppelte oder einfache Anführungszeichen oder einen Backslash geschützt werden können) oder Zeilenumbrüche begrenzt sind, und führt den Befehl (Standard ist / bin / echo) ein- oder mehrmals mit den folgenden Anfangsargumenten aus durch Elemente, die aus der Standardeingabe gelesen wurden.

Ortomala Lokni
quelle
9

Wenn Sie die Antwort von @ ortomala-lokni etwas verbessern, können Sie die Datei direkt als Argument für Folgendes angeben xargs:

xargs -a packages.txt sudo apt-get install

Optional können Sie geben xargsdie -rMöglichkeit , das verhindern apt-getAnruf von überhaupt das ausgeführt wird, wenn Ihr packages.txtkeine Nicht-Leerzeichen enthält.

Quazgar
quelle
Dies mag eine Besonderheit von Alpine / BusyBox sein, aber das -aArgument wurde nicht dokumentiert und schien dort nicht zu funktionieren : xargs: unrecognized option: a. Meine gezeigte Versionsausgabe istBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston
Die Verwendung der akzeptierten Antwort führte zu einer abgebrochenen J / N-Abfrage von apt. Damit hat es funktioniert. Vielen Dank!
Ok Letsdothis
1

Geben Sie hier die Bildbeschreibung ein

Es funktioniert für mich in beide Richtungen. Stellen Sie sicher, dass Sie über die neuesten xargs verfügen, oder überprüfen Sie auf andere Weise, ob die Option -a mit der Hilfeoption (xargs --help) verfügbar ist.

Chinni Diwakar
quelle
5
Diese Antwort weist Probleme mit der Barrierefreiheit auf: Text in Bildern kann von Blinden nicht gelesen werden.
Strg-Alt-Delor
0

Neben den allgemeineren Skriptlösungen können Sie auch ein Deb-Paket erstellen.

du wirst brauchen

  • equivs-build, um die deb zu bauen. Die Deb kann nur Abhängigkeiten enthalten. Dies ist ein vereinfachter Deb Builder.
  • gdebi um die deb zu installieren.

Dies funktioniert auf allen Debian-basierten Systemen (Systeme, die apt / deb-files verwenden).

Der Vorteil der Verwendung von Deb-Dateien im Gegensatz zu einem Shell-Skript besteht darin, dass das Rückgängigmachen viel einfacher ist. Sie können eine Deb deinstallieren oder eine Deb neu konfigurieren und neu installieren (dies führt dazu, dass Dateien erstellt werden) hinzugefügt und entfernt).

Strg-Alt-Delor
quelle