Wie schreibe ich ein Shell-Skript für die Anwendungsinstallation?

39

Weiß jemand, wie man ein Shell-Skript schreibt, um eine Liste von Anwendungen zu installieren? Es ist eine Qual, jedes Mal, wenn ich ein neues System einrichte, jede Anwendung von Hand installieren zu müssen.

Edit: Es fragt mich immer noch Do you want to continue [Y/n]?. Gibt es eine Möglichkeit, das Skript eingeben zu lassen yoder nicht zur Eingabe aufzufordern?

jumpnett
quelle
2
Früher gab es ein Programm namens "Ja", das genau das tat. (Es schrieb "y" kontinuierlich an STDOUT.)
Nathan Osman

Antworten:

38

Ich würde annehmen, dass das Skript ungefähr so ​​aussieht:

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

Speichern Sie dies einfach als install_my_apps.sh, ändern Sie die Eigenschaften der Datei, um sie ausführbar zu machen, und führen Sie sie über die Befehlszeile als root aus.

( Edit: Das -ysagt apt-getnicht, Sie aufzufordern und nur mit der Installation fortzufahren)

mac9416
quelle
Wie mache ich es ausführbar? Ich nehme an, ich würde es so laufen lassen: sudo ./install_my_apps.sh
jumpnett
Ich bin mir nicht sicher, ob es notwendig ist, es ausführbar zu machen (ich bin ein Python-Typ; ich mag BASH nicht besonders). Aber wenn Sie müssen, kann es mit ausführbar gemacht werden chmod +x ./install_my_apps.sh.
Michael Crenshaw
Oder klicken Sie mit der rechten Maustaste darauf und wählen Sie "Eigenschaften". Gehen Sie im folgenden Fenster zur Registerkarte "Berechtigungen" und
aktivieren
6
Ich weiß nicht, warum das CW ist, aber ich habe es trotzdem bearbeitet, um die -yFlagge zu setzen . Hinweis: Wenn Sie die Darstellung klarer gestalten möchten, können Sie --yesoder --assume-yesanstelle von verwenden -y.
Umang
20

Nun, Ihrer Frage nach wäre das einfachste Skript:

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

aptitude update
aptitude install -y $LIST_OF_APPS

Sie können jedoch auch eingeben aptitude update && aptitude install -y a b c d e. Vielleicht fehlt Ihrer Frage hier der entscheidende Punkt. Wenn es weitere Anforderungen gibt, wäre es nett, sie zu erklären.

qbi
quelle
1
Beachten Sie, dass apt-get hier als Ersatz für aptitude fungiert, wenn Sie dies bevorzugen. Ersetzen Sie einfach beide Instanzen von "aptitude" durch "apt-get".
Michael Crenshaw
12

Erstellen Sie einfach eine Liste von Apps in einer Datei, example.list, und führen Sie sie aus

cat example.list | xargs sudo apt-get -y install
Andrew Gunnerson
quelle
das ist fantastisch. Ich wusste noch nie, wie ich eine Liste von Paketen in Apt einpflegen soll!
Thufir
xargs fügt die Pipe-Zeilen in jeden Befehl ein, indem sie einfach als Argumente
angehängt werden
2

Ich würde mich für folgendes Skript entscheiden: vim install

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

Dann sollte ich das obige Skript ausführbar machen chmod +x install. Dann , es zu benutzen, konnte ich geben: ./install <package_name>. Beispiel:./install clang

NlightNFotis
quelle
1
Ich wollte alle in der Datei aufgeführten Programme. Mit dieser Methode müsste ich immer noch den Namen des Programms als Befehlszeilenargument eingeben, damit es wirklich keinen Vorteil gibt.
Jumpnett
1
@jumpnett Lol, ich habe den Listenpunkt verpasst. Mir fehlt allmählich Koffein und es zeigt sich. Entschuldigung dafür. Kann die Antwort aktualisieren.
NlightNFotis
Außerdem muss updatejedes Programm zeitaufwendig installiert werden. Und es braucht sudo.
Gauthier
Dies ist äußerst unnötig. Sie können es genauso gut um alias install='sudo apt-get install -y'.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
Jordan Georgiev
quelle
1
Erklärungen bitte hinzufügen und alle diese Tippfehler beheben
Xerus
welche zeile braucht deiner meinung nach erklärung ?!
Yordan Georgiev
-2

Ich habe ein Skript dafür gemacht.
Überprüfen Sie http://github.com/dinukasal/install

Sie können auch Pakete hinzufügen

Dinuka Salwathura
quelle