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 .
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.
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