Seafile stellt nach der Installation einige Helfer bereit, die im Laufe der Benutzung administrative Aufgaben vereinfachen sollen: ccnet-init, ccnet-server, httpserver, seaf-fsck, seaf-fuse, seafile-controller, seaf-migrate,
seaf-server, seaf-server-init, seafserv-gc, seafserv-tool
Mit den Debian/Ubuntu-eigenen Bibliotheken, möchten diese jedoch nicht zusammenarbeiten:
./seafserv-tool: error while loading shared libraries: libccnet.so.0: cannot open shared object file: No such file or directory
Auf keinen Fall darf ein symbolischer Link zu den Bibliotheken in ein vom System benutztes Verzeichnis erstellt werden!
Einige Programme der Linux Installation stünden im Versionskonflikt mit den von Seafile verwendeten Bibliotheken.
Es ist ausreichend und sicher, die Anwendung mit einem vorhergehenden „LD_LIBRARY_PATH“ aufzurufen, womit der Pfad zu den Bibliotheken einmalig individuell bestimmt wird.
Hierzu habe ich ein kleines Script geschrieben, das diese Aufgabe übernimmt
Zur Konfiguration gehört nur ein Parameter „SEAFILE_MANUAL_PATH“. Bleibt dieser wie im Script leer, so versucht das Script den Pfad automatisch zu erkennen.
Wurde der Seafile-Server nach der Struktur meines Artikels aufgebaut, lautete der korrekte Pfad „/srv/seafile/servername“. Dieses Verzeichnis muss die Ordner „ccnet“ sowie „seafile-data“ beeinhalten.
#!/bin/bash
if [ $# -lt 1 ]; then
echo -e "\e[00;31mMissing argument\e[00m"
echo -e "Valid arguments are\n\e[00;32mccnet-init ccnet-server httpserver seaf-fsck\nseaf-fuse seafile-controller seaf-migrate\nseaf-server seaf-server-init seafserv-gc seafserv-tool\e[00m"
exit 1
fi
### CONFIG START ###
# Path containing 'ccnet' and 'seafile-data' directories
# Leave empty to try autodetection
SEAFILE_MANUAL_PATH=
#### CONFIG END ####
if [ -z $SEAFILE_MANUAL_PATH ]; then
SEAFILEPATH=$(dirname `locate seafile-server-latest`)
else
SEAFILEPATH=$SEAFILE_MANUAL_PATH
fi
LD_LIBRARY_PATH=$SEAFILEPATH/seafile-server-latest/seafile/lib $SEAFILEPATH/seafile-server-latest/seafile/bin/$1 $2 $3 $4 $5 $6 $7
Usage: ./script.sh
Vorab als ausführbar markieren: chmod +x script.sh
Ich habe nie verstanden, warum ReadyMedia (früher Minidlna) bei der Einbindung des Icons einen so umständlichen Weg eingeschlagen hat.
ReadyMedia – aus dem offiziellen Quell-Code – verwendet je nach System unterschiedliche Symbole. So sehen Linux-Benutzer etwa den Tux-Pinguin, BSD-Benutzer hingegen Beastie, den kleinen Teufel. Zudem existiert für spezielle Konfigurationen ein Logo Netgears.
Um jedoch ein eigenes Symbol zu verwenden, reicht es nicht aus, die ein oder andere Grafik auszutauschen. Die Grafiken liegen als „dumps“ in der Datei „icons.c“. Das macht einen Eingriff in den Quell-Code unumgänglich.
Beispiel für ReadyMedia SymbolZur Vereinfachung habe ich ein Script geschrieben, das eine Datei „icons.c“ im Verzeichnis des Scripts anlegt. Die Daten in dieser Datei gelten für alle Systeme.
Die Grafiken werden – wie ReadyMedia es verlangt – einmal in das JPEG- sowie PNG-Format umgewandelt. Im gleichen Schritt werden beiden Dateien auf die Größe 120×120 bzw. 40×40 Pixel skaliert.
Getestet habe ich alles Folgende unter Ubuntu Server 13.10. Es sollte jedoch problemlos auf nahen Derivaten läuffähig sein.
Zu Beginn installiere ich diverse Abhängigkeiten, wovon „imagemagick“ und „xd“ für das Script notwendig sind:
Das neue Symbol sollte eine Aspect Ratio von 1:1 haben, also genauso breit wie hoch sein. Am besten wird ein Bild >= 120×120 Pixel ausgewählt. Das Format spielt keine Rolle.
Diese Bild-Datei, angenommen „image.png“, lege ich in diesem Beispiel im Verzeichnis des Scripts ab. Die Syntax lautet „./minidlna_icon_patch.sh grafik.ext“:
./minidlna_icon_patch.sh image.png
Es wurde ein Backup der originalen Datei „icon.c“ unter dem Namen „icon.c_bak“ angelegt.
Die Installation konfiguriere ich ohne besondere Parameter (etwa „prefix“ etc.):
./configure
make -j2
sudo make install
Die ausführbare Datei befindet sich so unter „/usr/local/sbin/minidlnad“.
Nun zur ReadyMedia-Konfiguration, welche ich sehr simpel halte. Hierzu bitte einfach in die man-page schauen. Ausgeführt wird ReadyMedia als Benutzer „nobody“.
Das Verzeichnis „/opt/files“, welches die Medien-Dateien (Urlaubsbilder ;) ) enthält, muss natürlich für den Benutzer „nobody“ lesbar sein.
Für den automatischen Start, wird ein Init-Script angelegt:
sudo nano /etc/init.d/minidlna
Der Inhalt:
#!/bin/sh
# chkconfig: 345 99 10
# description: Startup/shutdown script for MiniDLNA daemon
#
# Based on the MiniUPnPd script by Thomas Bernard
# Modified for MiniDLNA by Justin Maggard
# Status function added by Igor Drobot
#
### BEGIN INIT INFO
# Provides: minidlna
# Required-Start: $network $local_fs $remote_fs
# Required-Stop:: $network $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: DLNA/UPnP-AV media server
### END INIT INFO
MINIDLNA=/usr/local/sbin/minidlnad
PIDFILE=/var/run/minidlna/minidlna.pid
CONF=/etc/minidlna.conf
ARGS="-f $CONF"
test -f $MINIDLNA || exit 0
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting minidlna" "minidlna"
start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $MINIDLNA -- $ARGS $LSBNAMES
log_end_msg $?
;;
stop) log_daemon_msg "Stopping minidlna" "minidlna"
start-stop-daemon --stop --quiet --pidfile $PIDFILE
log_end_msg $?
;;
restart|reload|force-reload)
log_daemon_msg "Restarting minidlna" "minidlna"
start-stop-daemon --stop --retry 5 --quiet --pidfile $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $MINIDLNA -- $ARGS $LSBNAMES
log_end_msg $?
;;
status)
status_of_proc -p $PIDFILE $MINIDLNA minidlna && exit 0 || exit $?
;;
*) log_action_msg "Usage: /etc/init.d/minidlna {start|stop|restart|reload|force-reload|status}"
exit 2
;;
esac
exit 0
Das Script als ausführbar markieren und den Dienst installieren:
Bevor der Dienst gestartet wird, erhöhe ich die „max_user_watches“ für „inotify“, damit ReadyMedia vernünftig arbeiten kann. Dies dient zur Erkennung neuer Medien-Dateien:
Nach Firefox Aurora: Ein Chromium Nightly Install-Script, getestet unter Debian/Ubuntu in 64bit Ausführung.
Womöglich auch lauffähig auf weiteren Distributionen. Ich habe erst einmal nicht vor, auch 32bit-Versionen zu unterstützen.
Das Script ermittelt die aktuellste Version aus dem offiziellen Build-Repository Chromiums, lädt diese herunter und richtet sie für den eingeloggten Benutzer ein.
Chromium Nightly InstallerBenötigt werden „unzip“ sowie „curl“.
Im Gegensatz zu Aurora, erwartet Chromium nach dem Entpacken noch die ein oder andere Einstellung. Das Script erledigt diese Aufgaben.
Chromium Nightly ScreenshotIm Anschluss wird ein symbolischer Link „chromium-devel“ angelegt, zeigend auf „/opt/chrome-linux/chrome-wrapper“.
Außerdem wird Chromium nach der Einrichtung erstmalig gestartet, um den Starter zu erzeugen. Das erspart es dem Script.
Ich bin positiv überrascht, was das Font-Rendering angeht. Vor allem das Schriftbild der Tabs ist stark verbessert. Flott ist er auch.
Ebenfalls lohnt ein Blick in die experimentellen Einstellung. Hier gibt es einiges zu entdecken/kaputt zu machen. ;)
Hierzu „chrome://flags“ in die Adressleiste eintippen.
#!/bin/bash
if [[ $UID -ne 0 ]]; then
echo "$0 muss als \"root\" ausgeführt werden!"
exit 1
fi
ISCURL=`which curl`
if [ -z $ISCURL ]; then
echo "Bitte \"curl\" installieren!"
exit 1
fi
ISUNZIP=`which unzip`
if [ -z $ISUNZIP ]; then
echo "Bitte \"unzip\" installieren!"
exit 1
fi
LATEST=`wget -q -O - "$@" http://commondatastorage.googleapis.com/chromium-browser-continuous/Linux_x64/LAST_CHANGE`
LATEST_LINK=http://commondatastorage.googleapis.com/chromium-browser-continuous/Linux_x64/$LATEST/chrome-linux.zip
echo "Chromium Nightly wird eingerichtet, bitte warten..."
curl -# -o $LATEST.zip $LATEST_LINK
unzip -q -o $LATEST -d /opt && rm $LATEST.zip
# Setting permissions
chown -R :users /opt/chrome-linux
find /opt/chrome-linux/ -type f -exec chmod 644 {} \; && find /opt/chrome-linux/ -type d -exec chmod 755 {} \;
chmod 755 /opt/chrome-linux/{chrome,chrome-wrapper}
chmod 4755 /opt/chrome-linux/chrome_sandbox
# Fixes for wrapper
ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0 > /dev/null 2>&1
mv /opt/chrome-linux/chrome_sandbox /opt/chrome-linux/chrome-sandbox
ln -s /opt/chrome-linux/chrome-wrapper /usr/local/bin/chromium-devel
su `logname` -c "chromium-devel"
Usage: sudo ./script.sh
Vorab als ausführbar markieren: chmod +x script.sh
Hinweis: Ein Update gleicht der Erst-Installation. Vorab Chromium beenden. Das Profil kann zerstört werden!
Da ich wieder häufiger mit FFmpeg arbeiten muss und viel zu viel mit den verschiedenen Ubuntu-Derivaten experimentiere, habe ich mir einen „FFmpeg Snapshot Installer“ zum installieren, upgraden und deinstallieren von FFmpeg geschrieben.
Changelog
16. Mär – ~/bin zu PATH hinzufügen
FFmpeg Snapshot Installer – Vorwort
FFmpeg ScriptDas Script überprüft das Betriebssystem auf das Vorkommen des Wortes „Ubuntu“ (~ Kubuntu, Xubuntu, …). Linux Mint und sonstige Derivate werden noch nicht unterstützt.
Installiert wird nur für den lokalen Benutzer. Die Binaries befinden sich nach der Installation im Verzeichnis „~/bin“.FFmpeg Binaries Die Links („TARGETS“ Array) sind austauschbar, falls es für die Abhängigkeiten Updates geben- oder sich die URL ändern sollte. Zusätzlich wird der Link-Status geprüft: Ist eine Datei nicht mehr vorhanden, so bricht das Script noch vor der Ausführung ab.
Folgende Anwendungen werden vorab kompiliert:
Yasm 1.2.0, falls Ubuntu < v13.04, ansonsten via "apt-get"
Gerne teile ich mit euch ein Bash-Script, welches die aktuelle Version des Firefox Aurora Browsers in deutscher Sprache ermittelt, herunterlädt und installiert. Aurora ist anzusiedeln zwischen Nightly und Beta.
Changelog
25. Mär – Neueste Version auswählen, wenn mehrere verfügbar sind
Als Zielverzeichnis für die Installation wähle ich „/opt/aurora“, zudem erstellt das Script einen Anwendungsstarter in „/usr/share/applications“. Profile werden wie üblich im Heimverzeichnis des jeweiligen Benutzers via „.mozilla/“ gespeichert.
AuroraVorab wird die Architektur des Systems ermittelt. Eine alte Installation wird unter Angabe von Datum und Zeit in „/opt“ gesichert.
Installation
Das Script an beliebigem Ort erstellen:
nano aurora_installer.sh
Und folgenden Inhalt einfügen:
#!/bin/bash
if [[ $UID -ne 0 ]]; then
echo "$0 muss als \"root\" ausgeführt werden!"
exit 1
fi
ISCURL=`which curl`
if [ -z $ISCURL ]; then
echo "Bitte \"curl\" installieren!"
exit 1
else
AURORA_TEMPRDIR='http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-aurora-l10n/?C=M;O=D'
AURORA_RDIR='http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-aurora-l10n/'
arch=$(uname -m)
echo -ne "Neueste Version suchen...\t\t\t"
if [ "$arch" == 'x86_64' ]; then
AURORA_TNAME=`curl -s $AURORA_TEMPRDIR | grep -m1 -o '"firefox.*de\.linux-x86_64\.tar\.bz2"' | tr -d '"'`
else
AURORA_TNAME=`curl -s $AURORA_TEMPRDIR | grep -m1 -o '"firefox.*de\.linux-i686\.tar\.bz2"' | tr -d '"'`
fi
echo -e "\e[00;32m OK\e[00m"
AURORA_RTARGET=$AURORA_RDIR$AURORA_TNAME
LINK_STATUS=$(curl -s --head -w %{http_code} $AURORA_RTARGET -o /dev/null)
if [ "$LINK_STATUS" == '200' ] && [ ! -z $AURORA_TNAME ]; then
echo "Herunterladen und entpacken von $AURORA_TNAME..."
[ ! -d "/opt/aurora/" ] || mv /opt/aurora /opt/aurora_bak_`date +%e%m%y_%H%M`
cd /tmp/ && curl -# -o- $AURORA_RTARGET | tar xj
echo -ne "Installieren und aufräumen...\t"
cat > /usr/share/applications/firefox-aurora.desktop << "EOF"
[Desktop Entry]
Version=1.0
Name=Firefox Aurora
Comment=Browse the World Wide Web
GenericName=Web Browser
Exec=/opt/aurora/firefox -no-remote %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/opt/aurora/browser/icons/mozicon128.png
Categories=GNOME;GTK;Network;WebBrowser;
StartupWMClass="Navigator","Firefox"
StartupNotify=true
EOF
cp -r ./firefox /opt/aurora/ && rm -r ./firefox/
chown -R root:users /opt/aurora
echo -e "\e[00;32m OK\e[00m"
echo "Firefox Aurora wurde installiert!"
echo "Falls der Starter nicht erscheint, bitte \"unity --replace &\" ausführen."
echo "Falls vorhanden, wurde eine alte Version in \"/opt\" gesichert."
else
echo "URL ungültig: $AURORA_RTARGET"
fi
fi
Usage: # ./aurora_installer.sh
Vorab als ausführbar markieren: chmod +x aurora_installer.sh