Ubuntu Pakete downgraden und upgrades verhindern

Manchmal gibt es mit einer neueren Version eines Paketes Probleme mit Software die es verwendet, so dass man gezwungen ist bei einer älteren Version zu bleiben. apt bietet dafür recht einfache Mechanismen.

Automatisches Downgrade

Natürlich stellt man die Probleme erst fest, wenn das neue Paket installiert ist, als muss erstmal die alte Version wieder her. Die alte Version findet man im Log von dpkg:

$ grep upgrade /var/log/dpkg.log
2014-05-30 10:27:28 upgrade mercurial 2.8.2-1ubuntu1 3.0-1ppa1~precise1
2014-05-30 10:27:28 upgrade mercurial-common 2.8.2-1ubuntu1 3.0-1ppa1~precise1

Hier wurde mercurial von Version 2.8.2 auf 3.0 aktualisiert. Mit etwas Glück kann man mit der alten Versionsnummer einfach auf die alte Version zurück:

sudo apt-get install mercurial=2.8.2-1ppa2~precise1

In dem speziellen Fall funktionierte das bei mir leider nicht:

E: Version '2.8.2-1ppa2~precise1' for 'mercurial' was not found

Manuelles Downgrade

Ein manuelles Downgrade ist eigentlich auch nicht viel Arbeit, eigentlich muss man nur die Pakete manuell herunterladen und direkt mit dpkg -i installieren. Es kann nur etwas lästig sein Abhängigkeiten zu finden.

wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mercurial/mercurial-common_2.8.2-1ubuntu1_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mercurial/mercurial_2.8.2-1ubuntu1_amd64.deb
sudo dpkg -i mercurial_2.8.2-1ubuntu1_amd64.deb mercurial-common_2.8.2-1ubuntu1_all.deb

Zukünftige Upgrades verhindern

Damit Ubuntu das Paket auch bei zukünftigen Upgrades auf dieser Version hält müssen wir apt das noch mitteilen:

sudo echo "mercurial hold" | sudo dpkg --set-selections

Und schon werden für das Paket keine Updates mehr installiert. Natürlich ist das keine Dauerlösung, wenn man das eigentliche Problem behoben hat und das Update gefahrlos installiert werden kann muss man apt auch das wieder mitteilen:

sudo echo "mercurial install" | sudo dpkg --set-selections

Das ist alles.

Wörter aus SwiftKey entfernen

Seit einiger Zeit ärgere ich mich über ein paar Wörter die die SwiftKey-Tastatur mit der Zeit gelernt hat und die ich immer wieder vorgeschlagen bekomme. Die Wörter kann man relativ einfach (aber nicht ganz intuitiv) wieder entfernen. In den Einstellungen der Tastatur sucht man nach einer Möglichkeit das Wörterbuch zu bearbeiten, aber wenn man direkt beim Vorschlag länger auf das Wort tippt bekommt man die Möglichkeit das Wort aus dem Wörterbuch zu entfernen.

Screenshot_2014-02-05-14-19-38

Eigentlich ganz praktisch an der Stelle, ist schnell erledigt und man muss es nicht extra nochmal raussuchen.

GRUB mit btrfs wiederherstellen

Bei meinem Versuch den GRUB bei einer Ubuntu-Installation mit btrfs wiederherzustellen stieß ich heute auf eine unerwartete Fehlermeldung:

$ grub-install --recheck /dev/sda
Path '/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.

Nach einigen Versuchen fand ich die Lösung in diesem Blogbeitrag. Mein Fehler war, dass ich einfach /dev/sda1 nach /mnt gemountet, aber nicht das subvolume angegeben hatte. Also wie gewohnt eine Shell von CD oder DVD booten, dann:

mount -t btrfs -o subvol=@ /dev/sda1 /mnt/
mount -o bind /dev /mnt/dev
mount -t proc proc /mnt/proc
chroot /mnt /bin/bash
grub-install --recheck /dev/sda

Wichtig ist hier der Parameter -o subvol=@ .

Natürlich nicht vergessen /dev/sda(1) durch die richtigen Platten und Partitionen zu ersetzen.

Kleiner Tipp am Rande wenn die Remote-Konsole Tastenkombinationen mit alt-gr blockiert: @ ist ASCII 64 (ALT gedrückt halten und 64 auf dem Nummernblock tippen). Bei der iDRAC 7 Konsole von Dell ist das nötig.

Service aus dem letzten Jahrhundert?

Ab und an bekomme ich (wie die meisten anderen Kunden vermutlich auch) von O2 eine SMS mit Werbung für ihre anderen Angebote, immer mit einem freundlichen Hinweis Link zum Abbestellen am Ende.

Screenshot_2013-12-19-09-09-39

Geht man auf besagten Link gibt es jedoch nicht, wie man erwarten würde, die Möglichkeit zum Abbestellen der Werbung, nein, man soll doch bitte eine Email schicken. Service aus dem letzten Jahrhundert? weiterlesen

Steam auf dem Vormarsch ins Wohnzimmer

steamos_header

Nachdem für den Freitag eine erste Beta von SteamOS angekündigt war hatte ich für das Wochenende eigentlich nur eins geplant: ausprobieren. Nachdem ich am Samstag die .zip-Dateien heruntergeladen hatte und versuchte daraus ein bootbares .iso zu erstellen kam dann recht schnell die Ernüchterung. Die von Valve angegebenen Hardwareanforderungen konnten von der Zotac ZBox ID41, auf der ich es eigentlich installieren wollte, nicht mal ansatzweise erfüllt werden und das Killer-Feature, das ich eigentlich testen wollte, nämlich das In-Home Streaming, scheint dort noch gar nicht implementiert zu sein.

Steam auf dem Vormarsch ins Wohnzimmer weiterlesen

PHP Fehlerdiagnose

Bei PHP-Installationen ist meistens die Fehlerausgabe deaktiviert, was bei Produktivumgebungen in der Regel auch sinnvoll ist. Während der Entwicklung oder bei der Fehlerdiagnose ist das jedoch eher hinderlich.

error_reporting(E_ALL ^ E_NOTICE); // Alle Fehler ausser Hinweisen anzeigen
ini_set("display_errors", 1); // Fehler im Script selbst anzeigen

Wenn man die Fehler nicht ausgeben möchte (z.B. in einem Produktivsystem) kann man sie auch im Fehlerprotokoll des Webservers sehen.

Bei manchen Webspace Hostern hat man allerdings keine Möglichkeit auf das Fehlerprotokoll des Webservers zuzugreifen. Möchte man trotzdem PHP Fehlermeldungen sehen kann man das Log auf eine eigene Datei umbiegen:

ini_set("log_errors", 1); // Fehler ins Protokoll schreiben
ini_set("error_log", "/path/to/php_errorlog.log"); // Pfad zu eigenem Fehlerprotokoll setzen

Natürlich funktioniert das nur wenn der Hoster die Benutzung des ini_set Befehls erlaubt, einige Hoster verbieten das.