Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • forbid-save-as
  • upload-via-token
  • moodle-integration
  • patch-double-tap-seek
  • patch_datum_anzeigen
  • patch_raum_anzeigen
  • intros
  • live_sources
  • bootstrap4
  • modules
11 results

.gitattributes

Blame
  • Forked from Video AG Infrastruktur / website
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    linuxparty.sh 11.71 KiB
    #!/bin/bash
    
    set -e
    
    MY_DIR="$( readlink -f "$( dirname "${BASH_SOURCE[0]}" )" )"
    HIVE_DIR="$MY_DIR/../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" "Tool zum visualisieren von Graphen" \
    "FALSE" "gnome" "GNOME3 Desktop Umgebung" \
    "FALSE" "xubuntu-desktop" "Xubuntu Desktop Umgebung und standard Programme" \
    "FALSE" "fityk" "Tool zum Daten-Fitting und -Analyse" \
    "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" "Simulationsframework für Python" \
    "TRUE" "python-scipy" "Bibliothek für scientific computing" \
    "TRUE" "python-matplotlib" "Schnittstelle zum Plotten mit Python" \
    "TRUE" "ipython" "Interaktiver Python Interpreter mit Tab-Vervollständgung" \
    "TRUE" "gnuplot" "Programm um Funktions- und Datenplots anzufertigen" \
    "TRUE" "wxmaxima" "Graphische Benutzeroberfläche für das Maxima Computer Algebra System" \
    "TRUE" "bpython" "Ein weiterer interaktiver Python Interpreter" \
    )
    
    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:
      echo
      echo "DEBUG  Modus aktiviert"
      echo "MY_DIR: $MY_DIR"
      echo
      DEBUG="echo DEBUG: "
      apt-get() {
        echo "APT-GET $@"
      }
      #/ DEBUG-Modus:
    else
      # Root pruefen
      if [[ $EUID -ne 0 ]]
      then
        echo "Du bist nicht ROOT ... verwende \"sudo bash $0\" !"
        exit 1
      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
    	  read -n1 -p "$1 [j,n]"
    	  echo
    	  case "$REPLY" in
    	    y|Y|j|J) return 0;;
    	    n|N) return 1;;
    	    *) echo 'Antworte bitte mit "j" für "Ja" oder "n" für "Nein"' ;;
    	  esac
    	done
    }
    
    pressenter() {
      echo $@
      echo "Drücke <Enter> um fortzufahren (Strg-C zum Abbrechen)"
      read
    }
    
    bright() {
      # gruen
      echo -ne "\033[1m$@\033[0m"
    }
    
    ok() {
      echo
      echo -ne "\033[32;7m"    # gruen
      echo -n "$@"
      echo -e "\033[0m"       # normal
    }
    
    warn() {
      echo
      echo -ne "\033[33;7m"    # gelb
      echo -n "$@"
      echo -e "\033[0m"       # normal
    }
    
    err() {
      echo
      echo -ne "\033[31;7m"    # rot
      echo -n "$@"
      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."
    }
    trap showerr ERR
    
    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 "Entferne Ubuntu Installer (bleibt manchmal über...)"
    apt-get purge ubiquity --yes
    apt-get autoremove --yes
    
    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"
    echo
    echo "Sonst muß aus dem Internet heraus installiert werden. Das ist langsam, geht aber auch."
    
    HAVELIPSTICK=0
    #Offline-Repo einbinden
    if bash "$MY_DIR/infuse_offline_repo.sh"
    then
      HAVELIPSTICK=1
      ok "USB-Repository gefunden und eingebunden"
    else
      if [[ $? -eq 2 ]]
      then
        # Exit code 2 is handed up from mount-stick-repo.sh -> "Installation abbrechen"
        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
        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
    
    # Packetquellen bereitlegen.
      echo
      echo "Bereitstellung der Packetquellen"
    # Entweder apt-get update
    # Oder apt-clone restore
    if [[ $HAVELIPSTICK -eq 1 ]]
    then
    # infuse script has already done our job here
    echo "Nutze Packete vom USB-Repository"
    #  echo "Bereite apt-clone vor"
    #  dpkg -GERi "/var/cache/apt/archives/dpkg-early-install"  >/dev/null 2>&1
    #  APT_CLONE_BACKUP="$(mktemp --tmpdir="$HOME" --suffix='.apt-clone.tar.gz')"
    #  echo "Erstelle Backup der apt Packetquellen in ${APT_CLONE_BACKUP}"
    #  apt-clone clone "${APT_CLONE_BACKUP}"  >/dev/null 2>&1
    #  echo "Wende apt-clone an"
    #  apt-clone restore "/var/cache/apt/archives/apt-clones/ftp-halifax.apt-clone.tar.gz" >/dev/null 2>&1 || true
    else
      #echo "Update der Packetquellen aus dem Internet mit 'apt-get update'"
      # Wie sichert man apt-get update ab ?
     # apt-get -o Dir::Etc::SourceList=/etc/apt/sources.list.d/lipoffline.list,Dir::Etc::SourceParts="" update
       apt-get update
    fi
    
    # System absichern
    if askyesno "Netzwerk: Soll die Ubuntu Firewall (ufw/gufw) aktiviert werden ?"
    then
      $DEBUG ufw enable
    fi
    
    echo "Installation:"
    echo "Programme, die für alle Fachrichtungen interressant sind (7zip, gimp, git, ... )"
    if [ -z "$NOGUI" ] || (askyesno "Sollen diese Programme installiert werden ?"); then
    	install_common
    fi
    
    #Fachrichtung wählen
    echo
    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"
      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"
      install_ph
      if askyesno "ROOT installieren (Physiker) ?"
      then
    	if [ ! -d "$HIVE_DIR" ]
    	then
    	  err "Hive konnte nicht gefunden werden ( kein LIP-Stick? ). Ohne Hive kann ROOT leider nicht installiert werden!"
    	else
    	  #Basis Abhaengigkeiten
              apt-install libx11-dev libxpm-dev libxft-dev libxext-dev
              #Packete fuer vollen Umfang
              apt-install gfortran libpcre3-dev xlibmesa-glu-dev libglew1.5-dev libftgl-dev libmysqlclient-dev libfftw3-dev cfitsio-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev
              for archive in "$HIVE_DIR/root"*.tar.gz; do 
    	    	echo "Entpacke "$archive
    		$DEBUG tar -C "$HOME" -xf "$archive"
    	  done
              CORES=`cat /proc/cpuinfo | grep processor | wc -l`
    	  echo "$CORES CPUs gefunden... benutze sie zum ROOT compilen"
    	  $DEBUG pushd "$HOME/root" || err "ROOT konnte nicht extrahiert werden..."
    	  $DEBUG ./configure
    	  $DEBUG make -j$CORES
    	  $DEBUG popd
    	  $DEBUG cat "$HIVE_DIR/root_env.sh" >> "$HOME/.bashrc"
              ok "ROOT erfolgreich installiert"
            fi
      fi
    fi
    
    echo
    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:
    PKGS_EXTRA="fityk openssh-server linux-firmware-nonfree zsh zsh-doc lftp graphviz gddrescue smartmontools"
    echo "Auf dem Installer-USB-Stick sind außerdem noch die folgenden Packete enthalten:"
    echo ${PKGS_EXTRA}
    echo "Installiere diese Packete bei Bedarf bitte selbst mit 'sudo apt-get install <Packetname>' "
    
    echo "Deaktiviere LIP Software Repository"
    bash $MY_DIR/liprepoctl.sh off
    
    #end;