diff --git a/Installer-USB-Stick/scripts/linuxparty.sh b/Installer-USB-Stick/scripts/linuxparty.sh index 385261c6d03655ac54c2749a0832eacf834f35c8..5bef1bb219b3e3db03546502e9a76d491aca03ce 100755 --- a/Installer-USB-Stick/scripts/linuxparty.sh +++ b/Installer-USB-Stick/scripts/linuxparty.sh @@ -5,6 +5,58 @@ set -e MY_DIR="$( readlink -f "$( dirname "${BASH_SOURCE[0]}" )" )" HIVE_DIR="/media/MultiBoot/hive/" #we assume here that the LIP install stick is mounted at /media/MultiBoot... better idea? +#Packetlisten zur Installation/Auswahl, nur Packete die im Repo liegen. +#Hive-Programme (z.B. root) müssen extra behandelt werden +#Der Textinstaller installiert _ausschließlich_ Packete bei denen Preinstalled gesetzt ist! +#Syntax: preinstalled? pkgname description +COMMON_PKGS=(\ +"TRUE" "gufw" "Firewall Frontend" \ +"TRUE" "pwgen" "Tool um Passwoerter zu generieren" \ +"TRUE" "p7zip-full" "Tool um u.a. ZIP Archive zu handhaben" \ +"TRUE" "p7zip-rar" "Erweiterung von p7zip um auch RAR-Archive öffnen zu koennen" \ +"FALSE" "unrar-free" "Zur Verwaltung von RAR-Archiven" \ +"TRUE" "texmaker" "Grafischer Editor fuer La(Tex)" \ +"TRUE" "inkscape" "Bildbearbeitung (Vektorbasiert)" \ +"TRUE" "gimp" "Bildbearbeitung (Pixelbasiert)" \ +"TRUE" "pidgin" "Multi-Messenger-Client" \ +"FALSE" "subversion" "Versionsverwaltungstool (zentral)" \ +"TRUE" "git" "Versionsverwaltungstool (dezentral)" \ +"TRUE" "graphviz" " " \ +"FALSE" "gnome" "GNOME3 Desktop Umgebung" \ +"FALSE" "xubuntu-desktop" "Xubuntu Desktop Umgebung und standard Programme" \ +"FALSE" "fityk" "keine Ahnung..." \ +"FALSE" "openssh-server" "SSH-Server (s. KISS)" \ +"FALSE" "zsh" "Alternative Shell" \ +"FALSE" "zsh-doc" "Dokumentation von zsh" \ +"FALSE" "lftp" "FTP-Client" \ +"FALSE" "linux-firmware-nonfree" "Properitäre Firmware fuer exotische Notebooks/Hardware" \ +"FALSE" "gddrescue" "Falls Daten gelöscht, letzte Option vor dem Tod der Hoffnung" \ +"FALSE" "smartmontools" "Tool und Daemon zum prüfen von Speichermedien (HDD/SSD)" \ +) + +PH_PKGS=(\ +"TRUE" "python-numpy" "Numeric Bibiliothek für Python" \ +"TRUE" "python-simpy" "keine Ahnung..." \ +"TRUE" "python-scipy" "dito..." \ +"TRUE" "python-matplotlib" "Schnittstelle um mit Python zu plotten" \ +"TRUE" "ipython" "Python wie auf iOS??" \ +"TRUE" "gnuplot" "Programm um Funktions-und Datenplots anzufertigen" \ +"TRUE" "wxmaxima" "pff..." \ +"TRUE" "bpython" "..." \ +) + +IF_PKGS=(\ +"FALSE" "postgresql" "Datenbank-Server. Nett um in der Datenbanken-Vorlesungen Dinge auszuprobieren.\n Aber relativ groß." \ +"TRUE" "dia" "Graphisches Tool, um UML/ER Diagramme für die Vorlesungen Softwaretechnik und Datenbanken anzufertigen" \ +"TRUE" "haskell-platform" "Glaskow Haskell Compiler für die Vorlesung Programmierung" \ +"TRUE" "java7-jdk" "Java JDK für die Vorlesung Programmierung" \ +"TRUE" "swi-prolog" "Prolog Interpreter/Compiler für die Vorlesung Programmierung" \ +) + +M_PKGS=(\ +"TRUE" "singular" "Tool für die Vorlesung Computeralgebra" \ +) + if [ -n "$DEBUG" ] then # DEBUG-Modus: @@ -26,6 +78,28 @@ else fi fi +preinstalledpkgs() { + local pkglist=$1[@] + local take="FALSE" + local step=0 + for i in "${!pkglist}" + do + case $step in + 0) take="$i" + step=1 + ;; + 1) if [ $take = "TRUE" ]; then + echo -n " $i" + fi + step=2 + ;; + *) + step=0 + ;; + esac + done +} + askyesno() { while true do @@ -40,6 +114,7 @@ askyesno() { } pressenter() { + echo $@ echo "Drücke <Enter> um fortzufahren (Strg-C zum Abbrechen)" read } @@ -70,6 +145,36 @@ err() { echo -e "\033[0m" # normal } +install_pkgs() { + #ACHTUNG: nicht vorausgewählte Packete werden _nie_ installiert! + local arg=$3[@] + pkglist=$(preinstalledpkgs $3) + + if [ -n "$pkglist" ]; then + apt-install $pkglist + ok "$pkglist installiert" + else + ok "Keine Packete installiert" + fi +} + +if [ -z "$NOGUI" ]; then + +#overwrite functions with graphical replacements +askyesno() { + zenity --question --text "$@" 2> /dev/null +} + +err() { + zenity --error --text "$@" 2> /dev/null +} + +pressenter() { + zenity --info --text "$@" 2> /dev/null +} + +fi + # Verbose error trapping showerr() { err "Bei der Installation ist ein Fehler aufgetreten. Frage einen Helfer." @@ -80,6 +185,40 @@ apt-install() { apt-get install --quiet -y --force-yes $@ } + +if [ -z "$NOGUI" ]; then + +#graphical installations +install_pkgs() { + local pkglist=$3[@] + INSTALL=$(zenity --list --title "$1" --text "$2" --checklist --separator=" " --width=786 --height=400 --column "Installieren?" --column "Packet" --column "Beschreibung" "${!pkglist}" 2> /dev/null || true) + + if [ -n "$INSTALL" ]; then + apt-install $INSTALL + ok "$INSTALL installiert" + else + ok "Keine Packete installiert" + fi +} + +fi + +install_common() { + install_pkgs "Allg. Packete installieren?" "Programme, die der OSAK/die ALUG für sinnvoll hält, sind bereits zur Installation vorselektiert.\nWenn du keine Packete aus der Liste installieren willst, einfach Abbrechen.\nBitte beachten: Das LIP-Script deinstalliert keine Packete, insbesondere also keine Packete die in einem früheren Lauf aktiv waren,\nund diesmal nicht ausgewählt sind!" COMMON_PKGS +} + +install_ph() { + install_pkgs "Packete für Physiker installieren?" "Programme, die der OSAK/die ALUG sowie Lehrstühle der Physik für sinnvoll hält, sind bereits zur Installation vorselektiert.\nWenn du keine Packete aus der Liste installieren willst, einfach Abbrechen.\nBitte beachten: Das LIP-Script deinstalliert keine Packete, insbesondere also keine Packete die in einem früheren Lauf aktiv waren,\nund diesmal nicht ausgewählt sind!" PH_PKGS +} + +install_m() { + install_pkgs "Packete für Mathematiker installieren?" "Programme, die der OSAK/die ALUG für sinnvoll hält, sind bereits zur Installation vorselektiert.\nWenn du keine Packete aus der Liste installieren willst, einfach Abbrechen.\nBitte beachten: Das LIP-Script deinstalliert keine Packete, insbesondere also keine Packete die in einem früheren Lauf aktiv waren,\nund diesmal nicht ausgewählt sind!" M_PKGS +} + +install_if() { + install_pkgs "Packete für Informatiker/Programmierung installieren?" "Programme, die der OSAK/die ALUG für sinnvoll hält, sind bereits zur Installation vorselektiert.\nWenn du keine Packete aus der Liste installieren willst, einfach Abbrechen.\nBitte beachten: Das LIP-Script deinstalliert keine Packete, insbesondere also keine Packete die in einem früheren Lauf aktiv waren,\nund diesmal nicht ausgewählt sind!" IF_PKGS +} + echo echo "Auf dem Install-USB-Stick liegen viele der zu installierenden Packete" bright "Es ist dringend empfohlen, jetzt einen Instaĺl-USB-Stick einzustecken" @@ -99,10 +238,11 @@ else err "Installation abgebrochen" exit 2 else - warn "LIP-Install-USB-Stick nicht nutzbar." - warn "Stelle eine Internetverbindung her und mache weiter (langsames Installieren)" - warn "Wenn Du nicht weiter weißt, frage einen Helfer." - pressenter + #warn "LIP-Install-USB-Stick nicht nutzbar." + #warn "Stelle eine Internetverbindung her und mache weiter (langsames Installieren)" + #warn "Wenn Du nicht weiter weißt, frage einen Helfer." + #pressenter + pressenter "LIP-Install-USB-Stick nicht nutzbar.\nStelle eine Internetverbindung her und mache weiter (langsames Installieren)\nWenn Du nicht weiter weißt, frage einen Helfer." fi fi @@ -133,38 +273,12 @@ fi if askyesno "Netzwerk: Soll die Ubuntu Firewall (ufw/gufw) aktiviert werden ?" then $DEBUG ufw enable - apt-install gufw - ok "Firewall aktiviert, benutze 'gufw' oder 'ufw' um die Einstellungen der Firewall zu verändern" - #ok "Firewall aktiviert, benutze das Kommando 'ufw' in einem Teminal, um die Einstellungen der Firewall zu verändern" fi -echo echo "Installation:" echo "Programme, die für alle Fachrichtungen interressant sind (7zip, gimp, git, ... )" -if askyesno "Sollen diese Programme installiert werden ?" -then - apt-install pwgen p7zip-full p7zip-rar unrar-free - ok "Installation der System-Utilities abgeschlossen" - apt-install texmaker inkscape gimp pidgin subversion git graphviz - ok "Installation der für alle interessanten Software abgeschlossen." - -else - echo "Es wurde nichts installiert" -fi - -echo -echo "Alternative Desktopumgebungen" -echo " Das ist für diejenigen interessant, die mit 'unity'," -echo " der gerade eingestellten Oberfläche nicht gut klarkommen." -if askyesno "Soll 'GNOME 3' installiert werden ?" -then - apt-install gnome - ok "GNOME 3 wurde installiert" -fi -if askyesno "Soll 'xfce' installiert werden ?" -then - apt-install xubuntu-desktop - ok "xfce wurde installiert" +if [ -z "$NOGUI" ] || (askyesno "Sollen diese Programme installiert werden ?"); then + install_common fi #Fachrichtung wählen @@ -173,14 +287,23 @@ echo "Auswahl fachspezifischer Software:" if askyesno "Software für Vorlesung 'Programmierung' (Pflicht für Informatiker) installieren ?" then - apt-install haskell-platform java7-jdk swi-prolog - ok "Haskell, Java, Prolog und Eclipse wurden installiert" + #apt-install haskell-platform java7-jdk swi-prolog + #ok "Haskell, Java, Prolog und Eclipse wurden installiert" + install_if +fi + +if askyesno "Software für Mathematik installieren ?" +then + #apt-install haskell-platform java7-jdk swi-prolog + #ok "Haskell, Java, Prolog und Eclipse wurden installiert" + install_m fi if askyesno "Software für Physiker (Python-SciPy,-NumPy,diverse Plot-Programme) installieren ?" then - apt-install python-numpy python-simpy python-scipy python-matplotlib ipython python-dev gnuplot wxmaxima - ok "Python-SciPy, -NumPy, -Matplotlib, ipython, gnuplot, und WxMaxima wurden installiert" + #apt-install python-numpy python-simpy python-scipy python-matplotlib ipython python-dev gnuplot wxmaxima + #ok "Python-SciPy, -NumPy, -Matplotlib, ipython, gnuplot, und WxMaxima wurden installiert" + install_ph if askyesno "ROOT installieren (Physiker) ?" then if [ ! -d "$HIVE_DIR" ] @@ -207,7 +330,7 @@ then fi echo -echo "Falls Du doch noch mehr Software installieren möchtest, starte $0 erneut." +pressenter "Installation abgeschlossen!\n\nFalls Du doch noch mehr Software installieren möchtest, starte $0 erneut." echo #Folgende Packete koennen auch fuer Helfer waehrend der Installation interessant sein: