Schlagwort-Archive: linux

Ubuntu Upgrade von Yakkety Yak zu Artful nach Zesty end of life

Zum aktuellen Zeitpunkt kommt es bim Upgrade von Ubuntu 16.10 Yakkety Yak zu Problemen, da die nächste Version 17.05 Zesty bereits nicht mehr unterstützt wird. Ein kleines Bisschen Nachhilfe verhilft den Installationsscripten zur Fähigkeit, trotzdem upzudaten.

Ursprünglich habe ich das als Frage bei Askubuntu gestellt. Wurde aber als angebliches duplicate geschlossen. Naja, als ob mich wirklich interessieren würde, wie und wann ein Release auf den Servern verschoben wird… :O Auf jeden Fall habe ich das hier mal aufgeschrieben.

Vorbemerkungen

Die Installationsdateien für unterstützte Versionen von Ubuntu liegen auf http://archive.ubuntu.com/ubuntu, sobald die Versionen nicht mehr unterstützt werden, sind sie unter http://old-releases.ubuntu.com/ubuntu zu finden.

Um den Ubuntus Updatemanager zum Aktualisieren zu bewegen, müssen die Pfade „nur“ manuell abgeglichen werden.

Download der Installationsskripte

Erster Schritt der Installation ist der Download des Updaters für das nächste Release. Das Skript unter /usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeFetcherCore.py lädt (versucht es zumindest) eine gepackte Datei mit der Software für das Upgrade für die entsprechende Version und die Zugehörige Signatur herunter. Sobald das erfolgt ist, wird die Korrektheit überprüft, die Datei entpackt und das Setup-Programm gestartet.

Man kann einerseits den DEFAULT_MIRROR auf http://old-releases.ubuntu.com/ubuntu ändern und das Skript findet nun die neue Datei, verifiziert sie und entpackt in ein temporäres Verzeichnis. Falls man manuell verifizieren mag oder auf die Verifikation verzichtet, kann man die Datei auch direkt hier herunter laden:

http://old-releases.ubuntu.com/ubuntu/dists/zesty/main/dist-upgrader-all/current/zesty.tar.gz

Ausführen des Updates

Ob man nun das Setup vom Startskript mit angepassten Pfaden starten lässt, oder manuell herunterlädt und startet, die Pfade zu den Zesty-Paketquellen sind falsch. Das Setup modifiziert die Quellpfade in /etc/apt/sources.lst so dass sie auf die nächste Version zeigen, das heißt in unserem Fall von yakkety zu zesty. Da Zesty nun jedoch schon end of life ist, müssen die Paketquellen über den angepassten Releasenamen hinaus auch noch auf die alten Pfade zeigen.

Die Aktualisierung der Quellen wird in DistUpdateController.py durchgeführt. Die Methode rewriteSourcesList (beginnend etwa in Zeile 520) ändert diese Pfade anhand einer langen Fallunterscheidung. Die Standardpaketquellen werden in der Bedingung validMirror or thirdPartyMirror (etwa in zeile 690) überprüft und angepasst. Ein Eintrag aus der Datei sources.lst ist in der Variable entry gespeichert, im Feld entry.uri wird der Pfad zu den Paketquellen angegeben und in entry.dist die Aktuelle Ubuntu Releaseversion.

Um die Aktualisierung durchführen zu können, müssen die Pfade auf old-releases gesetzt werden. Dabei muss sowohl der normale Archivpfad, aber auch der Pfad zu Security-Paketen angepasst werden. Um sicher zu gehen habe ich auch den DE mirror angepasst:

                if entry.uri == "http://archive.ubuntu.com/ubuntu" and entry.dist.startswith("yakkety"):
                    entry.uri = "http://old-releases.ubuntu.com/ubuntu"
                if entry.uri == "http://de.archive.ubuntu.com/ubuntu/" and entry.dist.startswith("yakkety"):
                    entry.uri = "http://old-releases.ubuntu.com/ubuntu/"
                if entry.uri == "http://security.ubuntu.com/ubuntu" and entry.dist.startswith("yakkety"):
                    entry.uri = "http://old-releases.ubuntu.com/ubuntu"

Das Update starten

Endlich kann nun das Update mit

sudo ./zesty --mode=server --frontend=DistUpgradeViewText

gestartet werden.

Geschrieben von Kap. Zuletzt geändert am 30. Januar 2018.

