Comment écrire un script shell d'installation d'application?


39

Est-ce que quelqu'un sait comment écrire un script shell pour installer une liste d'applications? C'est pénible de devoir installer chaque application manuellement chaque fois que je configure un nouveau système.

Edit: Il me demande toujours Do you want to continue [Y/n]?. Existe-t-il un moyen de saisir le script you de ne pas demander sa saisie?


2
Il y avait un programme appelé «oui» qui faisait justement cela. (Il a écrit 'y' continuellement à STDOUT.)
— Nathan Osman le

Réponses:


39

Je suppose que le script ressemblerait à quelque chose comme ceci:

#!/bin/sh
apt-get update  # To get the latest package lists
apt-get install <package name> -y
#etc.

Enregistrez-le simplement sous le nom install_my_apps.sh, modifiez les propriétés du fichier pour le rendre exécutable, puis exécutez-le à partir de la ligne de commande en tant que root.

( Edit: Le -ydit de apt-getne pas vous inviter et juste de commencer l'installation)


Comment le rendre exécutable? Je suppose que je le ferais comme: sudo ./install_my_apps.sh
— jumpnett le

Je ne suis pas certain qu'il soit nécessaire de le rendre exécutable (je suis un gars de Python; pas grand-chose dans BASH). Mais si vous devez, il peut être rendu exécutable avec chmod +x ./install_my_apps.sh.
— Michael Crenshaw

Ou faites un clic droit dessus, sélectionnez "Propriétés". Dans la fenêtre qui s'ouvre, allez à l'onglet "Autorisations", puis cochez la case "Autoriser l'exécution du fichier en tant que programme"
— jfoucher

6
Je ne sais pas pourquoi c'est CW, mais je l'ai quand même modifié pour mettre le -ydrapeau. Remarque: Si vous souhaitez que cela paraisse plus clair, vous pouvez utiliser --yesou --assume-yesremplacer -y.
— Umang

20

Eh bien, selon votre question, le script le plus simple serait:

#!/bin/sh
LIST_OF_APPS="a b c d e"

aptitude update
aptitude install -y $LIST_OF_APPS

Cependant, vous pouvez aussi entrer aptitude update && aptitude install -y a b c d e. Alors peut-être que votre question manque le point crucial ici. S'il y a d'autres exigences, il serait bon de les expliquer.


1
Notez qu'apt-get fonctionnerait ici en remplacement immédiat d'aptitude, si tel est votre choix. Il suffit de remplacer les deux instances de "aptitude" par "apt-get".
— Michael Crenshaw

12

Il suffit de créer une liste d'applications dans un fichier, exemple.list, et d'exécuter

cat example.list | xargs sudo apt-get -y install

C'est génial. jamais su comment introduire une liste de paquets dans apt auparavant!
— Thufir

xargs nourrit les lignes canalisées dans n'importe quelle commande, en les ajoutant simplement comme arguments
— Xerus

2

J'opterais pour le script suivant: vim install

#!/bin/bash
apt-get update  # To get the latest package lists
apt-get install $1 -y

Ensuite, je devrais rendre le script ci-dessus exécutable chmod +x install. Puis l'utiliser, je pouvais taper: ./install <package_name>. Exemple:./install clang


1
Je voulais tous les programmes énumérés dans le fichier. Avec cette méthode, je devrais tout de même saisir le nom du programme en tant qu'argument de ligne de commande. Il n'y a donc aucun avantage.
— Jumpnett

1
@ jumpnett Lol, j'ai raté le point de la liste. Je commence à manquer de caféine et ça se voit. Désolé pour cela. Peut mettre à jour la réponse.
— NlightNFotis

De plus, updatechaque programme à installer sera exécuté , ce qui prend du temps. Et ça a besoin sudo.
— Gauthier

c'est extrêmement inutile. Vous pourriez aussi bien mettre alias install='sudo apt-get install -y'dans votre.bash_aliases
— Xerus

-1
#!/bin/bash

set -eu -o pipefail # fail on error , debug all lines

sudo -n true
test $? -eq 0 || exit 1 "you should have sudo priveledge to run this script"

echo installing the must-have pre-requisites
while read -r p ; do sudo apt-get install -y $p ; done < <(cat << "EOF"
    perl
    zip unzip
    exuberant-ctags
    mutt
    libxml-atom-perl
    postgresql-9.6
    libdbd-pgsql
    curl
    wget
    libwww-curl-perl
EOF
)

echo installing the nice-to-have pre-requisites
echo you have 5 seconds to proceed ...
echo or
echo hit Ctrl+C to quit
echo -e "\n"
sleep 6

sudo apt-get install -y tig

1
ajoutez des explications s'il vous plaît et corrigez toutes ces fautes de frappe
— Xerus

quelle ligne à votre avis a besoin d'explication?!
— Yordan Georgiev

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.