Wo bekomme ich die neuesten Installationsdateien für Logitech Media Server und wie führe ich die Installation ordnungsgemäß durch?
(Ich verwende es auf einem Raspberry Pi 2 und musste es aufgrund einer defekten SD-Karte mehrmals neu installieren. Daher beantworte ich diese Frage hauptsächlich als Erinnerung für mich selbst.)
Antwort1
Zum Zeitpunkt des Schreibens ist die neueste Version 7.9.2.
Es ist verfügbarHier. Eine Übersicht über weitere Versionen finden SieHier. Kopieren Sie die link
Datei entsprechend Ihrem System in die Zwischenablage.
Laden Sie die Datei mit auf Ihr System herunter wget link
. Installieren Sie sie file
mit sudo dpkg -i file
. Dadurch wirdInstallation schlägt fehlaufgrund fehlender Abhängigkeiten.
Beheben Sie das Problem mit sudo apt -f install
.
Beginnen Sie mit sudo service logitechmediaserver start
.
Überprüfen Sie, ob es mit ausgeführt wird top
.
Stellen Sie über die unter verfügbare Web-GUI eine Verbindung zum Server her http://IPofYOURserver:9000
.
Einstellungensind in /var/lib/squeezeboxserver/prefs/server.prefs
.
Dazu gehören Verzeichnisse für die Medienbibliothek aber auch Einstellungen für lokale Clients, wie etwa die Größe der angezeigten Informationen auf dem Display einer alten Squeezebox Boom.
Wenn Sie vermeiden möchten, alles neu einzurichten, können Sie überschreiben server.prefs
. Dazu müssen Sie sudo systemctl stop logitechmediaserver
.
Kopieren Sie dann die Datei und sudo chown squeezeboxserver:nogroup /var/lib/squeezeboxserver/prefs/server.prefs
.
Endlich, sudo systemctl start logitechmediaserver
.
UPDATE: Möglicherweise squeezeboxserver
muss der Benutzer zur Gruppe hinzugefügt werden users
. Auch Speicherorte für Wiedergabelisten sollten angegeben werden chmod 775
.
Wenn Sie eine Firewall wie ufw
die HandhabungHäfenwird erklärtHier.
Weitere Dateien finden Sie hier:http://wiki.slimdevices.com/index.php/Logitech_Media_Server_file_locations#Ubuntu_.3E12.04
Antwort2
Ich habe ein Upgrade auf Ubuntu 20.04 durchgeführt und dabei ist meine Installation kaputtgegangen, aber ich habe herausgefunden, wie ich sie wieder zum Laufen bekomme:
Nach einigem Überlegen habe ich mich für eine Neuinstallation entschieden. Also habe ich den alten Kram in /var/lib/squeezeboxserver/ gelöscht.
Dann habe ich mir ein neues Deb-Paket für die Version 8.0 (Beta) besorgt von:http://downloads.slimdevices.com/nightly/?ver=8.0
Persönlich habe ich die plattformübergreifende Version verwendet, aber wählen Sie je nach Plattform einfach ein passendes Deb aus:
wget http://downloads.slimdevices.com/nightly/8.0/lms/cf7bcdb87b4f8bf6f71f5b5444c923afae4c300d/logitechmediaserver_8.0.0~1589180193_all.deb
Installiert mit: dpkg -i logitechmediaserver_8.0.0_1588799628_all.deb
Da ich auch ältere Versionen ausprobiert und sogar einen Git-Checkout versucht habe, hoffe ich, dass mir kein Detail entgeht, das ein anderes Skript bereits für mich erledigt hat, ohne dass ich es bemerkt habe.
Wenn bei der Dpkg-Installation noch kein Benutzer und keine Gruppe hinzugefügt wurde, tun Sie dies bitte:
adduser squeezeboxserver
usermod -a -G squeezeboxserver squeezeboxserver
Erstellen Sie ein Verzeichnis für die PID-Datei:
mkdir /var/run/logitechmediaserver
Und geben Sie es diesem Benutzer und dieser Gruppe:
chown squeezeboxserver:squeezeboxserver /var/run/logitechmediaserver
Das Gleiche gilt für den Inhalt von /var/lib/squeezeboxserver/
chown squeezeboxserver:squeezeboxserver /var/lib/squeezeboxserver
chown -R squeezeboxserver:squeezeboxserver /var/lib/squeezeboxserver/*
Das Problem liegt beim Startskript in /etc/init.d. Es funktioniert einfach nicht, da Ubuntu 20.04 den Start-Stop-Daemon nicht mehr hat. Es ist einfach mit /bin/true verknüpft, was für einige Skripte funktionieren könnte, aber nicht für den Logitechmediaserver. Ich habe eine C-Implementierung für dieses Programm ausprobiert, aber es hatte seine Probleme, also habe ich den Start-Stop-Daemon gelöscht und das Startprogramm entsprechend geändert.
Speichern Sie einfach das alte Startskript (nur zur Sicherheit) und kopieren Sie diesen Inhalt in einen Editor Ihrer Wahl:
#!/bin/sh
#
# $Id$
#
# logitechmediaserver initscript for slimserver.pl
# This file should be placed in /etc/init.d.
#
# Original Author: Mattias Holmlund
#
# Updated By: Dan Sully, Michael Herger, Alexander Hartmann
#
### BEGIN INIT INFO
# Provides: logitechmediaserver
# Required-Start: $all
# Required-Stop: $all
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Startup script for the Logitech Media Server
# Description: Logitech Media Server powers the Squeezebox, Transporter and SLIMP3 network music \
# players and is the best software to stream your music to any software MP3 \
# player. It supports MP3, AAC, WMA, FLAC, Ogg Vorbis, WAV and more! \
# As of version 7.7 it also supports UPnP clients, serving pictures and movies too!"
### END INIT INFO
#
# -e Exit immediately if a command exits with a non-zero status.
set -e
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
### About logitechmediaserver
# The logitechmediaserver is kind of special. It uses the
# squeezeboxserver_safe script, to restart any died squeezeboxserver. This
# can easily happen, for example if you use a MySQL server. Depending on unix
# flavour you are running they sometimes do a regular restart. That would
# cause the squeezeboxserver to terminate. Because of that the
# squeezeboxserver_safe starts a logitechmediaserver every few seconds, which
# gets shut down again if any other logitechmediaserver is still running.
#
# Sadly this procedure messes up, the process id file. You would get a new id
# file, every time a new server process gets started. That process will
# terminate but the process id of the first server process is lost. So the
# killing the squeezeboxserver have to be done with analysing the process
# table.
#
# As I upgraded to Ubuntu 20.04 my logitechmediaserver stopped working.
# Installing the lastest 8.0 version was no problem downloading the deb-packet
# and installing with dpkg. But the server did not start. I could start it
# manually but the startup script was not able to start it. After some looking
# around I found this:
#
# /sbin/start-stop-daemon -> /bin/true
#
# This explains why the start up script is not working. There is no package
# in the ubuntu package repository for the start-stop-daemon.
#
# First I tried the C implementation of start-stop-daemon from Dale O'Brien on
# github (https://github.com/daleobrien/start-stop-daemon). It does not
# implement the --remove-pidfile option the original script. But more
# problematic it threw the error not able to terminate the server while
# doing it without a problem.
#
# I had to compile the C implementation from Dale O'Brien myself, which
# worked without a hitch. Considering the limiations of the implementation
# I came to the conclusion to ditch the start-stop-daemon completly and
# doing it the old school way.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Logitech Media Server"
NAME=squeezeboxserver
NEWNAME=logitechmediaserver
DAEMON=/usr/sbin/$NAME
DAEMON_RESTARTER=/usr/sbin/${NAME}_safe
PIDFILE=/var/run/$NEWNAME/${NEWNAME}.pid
SCRIPTNAME=/etc/init.d/$NEWNAME
SLIMUSER=$NAME
SLIGROUP=$NAME
PREFSDIR=/var/lib/$NAME/prefs
LOGDIR=/var/log/$NAME/
CACHEDIR=/var/lib/$NAME/cache
CHARSET=utf8
SLEEPTIMER=1
## if you want to add additional options
## use /usr/sbin/squeezeboxserver --help
## for the supported options and place them
## into the configfile /etc/default/logitechmediaserver
# Read config file if it is present.
if [ -r /etc/default/$NEWNAME ]; then
. /etc/default/$NEWNAME
elif [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi
#
# Function that starts the daemon/service.
#
d_start() {
# Where is your su installed?
SU_BIN=$(command -v su)
# Use squeezeboxserver_safe to restart the daemon when
# it dies. This must be done to handle mysql restarts.
$SU_BIN - $SLIMUSER \
-s /bin/sh \
-c "$DAEMON_RESTARTER \
$DAEMON \
--user $SLIMUSER \
--group $SLIGROUP \
--prefsdir $PREFSDIR \
--logdir $LOGDIR \
--cachedir $CACHEDIR \
--charset=$CHARSET \
--daemon \
$SLIMOPTIONS \
> /dev/null 2>&1 &"
# Writing the pid for the restarter
PID=$(ps ax | \
grep "$DAEMON_RESTARTER $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}' )
if [ $PID ]
then
if [ $PID -gt 0 ]
then
echo -n " Started the restarter with the process id: "
echo $PID
if [ -e $PIDFILE ]
then
rm $PIDFILE
fi
echo -n $PID > $PIDFILE
fi
else
echo " ERROR: No process id for the restarter could be found!"
fi
# Check if the server is successfully started
PERL_BIN=$(command -v perl)
PID_SERVER=$(ps ax | \
grep "$PERL_BIN $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}' )
if [ $PID_SERVER ]
then
if [ $PID_SERVER -gt 0 ]
then
echo " Started the server successfully."
else
echo " ERROR: No process id for the server could be found!"
fi
fi
}
# Function that stops the daemon/service.
#
d_stop() {
echo -n " Checking if the restarter is still running: "
## This will kill the squeezeboxserver_safe script. So we don't have
## to bother about it, starting new processes.
PID1=$(ps ax | \
grep "$DAEMON_RESTARTER $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}' )
if [ $PID1 ]
then
echo positive
if [ $PID1 -gt 0 ]
then
echo -n " Stopping now restarter: "
kill $PID1
if [ -e $PIDFILE ]
then
rm $PIDFILE
fi
echo done.
fi
else
echo negative
fi
## We have to kill at least one server process. Possible two processes
## and in weird cases under real high load even three processess.
## So a loop it is.
## We have to wait for at least one second for closing the process
## and analyzing the process list again.
echo -n " Checking if any server instances are running: "
PERL_BIN=$(command -v perl)
PID2=$(ps ax | \
grep "$PERL_BIN $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}' )
if [ $PID2 ]
then
echo positive
echo -n " Stopping now all server instances: "
if [ $PID2 -gt 0 ]
then
while [ $(ps ax | \
grep "$PERL_BIN $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}') ]
do
kill $(ps ax | \
grep "$PERL_BIN $DAEMON" | \
grep -v grep | \
head -1 | \
awk '{print $1}')
sleep $SLEEPTIMER
done
echo done
fi
else
echo negative
fi
}
#
# Function that sends a SIGHUP to the daemon/service.
#
d_reload() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE --signal 1
}
case "$1" in
start)
echo "Making sure that $DESC is not running: "
d_stop
echo "Starting $DESC:"
d_start
;;
stop)
echo "Stopping $DESC:"
d_stop
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
echo "Restarting $NAME."
d_stop
d_start
;;
status)
status_of_proc /usr/bin/$NEWNAME $NEWNAME
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
Ja, es ist nicht schön, aber es funktioniert für mich und wird Ihnen hoffentlich auch helfen. Sie müssen es in /etc/init.d unter dem Namen logitechmediaserver platzieren
Anschließend muss noch folgender Befehl ausgeführt werden, um systemctl zufriedenzustellen:
systemctl daemon-reload
Machen Sie einfach einen Testlauf, indem Sie es starten:
/etc/init.d/logitechmediaserver start
Sie sollten sich mit Ihrem Webbrowser anmelden können, umhttp://IhreServerIP:9000/und konfigurieren Sie es.
Und testen Sie, ob es wieder herunterfährt:
/etc/init.d/logitechmediaserver stop
Wenn alles geklappt hat, aktivieren Sie den Dienst:
systemctl enable logitechmediaserver.service