Commit 577cb00a authored by Gustav Geier's avatar Gustav Geier

Added scripts, updated .gitignore

parent 3aec0ff5
.filesystems
*.lz
*.iso
FreeDOS/
#!/bin/bash
set -e
something_is_mounted_at() {
grep -q " $1/\? " /proc/mounts
}
if [[ $EUID -ne 0 ]]
then
echo "Du bist nicht ROOT ... verwende \"sudo bash $0\" !"
exit 2
fi
mkdir -p /target
if ! something_is_mounted_at /target
then
if [ -n "$1" ]
then
mount "$1" /target
else
echo "Nothing mounted at /target. Give filesystem to mount as parameter #1"
exit 1
fi
fi
something_is_mounted_at /target/dev || mount --rbind /dev /target/dev
something_is_mounted_at /target/sys || mount --bind /sys /target/sys
something_is_mounted_at /target/proc || mount --bind /proc /target/proc
debian_chroot=TARGET chroot /target /bin/bash -l || true
echo -e "\n*************************************"
echo -e "* *"
echo -e "* You are out of CHROOT now! *"
echo -e "* *"
echo -e "*************************************"
#end;
#!/bin/bash
set -e
MY_DIR="$( readlink -f "$( dirname "${BASH_SOURCE[0]}" )" )"
if [[ $UID -ne 0 ]]; then
echo "$0 must be run as root"
exit 1
fi
MPOINT=""
source "$MY_DIR/mount-stick-repo.sh" #detect mountpoint
if [ -n "$MPOINT" ]; then
SOURCE_PATH="$MPOINT"
#SRC_LST=/etc/apt/sources.list.d/lipoffline.list #"$(mktemp --suffix=".list")"
#echo "deb [ trusted=yes ] file:$SOURCE_PATH/archives precise lip" > $SRC_LST
#apt-get -o Dir::Etc::SourceList=$SRC_LST update
#apt-get update
/bin/bash $MY_DIR/liprepoctl.sh on "$SOURCE_PATH"
else
echo "No stick, no repo; good luck."
exit 1
fi
exit 0
#end;
#!/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;
#!/bin/bash
ACTION="$1"
FILENAME="/etc/apt/sources.list.d/lipoffline.list"
ACTIVATED=`test -e "$FILENAME"`
function install_repo()
{
echo "# offline repository of the linux install party
deb [ trusted=yes ] file://$1/archives precise lip" > "$FILENAME"
}
function uninstall_repo()
{
rm -f "$FILENAME"
}
case $ACTION in
"on")
if [ -z "$2" ]; then
echo "No repository location specified!"
exit 2
fi
install_repo "$2"
apt-get update
echo "Repository is now active, remember to call \"$0 off\" to deactivate it when you are done."
;;
"off")
uninstall_repo
apt-get update
echo "Repository is now inactive."
;;
"check")
echo "State: $ACTIVATED"
;;
*)
echo "Unknown action $ACTION"
exit 1
;;
esac
#! /bin/bash
set -e
#find device
DEV="$(blkid -t "LABEL=MultiBoot" -o device | head -n1 || echo '')"
PS3="[1,2,3]<Enter>: "
while [ -z "$DEV" ]; do
echo "Der LIP-Install-USB-Stick wurde nicht gefunden."
echo "Jetzt einstecken oder ohne weitermachen"
select i in "Stick ist jetzt gesteckt" \
"Ohne Stick weitermachen" \
"Installation abbrechen" ; do
case $i in
"Stick ist jetzt gesteckt")
DEV="$(blkid -t "LABEL=MultiBoot" -o device | head -n1 || echo '')"
;;
"Ohne Stick weitermachen")
DEV='-nomount-'
;;
"Installation abbrechen")
exit 2
;;
*)
echo "Das sollte nicht passieren. Helfer fragen."
exit 99
;;
esac
break
done
done
if [ "$DEV" = "-nomount-" ]; then
echo "Mache ohne USB-Stick weiter."
MPOINT=""
#exit 0
else
echo "Stick gefunden als $DEV"
# ask udisks to mount it always.
udisks --mount "$DEV"
# see where it is mounted
DEVFILE=${DEV#/dev/}
MPOINT="$(qdbus --system org.freedesktop.UDisks /org/freedesktop/UDisks/devices/${DEVFILE} org.freedesktop.DBus.Properties.Get org.freedesktop.UDisks.Device "DeviceMountPaths" | head -n1)"
echo "Der Stick it als '$MPOINT' gemountet"
fi
#end;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment