Utiliser un fichier pour installer des packages avec apt-get

9

Je trouve très pratique d'installer des packages sur une nouvelle machine via des fichiers de packages tels que les fichiers de brassage, les fichiers de casques, les fichiers de docker, le package.json, etc.

Existe-t-il une alternative à cela pour apt-get puisque je l'utilise toujours
en ligne de commande avec

apt-get install pkg1 pkg2 pkg3…

?

thibmaek
la source
2
En a-t-il besoin? Vous pouvez utiliser xargs: xargs -P1 apt-get install < list-of-packages.
muru
@muru bien je ne sais pas vraiment comment fonctionne xargs (en lisant man maintenant) mais je ne pense pas que ce soit une solution pour avoir les paquets centralisés dans un seul fichier? Je devrais toujours lister manuellement les fichiers après le <car l'utilisation d'un fichier .txt avec trois paquets ne fonctionne pas avec cette commande (testée sur Debian)
thibmaek
1
la <est redirection shell. Pour plusieurs fichiers, utilisez:cat file1 file2 .. | xargs -P1 apt-get install
muru

Réponses:

13

Comme spécifié dans les commentaires de votre question, vous pouvez créer un simple fichier texte, appelé packages.txt, listant les packages à installer:

iceweasel
terminator
vim

puis exécutez la commande suivante:

cat packages.txt | xargs sudo apt-get install

xargs est utilisé pour passer les noms de packages du packages.txtfichier à la ligne de commande. Depuis la page de manuel:

xargs lit les éléments de l'entrée standard, délimités par des blancs (qui peuvent être protégés par des guillemets doubles ou simples ou une barre oblique inverse) ou des retours à la ligne, et exécute la commande (par défaut est / bin / echo) une ou plusieurs fois avec tous les arguments initiaux suivis par éléments lus à partir de l'entrée standard.

Ortomala Lokni
la source
9

En améliorant un peu la réponse de @ ortomala-lokni, vous pouvez donner le fichier directement en argument à xargs:

xargs -a packages.txt sudo apt-get install

Facultativement, vous pouvez donner xargsla -rpossibilité d'empêcher l' apt-getappel d'être exécuté du tout si votre packages.txtne contient pas de caractères non blancs.

quazgar
la source
Cela peut être une particularité des Alpes / BusyBox, mais le -aarg n'a pas été documenté et ne semble pas travailler là - bas: xargs: unrecognized option: a. La sortie de ma version affichée estBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston
L'utilisation de la réponse acceptée a entraîné une requête Y / n abandonnée d'apt. L'utilisation de cela a fonctionné. Merci!
Ok Letsdothis du
1

entrez la description de l'image ici

cela fonctionne dans les deux sens pour moi, assurez-vous que vous disposez des derniers xargs, ou sinon vérifiez s'il a l'option -a ou non avec l'option d'aide (xargs --help)

Chinni Diwakar
la source
5
Cette réponse a des problèmes d'accessibilité: le texte des images ne peut pas être lu par les aveugles.
ctrl-alt-delor
0

En plus des solutions de script plus générales, vous pouvez créer un package deb.

Tu auras besoin de

  • equivs-build, pour construire le deb. Le deb ne peut contenir que des dépendances. Il s'agit d'un générateur deb simplifié.
  • gdebi pour installer le deb.

Cela fonctionnera sur tous les systèmes basés sur Debian (systèmes qui utilisent les fichiers apt / deb).

L'avantage de le faire avec des fichiers deb, par opposition à un script shell, est qu'il est beaucoup plus facile d'annuler, vous pouvez désinstaller un deb, ou reconfigurer un deb, et le réinstaller (cela entraînera ajoutés et supprimés).

ctrl-alt-delor
la source