YaVDR/Updates und Upgrades

Aus VDR Wiki
Wechseln zu: Navigation, Suche
yavdr-logo-blue-bg.png
HDTV und XBMC in Deinem Wohnzimmer -
basierend auf Nvidia VDPAU, VDR und Ubuntu Linux
Diese Seite ist Teil der deutschsprachigen yaVDR-Dokumentation im VDR Wiki. Wir empfehlen Einsteigern die Lektüre der yaVDR-FAQ.

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.yavdr_logo_small.gif


Inhaltsverzeichnis

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

Warnung
Warnung

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.


Hinweis
Hinweis

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.

Warnung
Warnung

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.


Warnung
Warnung

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.