Hallo zusammen,
ich habe das Update Script für Jameica überarbeitet. Das Script bietet eine bequeme Möglichkeit, Jameica per Kommandozeilenaufruf mit "jamup.sh" zu aktualisieren (das 2. Script wird vom ersten Script aufgerufen)
Neu hinzugekommen sind in dieser Version u.a. die folgenden Schalter:
1. "--forceup", so lässt sich ein Update auch dann durchführen, wenn keine neuere Version als die installierte verfügbar ist
2. "--forcestable", so lässt sich ein Update von Nightly auf Stable durchführen. Vorsicht!
3. "--forcenightly", so lässt sich ein Update von Stable auf Nightly durchführen.
Ein Backup der aktuellen Installation wird beim Updatei unter "/opt/jameica.old" gespeichert," und wird erst bei der nächsten Aktualisierung wieder überschrieben.
Wurden Plugins im Anwendungsordner/opt/jameica/plugins gespechert, so werden diese in die neue Installation übertragen. Das gilt auch für das /opt/jameica/cfg Verzeichnis, falls hier Dateien vorhanden sind.
Ist Jameica NICHT in /opt/jameica installiert, bitte erst in BEIDEN Scripten die Variable jameica_home="/opt/jameica" anpassen.
Nachfolgend nun die beiden Scripte als Copy & Paste Code, bzw. sind die Scripte auch als ZIP Anhang an diesen Beitrag angehangen.
Viel Spaß
Christian
Hauptscript "jamup.sh"
Code
#!/bin/bash
# ****************************************************************
#
# JamUp - Shellscript zum bequemen Update des Jameica Frameworks
#
# (c) 2017 Christian B. Caldarone, Released under GPL V2 only
#
# ****************************************************************
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
cmdline=${1,,}
forceup=0
forcestabe=0
forcenightly=0
jameica_home="/opt/jameica"
case $cmdline in
--forceup)
echo
echo " Update wird forciert, auch wenn keine neuere Version vorhanden."
echo -n " "
forceup=1
;;
--forcenightly)
echo
echo " !!! Update auf Nightly wird forciert. Vorsicht !!!"
echo -n " "
forceup=1
forcenightly=1
;;
--forcestable)
echo
echo " !!! Update auf Stable wird forciert. Vorsicht !!!"
echo -n " "
forceup=1
forcestable=1
;;
--help)
echo
echo " Kommandozeilenoptionen."
echo " "
echo " --help | Diesen Text anzeigen"
echo " --forceup | Update durchführen, auch wenn keine neuere Version verfügbar."
echo " --forcenightly | Update auf Nightly durchführen."
echo " --forcestable | Update auf Stable durchführen. Inkompatibilitäten beachten."
echo " --version | Versionsinformationen anzeigen"
echo " "
exit
;;
--version)
echo
echo " JamUp - Shellscript zum bequemen Update des Jameica Frameworks"
echo " "
echo " (c) 2017 Christian B. Caldarone, Released under GPL V2 only"
echo " "
exit
;;
esac
echo
echo " Überprüfen ob Jameica auf diesem System installiert ist und wenn ja, in welcher Version..."
echo
if [[ -e $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties ]]; then
eval $(cat $HOME/.jameica/cfg/de.willuhn.jameica.plugin.PluginLoader.properties | grep jameica=)
else
if [[ $(ls -A $jameica_home) ]]; then
echo " Jameica wurde unter diesem Benutzer noch nicht gestartet, ist aber grundsätzlich auf diesem System installiert."
echo " Bitte Jameica mit diesem Benutzer einmal ausführen, dann dieses Script noch einmal starten."
else
echo " Jameica ist auf diesem System noch nicht installiert, oder befindet sich nicht im Standardverzeichnis $jameica_home"
echo " Bitte überprüfen oder ggf. das Script anpassen (Variable '$jameica_home')."
jameica="0.0.0"
fi
fi
if ( [[ $jameica == *"nightly"* ]] || [[ $forcenightly -gt 0 ]] ) && [[ $forcestable -eq 0 ]] ; then
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download_ext.php | grep 'nightly-linux.zip' | sed -e 's/.*jameica-\(.*\)-linux.*/\1/')
else
jameica_new=$(curl --silent --get http://www.willuhn.de/products/jameica/download.php | grep '<h2>Jameica' | sed -e 's/.*Jameica \(.*\) - Aktuelle Version.*/\1/')
fi
if [[ $jameica < $jameica_new ]] || ( [[ $nightly -gt 0 ]] && [[ $(date -r "$jameica_home/jameica.jar" +%Y-%m-%d) < $(date +%Y-%m-%d) ]] ); then
echo " Installierte Jameica Version: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
echo
echo " ==> Es ist eine neueres Jameica in der Version $jameica_new verfügbar!"
do_update=1
else
echo " Installierte Jameica Version ist aktuell: $jameica vom "$(date -r "$jameica_home/jameica.jar" +%d.%m.%Y)
echo
echo " ==> Es ist keine neuere Version vorhanden!"
if [ $forceup -gt 0 ]; then
echo
echo " Update auf $jameica_new wird forciert."
do_update=1
else
echo
echo " Beenden ohne Aktualisierung."
do_update=0
fi
fi
if [ $do_update -gt 0 ]; then
echo
echo " Jameica kann jetzt automatisch aktualisiert werden!"
echo
echo " Ein Backup der aktuellen Installation wird hierbei unter $jameica_home.old gespeichert,"
echo " und wird erst bei der nächsten Aktualisierung wieder überschrieben."
echo " Wurden Plugins im Anwendungsordner $jameica_home/plugins gespechert, so werden diese in"
echo " die neue Installation übertragen. Das gilt auch für das $jameica_home/cfg Verzeichnis,"
echo " falls hier Dateien vorhanden sind."
echo
read -r -p " Soll Jameica jetzt automatisch aktualisiert werden? [J/N]" abfrage
case $abfrage in
[jJ]|[yY])
echo
echo " Installiere...."
echo " "
echo -n " Root "
su -c "./perform_jamupdate.sh $jameica_new"
# Fall keine Root-Rechte benötigt werden, kann die nächste Zeile für den Aufruf
# des Helper-Scripts genutzt werden. Die vorherigen dann auskommentieren.
#
# sh ./perform_jamupdate.sh $jameica_new
;;
*)
echo
echo " Beenden ohne Aktualisierung."
;;
esac
fi
Update Helfer-Script, wird vom ersten Script aufgerufen
Code
#!/bin/bash
link=$(readlink -f "$0")
dir=$(dirname "$link")
cd "$dir"
jameica_home="/opt/jameica"
download_file="jameica-linux"
if [[ ! -w $jameica_home ]]; then
echo "Keine Schreibrechte in$jameica_home"
exit 1
fi
inst_tmp=$(mktemp -d --tmpdir jameica.XXXXXXXX) || { echo "Fehler beim anlegen des Temp-Dir."; exit 1; }
if [[ $* == *"nightly"* ]]; then
download_file="jameica-$1-linux"
else
download_file="jameica-linux"
fi
if [[ $(uname -m | grep 64) ]]; then
download_file="$download_file"64.zip
else
download_file="$download_file".zip
fi
echo $download_file
if [[ $* == *"nightly"* ]]; then
nightly=1
download_url="http://www.willuhn.de/products/jameica/releases/nightly/"
wget -q -P $inst_tmp/ $download_url$download_file
else
nightly=0
download_url="http://www.willuhn.de/products/jameica/releases/current/jameica/"
wget -q -P $inst_tmp/ $download_url$download_file
wget -q -P $inst_tmp/ $download_url$download_file.SHA
file_sha=$(sha1sum -b $inst_tmp/$download_file | sed -r 's/(.{40}).*/\1/')
test_sha=$(cat $inst_tmp/$download_file.SHA | sed -r 's/(.{40}).*/\1/')
[ "$file_sha" == "$test_sha" ] || { echo "Checksumme stimmt nicht, Download fehlerhaft. Abbruch!"; exit 1; }
fi
mkdir $inst_tmp/backup
if [[ -d $jameica_home/plugins ]]; then
if [[ $(ls -A $jameica_home/plugins) ]]; then
cp -fpR $jameica_home/plugins $inst_tmp/backup
fi
fi
if [ -d "$jameica_home/cfg" ]; then
if [[ $(ls -A $jameica_home/cfg) ]]; then
cp -fpR $jameica_home/cfg $inst_tmp/backup
fi
fi
rm -rf $jameica_home".old"
mv -f $jameica_home $jameica_home".old"
unzip -qu $inst_tmp/$download_file -d /opt
if [[ $(ls -A $inst_tmp/backup) ]]; then
cp -fpR $inst_tmp/backup/* $jameica_home
fi
rm -rf $inst_tmp
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.