web-dev-qa-db-fra.com

apt install <liste des packages du fichier>

Cela semble bon :

for i in package1 package2 package3; do
  Sudo apt-get install -y $i
done

mais avec les packages répertoriés dans un fichier:

package1
package2
..

chacun sur sa propre ligne. Vous cherchez le script le plus simple à lire, les performances ne sont pas vraiment un problème. Bien sûr, le package impair nécessitera une intervention humaine lors de l'installation pour accepter ou pour la configuration.

Soit dit en passant, quelle est la "vraie" façon de gérer les grandes listes de packages à installer? Je cherche juste monkey-see-monkey - do .

4
Thufir

Il existe le programme xargs qui transforme un fichier en arguments de ligne de commande. Ajoutez simplement xargs à la commande (avec tous les arguments) pour laquelle vous souhaitez fournir des arguments supplémentaires à partir du fichier (appelons-le list.txt) et laissez xargs pour lire votre fichier en utilisant redirection d'entrée standard .

< list.txt xargs Sudo apt-get install -y

Vous pouvez le tester en mettant echo avant (ou à la place de) Sudo ou en supprimant le -y option.

6
Melebius

Quelque chose comme ça?

# check that the filename was supplied (keeping it simple for the example)
set -o nounset

packagefile=$1

# initialize the package variable
packages=''

# read the lines of the package file
while IFS= read -r line; do
    packs+=" $line"
done < $packagefile

# apt install all of the packages
apt install -y $packs
4
Eric Mintz