UMS als systemd Service

Der Universal Media Server ist praktisch um Musik oder Filme und Serien zum Beispiel über eine Playstation abspielen zu können. Besonders wenn man einen kleinen Server laufen hat. In dem Fall soll der UMS natürlich beim Systemstart ebenfalls starten. Leider hat der UMS manchmal aber auch seine macken, insbesondere leidet er an gelegentlichen Exceptions und lässt den Speicher voll laufen.

Installation als Service

Neuere Systeme, z. B. CentOS 7 oder die aktuelle LTS Ubuntu-Variante Yakkety Yak nutzen systemd anstelle von init.d zum Starten von Systemdiensten. Es gibt einige Ressentiments dagegen und viele Diskussionen. Es spielen sogar irgendwie Nazis rein :D

[…] he’s your typical German that’s into efficiency and control, and that’s the philosophy the software is built around. Doing everything as efficiently as possible with whatever is available. This doesn’t mesh too well with the (arguably very American) Linux philosophy of modularity and freedom of choice. [1]

Gemeint ist hier wohl Entwickler Lennart Poettering und sein Beitrag zur Klärung. Ein weiter deutscher Entwickler ist Kay Sievers, der durch seine Art scheinbar Stress mit Linus Torvalds hat, der mal wieder einen seiner epischen Rants abgelassen hat

Wie dem auch sei, man kann den UMS auch mit systemd starten.

Zur Konfiguration des Media Servers als Service wird in der Datei

/etc/systemd/system/ums.service

die Konfiguration hinterlegt. UMS kommt bereits mit einem Startscript namens UMS.sh, was als Startkommando ExecStart hinterlegt wird. Wie es sich gehört, sollte der Media Server auch mit seinen eigenen Benutzerrechten laufen, in diesem Fall als Nutzer ums.

Im bereich [Install] wird angegeben, wann der Service gestartet werden soll, in diesem Fall also beim Systemstart vom Ziel multi-user.

[Unit]
Description=Universal Media Server
 
[Service]
Type=simple
User=ums
Group=ums
ExecStart=/opt/UMS/UMS.sh
 
[Install]
WantedBy=multi-user.target

Nun muss der Service noch aktiviert werden.

systemctl enable ums.service
systemctl start ums.service

Neustart des Service

Eigentlich könnte es das schon gewesen sein. Leider stürzt der Server manchmal ab oder belegt zu viele Resourcen. Eine Möglichkeit das zu umgehen ist ein regelmäßiger Neustart.

Das kann man mit systemd auch automatisieren, es ist ein cron ähnlicher Scheduler enthalten (siehe feature creep ;) ) Die Umsetzung ist aber etwas umständlich. Zunächst benötigt man einen eigenen Service

/etc/systemd/system/umsRestart.service

dessen Aufgabe darin besteht, den gerade definierten UMS Service neu zu starten. Er soll danach direkt beendet werden, und nicht wieterlaufen. Es ist daher eigentlich kein Service im eigentlichen Sinne. Dazu wird der Type als oneshot definiert. Um einen systemd-Service neu zu starten kann der Befehl try-restart genutzt werden.

[Unit]
Description=Universal Media Server Restart Service
 
