Come faccio a scrivere uno script della shell di installazione dell'applicazione?


39

Qualcuno sa come scrivere uno script di shell per installare un elenco di applicazioni? È difficile dover installare manualmente ogni applicazione ogni volta che imposto un nuovo sistema.

Modifica: mi chiede ancora Do you want to continue [Y/n]?. C'è un modo per avere l'input dello script yo per non richiedere l'input?


2
C'era un programma chiamato "sì" che faceva proprio questo. (Ha scritto "y" continuamente a STDOUT.)
Nathan Osman,

Risposte:


39

Suppongo che la sceneggiatura sarebbe simile a questa:

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

Basta salvarlo come qualcosa come install_my_apps.sh, modificare le proprietà del file per renderlo eseguibile ed eseguirlo dalla riga di comando come root.

( Edit: La -ydice apt-getdi non richiede voi e solo andare avanti con l'installazione)


Come renderlo eseguibile? Presumo che lo sudo ./install_my_apps.sh
eseguirò

Non sono sicuro se sia necessario renderlo eseguibile (sono un ragazzo Python; non molto in BASH). Ma se è necessario, può essere reso eseguibile con chmod +x ./install_my_apps.sh.
Michael Crenshaw,

Oppure fai clic destro su di esso, seleziona "Proprietà". Nella finestra che si apre vai alla scheda "Autorizzazioni" e seleziona la casella di controllo "Consenti l'esecuzione del file come programma"
jfoucher

6
Non so perché questo sia CW, ma l'ho modificato comunque per mettere la -ybandiera. Nota: se si desidera renderlo più chiaro, è possibile utilizzare --yeso --assume-yesal posto di -y.
Umang,

20

Bene, secondo la tua domanda lo script più semplice sarebbe:

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

aptitude update
aptitude install -y $LIST_OF_APPS

Comunque potresti anche entrare aptitude update && aptitude install -y a b c d e. Quindi forse alla tua domanda manca il punto cruciale qui. Se ci sono altri requisiti, sarebbe bello spiegarli.


1
Nota che apt-get funzionerebbe come rimpiazzo drop-in per aptitude qui, se questa è la tua preferenza. Sostituisci semplicemente entrambe le istanze di "aptitude" con "apt-get".
Michael Crenshaw,

12

Basta creare un elenco di app in un file, esempio.list ed eseguire

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

Questo e spettacolare. non ho mai saputo come inserire un elenco di pacchetti in apt prima d'ora!
Giovedì

xargs inserisce le linee inoltrate in qualsiasi comando, semplicemente aggiungendole come argomenti
Xerus,

2

Opterei per il seguente script: vim install

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

Quindi dovrei rendere eseguibile lo script sopra chmod +x install. Poi ad usarlo, ho potuto scrivere: ./install <package_name>. Esempio:./install clang


1
Volevo tutti i programmi elencati nel file. Con questo metodo, dovrei comunque inserire il nome del programma come argomento della riga di comando, quindi non c'è davvero alcun vantaggio.
jumpnett,

1
@jumpnett Lol, ho perso il punto dell'elenco. Sto iniziando a mancare di caffeina e lo dimostra. Scusatemi. Può aggiornare la risposta.
NlightNFotis,

Inoltre funzionerà updateper ogni programma da installare, richiedendo tempo. E ha bisogno sudo.
Gauthier,

questo è estremamente inutile. Potresti anche metterti alias install='sudo apt-get install -y'nel tuo.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
aggiungi spiegazioni per favore e correggi tutti questi errori di battitura
Xerus,

quale linea secondo te ha bisogno di spiegazioni ?!
Yordan Georgiev,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.