YaVDR/Updates und Upgrades
Inhaltsverzeichnis |
Updates und Upgrades
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.
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 [www.vdr-portal.de 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.
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 Web-Frontend
Paketupdates einzuspielen ist seit yaVDR 0.3 auch YaVDR/Webfrontend#yaVDR_Pakete über das Web-Frontend möglich.
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.
Wer auf Nummer sicher gehen will, kann vor dem Paketupdate gern auch den VDR-Daemon stoppen. Das 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.
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
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.
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.