[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart ums.service

Nun fehlt noch der Timer. Dazu wird ein dritter systemd-Service benötigt, der diesmal ein anderer Typ ist und daher in der Datei

/etc/systemd/system/umsRestart.timer

mit der Endung .timer spezifiziert wird. Die genaue Uhrzeit kann als Parameter OnCalendar im 24-Stunden-Format angegeben werden, zum Beispiel nachts wenn normalerweise nichts läuft. Die verschiedenen Timer werden vom Target timer verwaltet.

[Unit]
Description=Universal Media Server Restart Timer
 
[Timer]
OnCalendar=4:45
Persistent=true
 
[Install]
WantedBy=timer.target

Damit nun alles läuft, muss die neuen Services noch gestartet werden:

systemctl daemon-reload
systemctl start umsRestart.service

Testen

Eine Liste der aktuell laufenden Timer kann mit

systemctl list-timers

angezeigt werden. Wenn alles funktioniert hat ist der UMS Restart Service in der Liste enthalten:

NEXT                         LEFT          LAST                         PASSED               UNIT                
Di 2017-04-11 00:04:01 CEST  42min left    Mo 2017-04-10 13:07:02 CEST  10h ago              apt-daily.timer     
Di 2017-04-11 02:21:04 CEST  2h 59min left Mo 2017-04-10 19:32:02 CEST  3h 49min ago         snapd.refresh.timer 
Di 2017-04-11 04:45:00 CEST  5h 23min left Mo 2017-04-10 04:45:02 CEST  18h ago              umsRestart.timer    
Di 2017-04-11 22:33:35 CEST  23h left      Mo 2017-04-10 22:33:35 CEST  47min ago            systemd-tmpfiles-clean.timer

4 timers listed.

Wichtig ist, dass der Universal Media Service tatsächlich läuft. Ansonsten kann er nämlich nicht neu gestartet werden. Das kann man testen, indem der Restart-Service direkt ausgeführt wird. Es erscheint dann eine zugegebenermaßen nicht sehr verständliche Fehlermeldung:

$ systemctl status umsRestart.service
● umsRestart.service - Universal Media Server Restart Service
   Loaded: loaded (/etc/systemd/system/umsRestart.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mo 2017-04-10 04:45:02 CEST; 18h ago
 Main PID: 28192 (code=exited, status=203/EXEC)
 
Apr 10 04:45:02 k systemd[1]: Starting Universal Media Server Restart Service...
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Main process exited, code=exited, status=203/EXEC
Apr 10 04:45:02 k systemd[1]: Failed to start Universal Media Server Restart Service.
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Unit entered failed state.
Apr 10 04:45:02 k systemd[1]: umsRestart.service: Failed with result 'exit-code'.
Geschrieben von Kap. Zuletzt geändert am 22. April 2017.

MySports in Linux

Leider gibt es erstmal keinen Port von MySports auf Linux. Es gibt zwar einen Open-Source-Tool zum Auslesen der Daten, aber zur Benutzung der offiziellen Software bleibt man auf eine Lösung mit VirtualBox (die vermutlich einzige brauchbare Software von Oracle) und Windows angewiesen. Die folgenden Schritte beziehen sich alle auf Ubuntu, sollten jedoch ähnlich auf allen gängigen Distributionen funktionieren.

Um die Uhr über USB anzuschließen und in VirtualBox verfügbar zu machen sind einige Schritte notwendig. Automatisch tut sich da nichts, von wegen universelles Plug & Play und so ;-) Zunächst mal zeigt KDE kein angeschlossenes Gerät beim einstecken an. Es lässt sich aber leicht überprüfen, ob ein gerät eingesteckt ist:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 003: ID 1390:7474 TOMTOM B.V. GPS Sport Watch [Runner, Multi-Sport]

Es sieht also schonmal so aus, dass die Uhr vorhanden ist. In VirtualBox kann man in den Eigenschaften einer virtuellen Maschine festlegen, welche der im Host-System vorhandenen Geräte im Gastsystem verfügbar sein sollen. Das Symbol mit dem USB-Stecker und dem grünen + zeigt (eigentlich) die vorhandenen Geräte an. Zunächstmal ist die Liste jedoch leer. Über die Kommandozeile kann man das natürlich auch machen:

$ VBoxManage list usbhost
Host USB Devices:
 
  <no devices>

Diesen Konflikt zwischen den beiden Ausgaben gibt es, weil USB standardmäßig nicht unterstützt wird. Zunächst mal muss das Oracle VM Extension Pack installiert sein, und zwar in der gleichen Version wie VirtualBox. Dies kann man so überprüfen:

$ VBoxManage --version
5.1.2r108956
 
$ VBoxManage list extpacks
Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      5.1.2
Revision:     108956
Edition:      
Description:  USB 2.0 and USB 3.0 Host Controller, Host Webcam, VirtualBox RDP, PXE ROM, Disk Encryption.
VRDE Module:  VBoxVRDP
Usable:       true 
Why unusable:

Die Version (5.1.2) stimmt schonmal überein und USB ist generell verfügbar. Damit die Geräte von VirtualBox erkannt sein, muss der Benutzer jedoch auch Mitglied der Gruppe vboxusers sein:

sudo usermod -a -G vboxusers <useruame>

Damit die Änderungen übernommen werden, muss man sich einmal aus- und wieder einloggen. Nun sind auch die USB-Geräte verfügbar:

$ VBoxManage list usbhost
Host USB Devices:
 
UUID:               05f7f0e1-8d84-4cf7-bd2c-7f11753a02a8
VendorId:           0x1390 (1390)
ProductId:          0x7474 (7474)
Revision:           2.0 (0200)
Port:               1
USB version/speed:  2/Full
Manufacturer:       TomTom
Product:            TomTom GPS Watch
SerialNumber:       HE4045G02754
Address:            sysfs:/sys/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.2//device:/dev/vboxusb/001/004
Current State:      Busy

Bei einem Update der distribution, zum Beispiel von Wily Werewolf auf Xenial Xerus, kann es passieren dass man das Ganze nochmal machen muss oO

Geschrieben von Kap. Zuletzt geändert am 2. August 2016.

Ich und mein Computer: Symbolische Links

Es gibt eine ganze Liste von Fehlern, die ein Computer so haben kann. Deichkind beschreiben in ihrem Song Ich und mein Computer einige davon. Die meisten davon waren mit bekannt, und einige wie „Festplatte Voll“ und „Falsche Version, Update nicht verfügbar“ hatte ich natürlich auch schon. Selbstverständlich auch den Refrain „Sanduhr – Sanduhr“.

Auf meinem Linux-Rechner bin ich vor der Sanduhr verschont, dafür gibt es aber ein Problem, an das der Typische Windws-User nicht denkt. (Bei Äpfeln gibts das theoretisch auch, da ja auch ein Unix drunter ist. The More You Know ;) )

