49 votes

apt-get mass installe des paquets à partir d'un fichier ?

J'ai un fichier texte avec de nombreux noms de paquets.

package1
package2

# comment
# installing package3 because it was needed for...
package 3

package 4

Comment installer en masse tous les paquets à l'intérieur du fichier texte sans supprimer les commentaires ?

50voto

sanmiguel Points 1235

Quelque chose de ce genre devrait faire l'affaire.

apt-get install $(grep -vE "^\s*#" filename  | tr "\n" " ")

La construction $(something) exécute le programme quelque chose en insérant sa sortie dans la ligne de commande.

La commande grep exclut toute ligne commençant par un #, en autorisant éventuellement la présence d'espaces blancs avant cette ligne. La commande tr remplace ensuite les nouvelles lignes par des espaces.

19voto

Six Points 772

La commande suivante est une (légère) amélioration par rapport à l'alternative car sudo apt-get install n'est pas exécutée lorsque la liste des paquets est vide.

xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install

Il convient de noter que le -a lit les éléments directement à partir d'un fichier au lieu de l'entrée standard. Nous ne voulons pas insérer un fichier dans l'option xargs car stdin doit rester inchangé pour être utilisé par apt-get .

7voto

thelsdj Points 3344

Étant donné un fichier de liste de paquets package.list , essayez :

sudo apt-get install $(awk '{print $1'} package.list)

3voto

Syd Lambert Points 131

J'utilise cette solution simple :

grep -vE '^#' file.txt | xargs sudo apt install -y

grep recherche toutes les lignes qui ne commencent pas par un # et les donne comme arguments à sudo apt install .

1voto

Biggybi Points 545

Voici donc ma solution pour installer une liste de paquets que j'ai pour une nouvelle installation :

sudo apt install -y $(grep -o ^[^#][[:alnum:]-]* "filename")

Dans un bash fonction :

aptif () {
    sudo apt install -y $(grep -o ^[^#][[:alnum:]-]* "$1")
}

grep explication :

  • -o ne conserver que la partie de la ligne qui correspond à l'expression
  • ^[^#] tout ce qui ne commence pas par un #
  • [[:alnum]-]* une suite de lettres, de chiffres et de -

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X