YaVDR/Updates und Upgrades
basierend auf Nvidia VDPAU, VDR und Ubuntu Linux
Die offizielle deutschsprachige Dokumentation befindet sich auf der yaVDR-Website: http://yavdr.org/documentation/de.
Die offizielle englischsprachige Dokumentation befindet sich auf der yaVDR-Website: http://yavdr.org.
Updates und Upgrades
Der Sinn von Updates
Viele Pakete in den yaVDR-Repos und auch in den Standard-Ubuntu-Repos werden regelmäßig aktualisiert und enthalten neue Bugfixes und Sicherhheitskorrekturen. Manche Probleme lassen sich deshalb durch ein Paketupdate lösen. Falls das Problem nicht im VDR Portal gefunden werden kann, sollte yaVDR vor dem Erstellen eines neuen Threads im Forum auf den neuesten Stand gebracht werden: Vielleicht wurde das Problem mittlerweile schon behoben.
Updates in Form von Paketen: Nichts "lose", alles verpackt
Das yaVDR-Team achtet darauf, möglichst 100% aller Software-Komponenten in Form von standardisierten Softwarepaketen anzubieten, die leicht zu (de)installieren und zu aktualisieren sind. Der Aufbau dieser Softwarepakete folgt dabei logischerweise dem von Ubuntu genutzten Standard von Debian-Paketen. Wer yaVDR aktualisieren will, aktualisiert also Softwarepakete. Diese Pakete liegen zum Abholen in fest definierten Repositories vor, die dem System bekannt sind.
Genutzte Paket-Repositories
Woher bezieht yaVDR Software-Updates? Standardmäßig sind mehrere Paketquellen nach der Installation von yaVDR automatisch definiert und sollten nicht verändert werden. Die aktiven Paketquellen lassen sich nachschlagen in diesen Dateien:
-
/etc/apt/sources.list
(unveränderte Standard-Ubuntu-Datei, welche die Standard-Ubuntu-Repositories enthält) -
/etc/apt/sources.list.d/yavdr.list
(ergänzende Repository-Liste, welche nur die yaVDR-spezifischen Repositories enthält)
yaVDR 0.2 und yaVDR 0.3.x haben beide standardmäßig folgende Einträge in der Datei /etc/apt/sources.list.d/yavdr.list
:
deb http://ppa.launchpad.net/yavdr/stable-vdr/ubuntu lucid main deb http://ppa.launchpad.net/yavdr/stable-xbmc/ubuntu lucid main deb http://ppa.launchpad.net/yavdr/stable-yavdr/ubuntu lucid main
Weitere Infos zur so genannten source.list unter Ubuntu: [1]
Paket-Update via Konsole
Ein Update auf die neuesten Pakete ist auf der Konsole möglich über Eingabe der folgenden Befehle:
sudo apt-get update sudo apt-get dist-upgrade
Der erste Befehl holt eine aktuelle Liste von verfügbaren Paketen ab, anhand derer bestimmt werden kann, für welche Pakete es Updates gibt. Der zweite Befehl installiert dann diese neuen Pakete. Deshalb müssen immer beide Befehle in dieser Reihenfolge aufgerufen werden.
Tipps und Tricks beim Paket-Update via Konsole
Alle folgenden Tricks beziehen sich eigentlich auf Ubuntu-Standard-Features, es sind keine yaVDR-spezifischen Tricks. Wer also diese Tricks noch nicht kannte, hat etwas über Ubuntu gelernt, was auch auf yaVDR angewendet werden kann.
Paketinstallation nur simulieren
Wer wissen will, was installiert werden würde, ohne es wirklich zu tun, kann dies erreichen mit einem angehängten "--dry-run":
sudo apt-get dist-upgrade --dry-run
Historie der aktualisierten und neu installierten Pakete einsehen
Wer nach dem dist-upgrade
herausfinden will, welche Pakete genau zu welchem Zeitpunkt mit welchen Versionen aktualisiert bzw. installiert worden sind, schaue in die Log-Datei /var/log/apt/history.log
, welche ab yaVDR 0.3 auch im Web-Frontend unter Diagnose einsehbar ist. Auf der Konsole:
cat /var/log/apt/history.log
Ältere Versionen der history.log lassen sich auch noch durchstöbern, die älteren Dateien sind, wie von logrotate gewöhnt, gepackt:
cat /var/log/apt/history.log.1 zcat /var/log/apt/history.log.2.gz zcat /var/log/apt/history.log.3.gz ...
VDR-Core oder Rechner nach Updates neu starten
Damit die neu installierten Updates auch aktiv werden, muss entweder der VDR Daemon neu gestartet werden bzw. die betroffenen Komponenten (openbox, vdr-frontend, etc). Wer es sich einfach machen will, startet den Rechner neu.
VDR-Core vor langwierigen Updates stoppen
Wer vor einem zeitintensiv anmutenden Update (viele Pakete + Kernel-Update + DKMS-DVB-Treiber) auf Nummer sicher gehen will, kann vor dem Paketupdate gern auch den VDR-Daemon stoppen. Damit werden anstehende Timer aber natürlich nicht mehr aufgezeichnet. Den Core stoppen muss man für Updates normalerweise nicht, aber es besteht die theoretische Gefahr, dass der VDR das System nach einer bestimmten idle-Zeit automatisch runterfahren will, während das Update noch läuft. Dies wird im Normalfall über das lifeguard-Addon abgefangen, solange man von einem Zweitrechner per SSH eingeloggt ist und das Update von dort aus startet. Für das erfolgreiche Bauen von DKMS-Paketen nach Kernel-Updates ist es nicht nötig, den VDR zu beenden. Wer einen neuen Kernel oder ähnliches per dist-upgrade bekommt, müsste nach dem Beenden des Updates den Rechner neu starten.
Die komplette Befehlsfolge würde dann insgesamt so aussehen:
sudo stop vdr sudo apt-get update sudo apt-get dist-upgrade sudo reboot
apt startet laufende Dienste wie den VDR-Daemon, den Windowmanager Openbox oder X11 am Ende eines Updates nicht neu. Das muss also von der Konsole aus manuell erledigt werden. Ein Reboot tut dies natürlich auch.
Probleme mit selbst kompilierten VDR-Plugins nach einem Update
Selbst kompilierte VDR-Plugins, die nicht aus den yaVDR-Repos stammen, müssen nach Updates des Paketes vdr manchmal neu kompiliert und neu installiert werden, damit sie funktionieren.
Was ist der Unterschied zwischen apt-get upgrade und apt-get dist-upgrade?
Beide Befehle installieren grundsätzlich Paket-Aktualisierungen auf dem System. Es gibt jedoch entscheidende Unterschiede:
Bei apt-get upgrade
werden niemals zusätzliche Pakete installiert, sondern es werden immer nur neuere Versionen von bereits installierten Paketen eingespielt. Wenn aber eine neuere Version eines VDR-Plugins namens vdr-plugin-beispiel nun plötzlich brandneu eine Abhängigkeit hinzubekommt zu einem Paket beispiel-core, welches noch nie vorher installiert war, dann wird vdr-plugin-beispiel bei einem Aufruf von apt-get upgrade
zurückgehalten, weil apt-get upgrade
keine neuen Pakete wie beispiel-core hinzuinstallieren darf, die noch nicht bereits installiert waren.
Beispiele für Pakete, die zurückgehalten werden:
- Ein Update eines installierten VDR-OSD-Skin braucht ab sofort einen neuen Font, den es erst sei neuestem gibt. Das Skin-Paket-Update wird zurückgehalten, weil der Font nicht installiert werden darf, weil
apt-get upgrade
keine zusätzlichen Pakete installieren darf. - Ein Ubuntu-Kernel-Update wird zurückgehalten. Die neuen Kernel-Pakete haben die Kernel-Versionsnummer im Paketnamen, und sind damit neue Pakete, die noch nie zuvor installiert waren.
Bei apt-get dist-upgrade
werden demgegenüber ohne Nachfrage derartige neue Pakete mitsamt der Paket-Aktualisierungen eingespielt. Hinsichtlich apt-get dist-upgrade
gibt es jedoch sehr oft Missverständnisse (siehe auch [2]): Viele Leute glauben, dass ein apt-get dist-upgrade
ein Upgrade auf ein neues Distributions-Release auslöst, also beispielsweise einen Sprung von Ubuntu 10.04 auf Ubuntu 10.10, was ein automatisches Ändern der apt-sources beinhalten müsste. Diese Annahme ist falsch, dafür gibt es bei Ubuntu Scripts wie do-release-upgrade
(siehe unten).
Statt dessen werden nur
- alle schon auf dem System vorhandenen Pakete auf den neuesten Stand gebracht und
- gegebenenfalls zusätzliche Pakete installiert, welche bisher noch nicht auf dem System installiert waren. Dies passiert nur, wenn die neue Version eines aktualisierten Pakets um eine neue Paketabhängigkeit ergänzt worden ist, die es vorher noch nicht gab.
In yaVDR immer apt-get dist-upgrade
benutzen, um zurückgehaltene Pakete zu vermeiden! Die Abhängigkeiten eines Paketes ändern sich zwar in der Ubuntu-Welt innerhalb eines Releases normalerweise nicht. Deshalb braucht man apt-get dist-upgrade
in der Ubuntu-Welt relativ selten. Oft sind es in Ubuntu nur Kernel-Updates, welche ein apt-get dist-upgrade
zum Einspielen erfordern. In der yaVDR-Welt wird aber (bisher jedenfalls) viel mehr experimentiert und Neues ausprobiert. Deshalb ändern sich dort recht häufig auch die Abhängigkeiten: Neue wichtige Pakete kommen hinzu, und man muss viel häufiger apt-get dist-upgrade
nutzen, damit man auch alle Updates eingespielt bekommt und ein lauffähiges System behält.
Upgrade von yaVDR 0.x zu yaVDR 0.y
Auch wenn der Ubuntu-Unterbau von yaVDR es suggeriert: Es ist derzeit nicht selbstverständlich, dass von jeder yaVDR-Version ein Update zur Folgeversion möglich bzw. problemlos möglich ist. Das yaVDR-Entwicklerteam hat derzeit nicht die Ressourcen, sich neben der Arbeit an einer stabilen, feature-reichen VDR-Plattform auch noch um problemlose Upgrade-Pfade zu kümmern und diese zu testen bzw. alle Paketabhängigkeitsprobleme vollständig zu lösen. Dafür ist das Team nicht groß genug und es gibt genug andere, wichtigere Probleme zu lösen. Diese Situation könnte sich möglicherweise in der Zukunft ändern, sollte die Fan-Gemeinde von yaVDR weiterhin wachsen und mehr aktive Developer und Tester an solchen Stellen mit anpacken. Der derzeitige Stand ist aber, dass nur dann ein sanftes Upgrade möglich ist, wenn sich die zu Grunde liegende Ubuntu-Version nicht geändert hat. In den anderen Fällen empfiehlt sich eine Neu-Installation. Details werden im folgenden erklärt.
Es gibt immer wieder Unklarheit, wie man von einer älteren auf eine neuere yaVDR-Version upgraden kann: Braucht man dazu nun apt-get dist-upgrade
oder yavdr-release-upgrade
oder do-release-upgrade
?
Nicht jedes yaVDR-Release basiert auch auf einem anderen Ubuntu-Release. Manche yaVDR-Releases teilen sich das selbe Ubuntu Release:
- Auf Ubuntu 9.10 basieren yaVDR 0.1.0 und yaVDR 0.1.1.
- Auf Ubuntu 10.04 basieren yaVDR 0.2 und yaVDR 0.3.x.
- Auf Ubuntu 11.04 wird voraussichtlich yaVDR 0.4 basieren.
Solange sich das zu Grunde liegende Ubuntu-Release nicht ändert, ist ein Upgrade einfach über die Nutzung von apt-get dist-upgrade
möglich: Man bekommt sozusagen die neue yaVDR-Version "untergejubelt" und kann sich nicht vor ihr drücken. Um von yaVDR 0.1 zu yaVDR 0.1.1 oder von yaVDR 0.2 zu yaVDR 0.3.x zu kommen, braucht man also keinerlei apt-sources auszutauschen. Es reicht das hier:
sudo apt-get update sudo apt-get dist-upgrade
Anders sieht es aus, wenn ein neues yaVDR-Release auf einem aktuelleren Ubuntu-Release basiert: Ein Upgrade von yaVDR 0.1.1 zu yaVDR 0.2 erfordert die Nutzung von yavdr-release-upgrade
. Vorher sollte man aber per apt-get dist-upgrade
sein yaVDR 0.1.1 mit den neuesten Paketen versorgen und auch nachprüfen, ob yavdr-essential installiert ist (hätte mal per untie-packages entfernt worden sein können). Insgesamt sind also folgende Befehle nötig:
sudo apt-get update sudo apt-get install yavdr-essential sudo apt-get dist-upgrade sudo yavdr-release-upgrade
Der letzte Befehl ruft dann unter anderem auch do-release-upgrade
auf, nachdem es einige wichtige Dinge erledigt hat. Dies heißt noch nicht, dass so ein Upgrade auch in der Praxis problemlos funktioniert, wie man an dieser Diskussion sehen kann. In der Praxis war es oft schneller, vom yaVDR-ISO neu zu installieren, als ein langwieriges do-release-upgrade auszusitzen.
Mit do-release-upgrade
wird in der Ubuntu-Welt ein Upgrade auf ein anderes Ubuntu-Distributions-Release angestartet, also der größte anzunehmende Systemumbau. Dazu werden die Repositories in der Liste der apt-sources komplett ausgetauscht und es müssen in den neuen Repositories alle benötigten Pakete vorliegen.
In yaVDR niemals direkt das von Ubuntu bekannte Standard-Script do-release-upgrade
benutzen. yaVDR bietet hierfür - wenn nötig - ein Wrapper-Skript namens yavdr-release-upgrade
. Wer diese Warnung missachtet, erhält hinterher ein nacktes Ubuntu-System ohne yaVDR-Komponenten.
29.04.2011: Anmerkungen zur kommenden Version yaVDR 0.4: Es wird nach derzeitiger Planung nicht möglich sein, von yaVDR 0.3 zu yaVDR 0.4 upzugraden. Eine Neuinstallation ist unumgänglich. Begründung:
- yaVDR 0.4 wird auf Ubuntu 11.04 Natty Narwhal basieren, damit wäre ein mehrschrittiges Update von yaVDR 0.3 (Lucid Lynx) über Ubuntu Maverick auf Natty nötig.
- Für Ubuntu Maverick gibt es keine Pakete in den yaVDR-Repositories.
- yaVDR 0.4 wird höchstwahrscheinlich nur als 64bit-Version erscheinen und man kann nicht von 32bit auf 64bit upgraden.