The More You Know - Have A Mac? - You Use UNIX!

Nun hatte ich das Problem, dass Wuala auf dem Linux-Rechner ein Verzeichnis nicht synchronisiert. In der Sync-Übersicht (Strg+F9) wurde bei dem Sync-Auftrag zwar ein grünes Häkchen angezeigt, die Größe des Verzeichnisses stand aber bei 0 B, obwohl das Verzeichnis ganz sicher Dateien enthielt. Nach langem Suchen, was wohl die Ursache sein könnte, fand ich heraus dass ~/Data ein symbolischer Link auf ein anderes Verzeichnis war. Wuala scheint symbolische Links nicht zu unterstützen, nach Änderung auf den absoluten Pfad klappte auch das synchronisieren.

:facepalm: ich hatte das gleiche Problem bereits mit Thunderbird, das den Profilordner nicht ordnungsgemäß lädt, wenn er einen symbolischen Link enthält.

In dem Sinne: Programm findet Daten nicht, symbolischer Link benutzt!

Geschrieben von Kap. Zuletzt geändert am 20. November 2013.

OMG, they have a time machine!

Heute wollte ich euch Vim Habits 2.0 vorstellen, ein Tech Talk, den Bram Moolenaar vor einigen Jahren gegeben hat. Er präsentiert dort einige Tricks, die das Leben mit Vim einfacher machen. Das wichtigste dabei ist, dass man neue Tricks regelmäßig Anwenden muss, damit man wirklich effektiver wird, daher auch der Titel.

Brams Webseite ist übrigens der Wahnsinn. Die ist sowas von 90er! Der totale Web-Flashback… es gibt sogar einen Webring. (Man beachte, dass Webringe, quasi zeitgleich mit dem Internet geboren, seit der Übernahme durch Yahoo! gestorben sind und nur noch eine Existenz als Zombi führen.)

Auf Brams Webseite gibt es auch eine DivX-Version des Videos zum runterladen.

Geschrieben von Kap. Zuletzt geändert am 17. Juni 2013.

Einfaches Öffnen von Dateien von der Kommandozeile in Linux

Ich habe auf Macs den netten Befehl open gesehen, mit dem man von der Kommandozeile Dateien mit dem zugehörigen Programm öffnen kann, zum Beispiel Bilder oder PDF-Dokumente.

Da Mac OS ja auf Linux basiert, hätte ich vermutet, dass es sowas auch auf meinem Ubuntu-System gibt. Leider hat sich das als falsch herausgestellt. Nach einigem Suchen bin ich im Internet auf ein Programm namens xdg-open entdeckt, was das gleiche tut.

Leider ist der Name nicht so schön zu schreiben, ich empfehle daher den Eintrag

alias open=xdg-open

zur ./bashrc hinzuzufügen.

Geschrieben von Kap. Zuletzt geändert am 21. März 2013.