Commit 292c51ce authored by Gustav Geier's avatar Gustav Geier
Browse files

linuxparty.sh für SS14 angepasst:

1) kdialog GUI
2) Generierung von Packet-Dokumentation
3) Physiker: Anaconda Installation
4) sub-Skript mount-repo-stick.sh qdbus durch dbus-send ersetzt
   da qdbus auf Kubuntu nicht out-of-the-box funktioniert

zu 3) Die Anaconda Installer müssen von der Website geladen werden und
unter /hive/anaconda/Installer-xxBit.sh abgelegt werden, wobei xx jeweils
64 und 32 entspricht.
parent 7dcabc19
\section{Allgemeine Tools}
\end{document}
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\begin{document}
\tableofcontents
\section{Programme für Informatiker}
\section{Programme für Mathematiker}
\section{Programme für Physiker}
\begin{document}
\subsection{Subversion}
......
\begin{document}
\subsection{Subversion}
......
--- a/etc/environment 2014-03-16 19:48:12.836000000 +0000
+++ b/etc/environment 2014-03-16 19:50:45.768643532 +0000
@@ -1,2 +1,2 @@
-PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
+PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/anaconda/bin"
RUNNING_UNDER_GDM="yes"
......@@ -2,16 +2,23 @@
set -e
#options for GUI are kdialog zenity no
#options for GUI are kdialog zenity none
if [ -z "$GUI" ]; then
GUI=kdialog
fi
if [ "$GUI" == "none" ]; then
NOGUI=yes
fi
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?
#Liste, in der alle Packete verzeichnet werden, die vom Skript tatsächlich installiert werden; Pseudo-Packete sind "all-capital"
INSTALLED_PKGS="HEADER"
#Packetlisten zur Installation/Auswahl, nur Packete die im Repo liegen.
#Hive-Programme (z.B. root) müssen extra behandelt werden
#Hive-Programme (z.B. anaconda) müssen extra behandelt werden
#Der Textinstaller installiert _ausschließlich_ Packete bei denen Preinstalled gesetzt ist!
#Syntax: preinstalled? pkgname description
COMMON_PKGS=(\
......@@ -20,16 +27,15 @@ COMMON_PKGS=(\
"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" "kile" "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" "fityk" "Tool zum Daten-Fitting und Analyse" \
"FALSE" "openssh-server" "SSH-Server (s. KISS)" \
"FALSE" "zsh" "Alternative Shell" \
"FALSE" "zsh-doc" "Dokumentation von zsh" \
......@@ -48,6 +54,7 @@ PH_PKGS=(\
"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" \
"TRUE" "root-system" "Datenanalyse Framework vom CERN" \
)
IF_PKGS=(\
......@@ -125,7 +132,7 @@ warn() {
}
case "$GUI" in
no)
none)
askyesno() {
while true
do
......@@ -158,6 +165,7 @@ case "$GUI" in
pkglist=$(preinstalledpkgs $3)
if [ -n "$pkglist" ]; then
INSTALLED_PKGS="$INSTALLED_PKGS $4" #register pseudo package
apt-install $pkglist
ok "$pkglist installiert"
else
......@@ -182,6 +190,7 @@ case "$GUI" in
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
INSTALLED_PKGS="$INSTALLED_PKGS $4" #register pseudo package
apt-install $INSTALL
ok "$INSTALL installiert"
else
......@@ -201,17 +210,25 @@ case "$GUI" in
pressenter() {
kdialog --msgbox "$@" 2> /dev/null
}
install_pkgs() {
local pkglist=$3[@]
local nlist=""
local n=0
declare -a kdlist
local tag=""
local text=""
local use=""
for e in $pkglist; do
case n in
local n=0
local i=0
for e in "${!pkglist}"; do
case $n in
0)
use="$e"
if [ "$e" == "TRUE" ]; then
use="on"
else
use="off"
fi
n=1
;;
1)
......@@ -220,14 +237,20 @@ case "$GUI" in
;;
2)
text="$e"
nlist="$nlist $tag \"$tag: $text\" $use"
kdlist[$i]="$tag"
i=$((i+1))
kdlist[$i]="$tag: $text"
i=$((i+1))
kdlist[$i]="$use"
i=$((i+1))
n=0
;;
esac
done
INSTALL=$(kdialog --width=786 --height=400 --title "$1" --checklist $nlist 2> /dev/null || true)
INSTALL=$(kdialog --geometry 786x400 --title "$1" --checklist "$2" "${kdlist[@]}" 2> /dev/null || true)
if [ -n "$INSTALL" ]; then
INSTALLED_PKGS="$INSTALLED_PKGS $4" #register pseudo package
apt-install $INSTALL
ok "$INSTALL installiert"
else
......@@ -236,7 +259,7 @@ case "$GUI" in
}
;;
*)
echo "Ungültige GUI Option '$GUI'. Möglich Werte sind 'kdialog', 'zenity' oder 'no'"
echo "Ungültige GUI Option '$GUI'. Möglich Werte sind 'kdialog', 'zenity' oder 'none'"
exit 1
;;
esac
......@@ -249,22 +272,102 @@ trap showerr ERR
apt-install() {
apt-get install --quiet -y --force-yes $@
INSTALLED_PKGS="$INSTALLED_PKGS $@"
}
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_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 "COMMON"
}
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_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 "PHYSIK"
}
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_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 "MATHEMATIK"
}
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
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 "INFORMATIK"
}
install_anaconda() {
if [ ! -d "$HIVE_DIR" ]
then
err "Hive konnte nicht gefunden werden ( kein LIP-Stick? ). Ohne Hive kann Anaconda leider nicht installiert werden!"
else
ARCH="$(uname -m)"
INSTALLER="$HIVE_DIR"/anaconda/Installer-
if [ "$ARCH" == "x86_64" ]; then
INSTALLER="${INSTALLER}64Bit"
else
INSTALLER="${INSTALLER}32Bit"
fi
INSTALLER="${INSTALLER}.sh"
echo "Benutze Anaconda-Installer: $INSTALLER ."
if [ -d "/opt/anaconda/" ]; then
if askyesno "Anaconda ist anscheinend schon installiert. Neuinstallieren?"; then
echo "Entferne alte Installation..."
rm -R /opt/anaconda/
echo "ok"
else
echo "Installation von Anaconda wird abgebrochen..."
return 0
fi
fi
$INSTALLER -b -p /opt/anaconda/
if [ $? -ne 0 ]; then
err "Der Anaconda-Installer hat versagt... ."
return 1
fi
echo "Registriere Anaconda in \$PATH"
pushd /
patch -p1 "$HIVE_DIR/anaconda/envpatch.patch"
popd
INSTALLED_PKGS="$INSTALLED_PKGS anaconda"
ok "Anaconda wurde anscheinend erfolgreich installiert!"
fi
}
create_doc()
{
DOCUDIR="$MY_DIR/../Doku"
if [ ! -f "$DOCUDIR/HEADER.tex" ]; then #HEADER muss ex. sonst kommt auf keinen Fall was sinnvolles bei rum
echo "Leider ist keine Dokumentation auf dem LIP-Stick vorhanden..."
return 0 #linuxparty.sh soll auch ohne Doku Verzeichnis laufen
fi
DOCFILE=$(mktemp --suffix='.tex')
WORKING_DIR=$(mktemp -d)
for PACKAGE in $INSTALLED_PKGS; do
#zenity and kdialog return quoted package names; nice for apt call but bad here
CLEAN_PACKAGE_NAME=$(echo "$PACKAGE" | tr -d "\" ")
echo "Dokumentation fuer $PACKAGE von ${DOCUDIR}/${CLEAN_PACKAGE_NAME}.tex"
if [ -f "${DOCUDIR}/${CLEAN_PACKAGE_NAME}.tex" ]; then
#inclue is a bad idea here because pdflatex writes *.aux files to /cdrom
#echo "\\include{${DOCUDIR}/${CLEAN_PACKAGE_NAME}.tex}" >> "$DOCFILE"
echo
echo "% from ${DOCUDIR}/${CLEAN_PACKAGE_NAME}.tex :" >> "$DOCFILE"
cat "${DOCUDIR}/${CLEAN_PACKAGE_NAME}.tex" >> "$DOCFILE"
fi
done
pdflatex -output-directory "$WORKING_DIR" "$DOCFILE"
pdflatex -output-directory "$WORKING_DIR" "$DOCFILE" # ja, ist Absicht
if [ $? -ne 0 ]; then
err "Fehler beim kompilieren der Dokumentation."
return 1
fi
cp "${WORKING_DIR}/$(basename -s .tex ${DOCFILE}).pdf" "$HOME/Deine-LIP-Dokumentation.pdf"
return $?
}
echo "Entferne Ubuntu Installer (bleibt manchmal über...)"
......@@ -356,29 +459,9 @@ 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" ]
if askyesno "Anaconda installieren (Physiker) ?"
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
install_anaconda
fi
fi
......@@ -395,4 +478,9 @@ echo "Installiere diese Packete bei Bedarf bitte selbst mit 'sudo apt-get instal
echo "Deaktiviere LIP Software Repository"
bash $MY_DIR/liprepoctl.sh off
INSTALLED_PKGS="$INSTALLED_PKGS FOOTER"
create_doc
echo "Installierte Packete: $INSTALLED_PKGS"
echo
#end;
......@@ -48,7 +48,7 @@ else
# 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)"
MPOINT="$(dbus-send --print-reply=literal --system --dest=org.freedesktop.UDisks /org/freedesktop/UDisks/devices/${DEVFILE} org.freedesktop.DBus.Properties.Get string:'org.freedesktop.UDisks.Device' string:'DeviceMountPaths' | tail -n +2 | tr -d "\ \]\[" | head -n 1)"
echo "Der Stick it als '$MPOINT' gemountet"
fi
......
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