Most ist mehr als less ist mehr als more

Es gibt so ein paar Programme, die einen kaum hinter dem Ofen hervorlocken können. Ihnen fehlt es einfach an der nötigen Coolness und Freshness, sind darüber hinaus sogar schon teilweise mehr als zwei Dekaden alt, haben keine grafische Oberfläche und können auch nicht mit dir reden. Trotzdem wirst du sie zum (Über)Leben auf der Konsole brauchen.
Möchte man z.B. die Nachrichten beim Booten nochmal durchlesen, kann man sich bei vielen Distributionen des kleinen Werkzeugs dmesg bedienen. Leider muss man schon mindestens Erster im Schnelllesewettbewerb der Integrierten Gesamtschulen gewesen sein, damit man all die Informationen rechtzeitig aufnehmen kann, während sie in Höchstgeschwindigkeit im Terminal vorbeiziehen.
Hier kommt ein Pager wie less, more oder sogar most ins Spiel. More befindet sich standardmäßig in jedem Debian System, less auch sofern man nicht alle Pakete bei der Netzinstallation abgewählt hat und most muss ggf. nachinstalliert werden.

dmesg | most

Damit wird die komplette Ausgabe von dmesg durch most "gepipt", womit man sich nun alles Seite für Seite betrachten kann, indem man die Space-Taste betätigt oder mit den Pfeiltasten scrollt. Ein flashiges Feature von most ist das horizontale Scrollen mit <> oder TAB und die Unterteilung der Ausgabe in weitere Fenster, die sich mit STRG-X 2 z.B. unterteilen lässt. Mit STRG-X o springst du zum nächsten Fenster und kannst es mit l sperren. Ein * zeigt diesen Zustand an. Sind beide Fenster so gesperrt scrollen sie ab sofort zusammen. Das kann in einigen Situationen beim Lesen helfen, obwohl ich es nicht wirklich oft brauche. Mit / lässt sich wie bei vi gewohnt nach Begriffen suchen.
Bei dem gegebenen Beispiel geht es aber meist mit

dmesg | grep "Suchbegriff"

schneller. Das wäre es auch fast mit den faszinierenden Optionen eines Pagers. Der allgemeine Konsens scheint zu sein, dass most > less > more ist. Ja, etwas verwirrend. Ich habe jahrelang less eingesetzt, weil less auch rückwärts scrollen konnte und benutze nun most, wegen der oben beschriebenen Eigenschaften aber vor allem, weil es man-Seiten farbig anzeigen kann. 🙄
Es gab schon spannendere Geschichten, aber das Leben (auf der Konsole) ist hart und dieses ist mit Sicherheit eines der härtesten. Und so sieht most in Aktion aus.

Downloadmanager für die Konsole

Linux bietet einige sehr effiziente Programme, um Downloads zu steuern und dabei nur wenige Systemressourcen in Beschlag zu nehmen. Genau richtig bei älteren Rechnern oder einfach nur für alle, die gerne das Maximum herausholen möchten.

Wget

Wget ist der bekannteste Downloadmanager unter Linux. Er ist praktisch in jeder Linuxdistribution standardmäßig installiert und wird in vielen Skripten eingesetzt, um Dateien aus dem Internet herunterzuladen. Eine seiner Vorgaben war Dateien auch über unzuverlässige Netze herunterladen zu können, weswegen wget auch abgebrochene Downloads an der gleichen Stelle wieder aufnehmen kann.
Wget ist nicht-interaktiv und lässt sich einsetzen, um Downloads im Hintergrund auszuführen. Die Anwendung kann dabei problemlos mit http, https und ftp umgehen. Proxies werden ebenfalls unterstützt.
Wget beherrscht den rekursiven Download von Dateien und besitzt die Fähigkeit dabei auch Links zu folgen.
Die Bedienung ist denkbar einfach:

wget http://meinedomain.de/verzeichnis/dateiname

Mit Wget lassen sich z.B. auch Dateien von ftp Servern herunterladen und direkt über stdin an mplayer übergeben, wobei in diesem Fall noch ein 8MB großer Cache genutzt wird.

wget ftp://meinedomain.de/beispiel.ogv -O - | mplayer -cache 8192 -

Wget ist die erste Wahl auf jedem Linuxsystem, wenn man so wenig Mehraufwand wie möglich haben möchte und in der Regel brauche ich auf einem Computer auch selten etwas anderes.
Noch mehr Beispiele gibt es wie gehabt mit man wget oder z.B. auch auf ubuntuusers.de.

axel

Eine der seltenen Fälle stellt sich dann ein, wenn große Dateien über eine langsame Verbindung heruntergeladen werden müssen. Seitdem ich Linux nutze und die Anbindung an die Server der zentralen Paketverwaltung meistens hervorragend sind, wurde die Notwendigkeit für einen Downloadbeschleuniger immer seltener.
Hier kommt axel ins Spiel. Axel ist winzig klein, hat keine Abhängigkeiten mit anderen Programmen und ist ideal, wenn man über http und ftp Dateien beschleunigt herunterladen möchte. Das kleine Programm startet dabei mehrere Threads, die die Leitung zum Glühen bringen.

Beispiel
axel -a -o testdatei http://meinedomain.de/verzeichnis/dateiname

Der Parameter -a zeigt eine alternative Fortschrittsanzeige an. Mit -o lässt sich die Ausgabe in einen anderen Dateinamen umbenennen. Eine Besonderheit ist die Option -Sx, wobei x für eine positive, natürliche Zahl steht. X gibt die Anzahl der Spiegelserver an, die nach der Datei durchsucht werden sollen, um den schnellstmöglichen Download zu ermitteln. Dabei wird auf die Datenbank von filesearching.com zurückgegriffen.

aria2

Aria2 ist ein vielfältiger und umfangreicher Downloadmanager für die Konsole. Er hat mehr Abhängigkeiten als axel, bietet dafür aber auch mehr Feature an.
Neben der Möglichkeit von http, https und ftp Downloads, beherrscht aria2 zusätzlich noch den Download mit Bittorrent und Metalinks.
Genauso wie bei axel lassen sich zusätzliche Threads starten, um den Download zu beschleunigen. Das Interessante dabei ist, dass aria2 in der Lage ist eine Datei gleichzeitig sowohl über http(s), ftp als auch Bittorrent herunterzuladen, zur finalen Datei zusammenzufügen und alle Dateien noch während des Downloads dem Bittorrent Schwarm anzubieten.
Beispiele aus dem Handbuch zu aria2:

Eine Datei von zwei verschiedenen HTTP Servern herunterladen

aria2c "http://host/file.zip" "http://mirror/file.zip"

Lade eine Datei von einem Host, aber mit gleichzeitig zwei Verbindungen herunter.

aria2c -x2 -k1M "http://host/file.zip"

Lade eine Datei von einem HTTP und einem FTP Server gleichzeitig herunter

aria2c "http://host1/file.zip" "ftp://host2/file.zip"

Lade alle Dateien in der Datei beispiel.txt nacheinander herunter und benutze dabei zwei gleichzeitige Verbindungen

aria2c -i beispiel.txt -j2

Weitere Beispiele gibt es im englischen aria2 Wiki.

Fazit

Wget löst im Regelfall alle Downloadprobleme und lässt sich von der Konsole auch im Hintergrund nutzen.

Axel ist die erste Wahl, wenn es auf jedes KB RAM ankommt und man oft mit langsamen Verbindungen beim Download zu kämpfen hat. Axel ist hier unschlagbar effizient.

Aria2 ist ein vollwertiges und umfangreiches Werkzeug zum Download von Dateien auf der Konsole. Es nimmt mehr Speicher als axel in Beschlag, bietet dafür aber auch mehr Möglichkeiten.

Neben dem hervorragenden rtorrent ist aria2 eine Alternative für den Download mit Bittorrent von der Konsole.
Zusammengenommen sind die Anwendungen wget, axel, aria2, rtorrent, elinks und screen ein unschlagbares Setup für die Konsole, wenn es um ressourcenschonenden und effizienten Download geht.
Ich selbst merke dabei aber immer wieder, dass entweder die Verbindung schon ausreichend schnell ist oder ich auch einfach mal ein paar Sekunden länger warten kann.
Mag aber auch sein, dass ich mit dem C64 und Amiga 500 aufgewachsen bin und mir Erfahrungen wie das Wechseln von einem Dutzend Disketten bei Monkey Island II nach jeder neuen Szene noch in Erinnerung sind. Festplatten? Hahaha.

Aus elinks mach Firefox

"Seltsam", dachte ich. Als ich eine der Vorzüge des modernen Web, Google Mail, einmal mit elinks erkunden wollte, scheiterte der Spaß schon beim Login.
Sollte er aber nicht, da elinks mit Formularfeldern und der Übertragung von Daten mit POST ansonsten gut zurecht kommt. Ich erninnerte mich dann wieder in der c't gelesen zu haben, dass selbst Opera mittlerweile von einigen prominenten Seiten ausgeschlossen wird. Wie sollte es da einem Exot wie elinks anders gehen?
Natürlich fiel K.Mandla dieses Problem vor einiger Zeit auch schon auf, weswegen ich nur noch seinen Tipp in die Tat umsetzen und den user-agent von elinks auf Firefox umändern musste.
In Elinks findet sich die Option hierfür im Optionsmanager "o" unter Protokolle->HTTP->Benutzer-Programm Identifikation.
Die magische Zeichenkette könnte z.B. so aussehen, womit man sowohl Firefox als auch ein 64 bit Betriebssystem und englische Sprache vorgaukelt.

Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5

Die Weisheit "Kleider machen Leute" trifft so auch unumwunden auf die elektronische Welt zu.
Als netter Nebeneffekt konnte ich mich danach nicht nur in Google Mail einloggen, auch der kurze Lag bei Aufruf größerer Seiten war verschwunden. Die Darstellung mancher Seiten ändert sich im positiven Sinne ebenfalls, da der Webserver nun davon ausgeht mit Firefox zu kommunizieren.

Fazit: Elinks war unschuldig. Sollten in Zukunft ähnliche Probleme auftreten, hat Google vermutlich Firefox 3.5 auf die Schwarze Liste gesetzt, wodurch wiederum nur ein erneutes Ändern des user-agents hilft.
Falls euch Alpine oder Mutt also zu langweilig wird, leistet elinks beim Email lesen gerne Hilfe.
Und so sieht Google Mail in elinks aus. 😉

Der universelle Browser namens elinks

Als ich vor zwei Jahren ernsthaft damit begann nach alternativer Software für die Konsole zu suchen, assoziierte ich mit Textbrowsern noch so etwas wie w3m oder lynx, die ich in den ersten Jahren mit Linux ausprobiert hatte. Schließlich bin ich dann auf K.Mandlas Artikel "Howto: Use elinks like a pro" gestoßen, der zu diesem Zeitpunkt auch schon wieder drei Jahre alt war.
Irgendwie erscheint die Verwendung eines Textbrowsers im Jahr 2011 ein Anachronismus zu sein, etwas was in die flashige, Javascript-animierte Online-Welt nicht mehr richtig passen mag. Dabei ist Elinks wohl der Textbrowser, der am ehesten an die Funktionalität eines grafischen Browsers heranreicht. Die Darstellung und Formatierung von Webseiten ist erstaunlich gut, obwohl er sich nur der universellen Schnittstelle schlechthin bedient - Text .
Elinks lässt sich auch durch verschiedene Skriptsprachen wie LUA, Perl oder Ruby erweitern. Dafür verzichtet man auf Javascript, Javaapplets und Flash. Ich kenne zwar keine Sicherheitsstudien zu elinks, aber allein das Fehlen dieser potentiellen Einfallstore und die Tatsache, dass https und SSL unterstützt wird, lassen mich ruhig schlafen.
Was ist nun so toll an einem Textbrowser? Für mich besteht das Universelle in elinks darin, dass er mich nicht darauf einschränkt, welche Hardware ich nutzen muss, um eine Information im Internet zu finden. Egal ob es der 15 Jahre alte Toshiba Satellite 220 cs mit 16 MB RAM oder der vor Kraft strotzende Intel 2 Duo mit 4 GB RAM ist, elinks erledigt einfach die Arbeit.
Arbeite ich unter X öffne ich einfach den Terminalemulator, gebe elinks ein und 1 Sekunde später befinde ich mich in der Adresszeile des Browsers. Adresse eintippen, Enter, Seite ist da. Da die Google-Suche schon als Smart Prefix definiert worden ist, genügt ein vorangestelltes g und der Suchbegriff um direkt zu den Suchergebnissen zu gelangen.

Das Angenehme: Elinks lässt sich sowohl effizient von der Tastatur als auch mit der Maus steuern. Ein typischer Ablauf sieht so aus:

  1. Elinks starten, URL in Adresszeile eingeben oder mit Hilfe eines Smart Prefix direkt nach einem Suchbegriff suchen. Elinks merkt sich Eingaben. Pfeiltaste Hoch und Runter bringt alte Eingaben hervor. Mit "g" ruft man jederzeit die Adresszeile wieder hervor.
  2. Mit den Pfeiltasten für Hoch- und Runter zu den Links navigieren.
  3. Mit ENTER oder der Pfeiltaste nach Rechts folgst du dem Link. Mit der Pfeiltaste nach links geht es eine Seite zurück.
  4. Drücke "t" und ein Tab öffnet sich (ja elinks kann Tabs!). Wechsle mit <> zwischen den Tabs hin und her und schließe sie wieder mit "c".
  5. Gefällt dir eine Seite, drücke "a" und speichere sie als Lesezeichen. Um alle deine Lesezeichen anzuzeigen, drücke "s".
  6. Zeigt der Link zu einer Datei, die du herunterladen möchtest, drücke "d". Es können mehrere Downloads parallel und auch im Hintergrund ausgeführt werden.
  7. Am schnellsten findet man eine bestimmte Information indem man wie bei vim mit "/" die Suche öffnet, den Suchbegriff eingibt und mit n vorwärts und mit N rückwärts sucht. Als Alternative bietet sich auch die Zeichenweise Suche an, die mit "#" gestartet wird.

Mit einem Linksklick am oberen Rand von elinks lässt sich das Menü öffnen, welches man auch mit F10 oder ESC erreichen kann. In einer grafischen Umgebung gibt es auch ein Rechtsklick-Menü.
Die Einstellungsmöglichkeiten sind zahllos. Mit "o" lässt sich der Optionsmanager und mit "k" der Tastenbelegungsmanager öffnen.
Die Darstellung der Farben in Elinks ist abhängig von den individuellen Vorlieben und des verwendeten Terminals. Am besten man navigiert im Menü zu Einstellungen->Terminaleinstellungen und passt das Ganze an.
Benutzt man also z.B. das solarized Thema könnte ein Blogpost z.B. so aussehen.


Wordpress-Blogs und jede Webseite, die Wert auf Standards legt, lassen sich gut darstellen und angenehm lesen:


Auch Bilder lassen sich in einem Textbrowser mit Hilfe externer Programme wie feh anzeigen.

Wie bei jedem neuen Programm brauch man etwas Zeit um alle Fähigkeiten kennenzulernen. Verwirrend ist am Anfang sicherlich das Verhalten von Elinks bei Formularfeldern. Man sollte zuerst auf das Feld mit den Pfeiltasten für Hoch- und Runter navigieren und danach ENTER drücken. Erst dann lässt sich etwas in das Feld schreiben. Gibt es mehrere Felder, muss man unbedingt mit den Pfeiltasten zum nächsten Feld navigieren, bevor man aus Versehen erneut ENTER drückt, was dazu führt, dass die Eingabe per POST gesendet wird.
Ich benutze mittlerweile Elinks regelmäßig auf den älteren Laptops und auf dem modernen Dual-Core-Rechner als Sekundärbrowser neben Firefox/Iceweasel. Insbesondere ist Elinks in Kombination mit meinem Feedreader canto zu gebrauchen, für das Rtorrent-Setup und, man glaubt es kaum, auch als Hilfsmittel um Youtube-Videos ohne Flashplayer mit Elinks und Mplayer abzuspielen.
Elinks kann zwar nicht alles, aber gerade wenn es nur um Text und Informationssuche geht, gelingt mit ihm vieles schneller. Fotoblogs und Flashseiten sind nicht seine Domäne. Gut geeignet ist er hingegen, wenn man überprüfen möchte, ob die eigene Seite standardkonform und barrierefrei ist. Für weitere Screenshots und Ideen empfehle ich nochmal K.Mandlas Post. Viel Spass mit Elinks!

Mplayer nur für den Framebuffer

Die ganzen gestrigen Ausführungen, wie man mit Debian Binärpakete aus dem Quellcode baut, dienten eigentlich nur einem Zweck. Ich wollte K.Mandlas "Mplayer for the framebuffer only" Tipps einmal ausprobieren.
Wie macht man Mplayer noch schneller und ressourcenschonender? Man entschlackt ihn, indem man beim Kompilieren verschiedene Feature deaktiviert. Zum Übersetzen habe ich die gestern vorgestellte pbuilder Methode genutzt.
Ziel war es, die Unterstützung für Videoausgabe ausschließlich auf das Framebuffer Device fbdev zu beschränken. In debian/rules mussten die CONFIGURE_FLAGS und der Code zum Bauen der Mplayer GUI und der nicht grafischen Version angepasst werden.
Welche Optionen es gibt, erfährt man durch ./configure --help. Mit dem Befehl debchange -nmu changelog im debian Verzeichnis des Quellpakets kann das changelog angepasst werden.
Nach jeder Veränderung in debian/rules musste ich das Quellpaket mit dpkg-source -b Name_des_Verzeichnisses neu bauen, damit die gemachten Änderungen von pbuilder auch erkannt wurden. Wer Tipps und Hintergrundinformationen dazu hat und ob es auch andere Möglichkeiten gibt, kann mich gerne darauf stoßen.
Unter den CONFIGURE_FLAGS werden noch verschiedene if-Abfragen ausgeführt. Dabei sollte man vor allem das Bauen der Mplayer GUI Version deaktivieren, wir brauchen nur den Framebuffer, und Mencoder kann auch aus debian/rules verschwinden.

CONFIGURE_FLAGS =
              --prefix=/usr
              --confdir=/etc/mplayer
              --disable-x11
              --enable-xvmc
              --enable-menu
              --disable-arts
              --enable-largefiles
              --language=de
              --disable-libdvdcss-internal
              --disable-dvdread-internal
              --disable-libavutil_a
              --disable-libavcodec_a
              --disable-libavformat_a
              --disable-libpostproc_a
              --disable-libswscale_a
              --disable-openal
              --disable-sdl
              --disable-aa
              --disable-esd
              --disable-jack
              --disable-tv-v4l1
              --disable-tv-v4l2
              --disable-runtime-cpudetection
              --disable-mga
              --disable-smb
              --disable-gui
              --disable-lirc
              --disable-lircc
              --disable-liblzo
              --disable-fribidi
              --disable-libdv
              --disable-musepack
              --disable-speex
              --disable-cdparanoia
              --disable-dvdnav
              --disable-libamr_nb
              --disable-live
              --disable-mad
              --disable-mencoder
              --disable-gl
              --disable-pulse
              --enable-fbdev
              --disable-3dfx

Alles in allem hat das bei mir dazu geführt, dass das mplayer .deb Paket von 3 MB auf 1,7 MB geschrumpft ist. Zum Testen gelangte es dann auf den Toshiba Portégé 3110 CT, wo ich Youtube Videos mit Elinks und Mplayer angeschaut habe.
Auch mit einer angepassten Mplayer Version lassen sich h264 Videos nicht ruckelfrei in Vollbild auf einem PII 300 MHZ 64 MB RAM Laptop anschauen. Dennoch mit einer kleinen Modifikation des youtube-dl Skripts, ließen sich zumindest manche h263 Videos mit niedrigster Auflösung betrachten, wozu ich einfach die Option -f 5 anstelle von -f 34 übergeben habe.
Wichtig sind auch die kleinen Mplayer Tweaks und die Tipps in der MPlayer FAQ.
Zu einem Screenshot mit fbgrab reichte es aber, auch wenn dadurch der Laptop kurzzeitig ausgelastet war.

Gibt man dem alten Rechner eine Chance mit mpeg1/2 Videos und nutzt nicht gerade den CPU lastigen h264 Codec, sieht das Ganze besser aus. Über das Abspielen auf dem zwei Jahre jüngeren Dell Inspiron 4000 brauche ich nicht viele Worte verlieren. Das klappte auch schon vorher problemlos.
Als Fazit lässt sich sagen das selbst maßgeschneiderte Software nicht immer das Unmögliche schaffen kann, aber angesichts des zwölf Jahre alten Laptops noch brauchbare Ergebnisse liefert. Selber Kompilieren ist auf jeden Fall lehrreich. Debians Mplayer Binärpaket ist aber nicht fühlbar schlechter.
Auf jeden Fall gewinnt ihr ein paar Geek Punkte bei dem bleichen Geek von nebenan hinzu und vom Rest gibt es immerhin Augenrollen 🙄 , Kopfschütteln und sanftes Klopfen auf die Schulter.
Das Leben ist nicht immer fair.

Wie man Debian-Pakete aus den Quellen baut

Im folgenden möchte ich ein paar Wege aufzeigen, wie man ein Binärpaket mit Debian erzeugt. Das Ganze ist mehr als Merkzettel zu verstehen und ersetzt nicht die offizielle Dokumentation zur Erstellung von Binärpaketen mit Debian. Am Ende finden sich nützliche Links für alle, die sich mehr mit den technischen Details beschäftigen möchten. Außerdem finden sich dort auch Links zu Videos, die den Prozess ausführlich und nachvollziehbar erklären.
Die folgende Übersicht ist in Teilen eine Übersetzung des englischen Howto "How to build a package from source the smart way".

Der bessere Weg - Debianisierte Quellen kompilieren

Der allgemeine Weg ein Binärpaket aus den Quellpaketen zu erstellen läuft immer so ab:

  1. Zuerst muss der Paketmanager wissen, woher er die Quelldateien beziehen soll, wozu die Datei /etc/apt/sources.list modifiziert wird.
  2. Dann wird das Quellpaket als normaler Nutzer heruntergeladen.
  3. Dann wird dpkg-buildpackage ausgeführt, um ein .deb Paket zu erstellen.
  4. Und schließlich wird dpkg -i benutzt, um das .deb Paket zu installieren.

1. Folgende Zeile in die /etc/apt/sources.list eintragen, sofern man sid installiert hat.

deb-src http://ftp.de.debian.org/debian/ sid main

2. Die Paketabhängigkeiten zum erfolgreichen Kompilieren als root installieren

aptitude update
aptitude install build-essential fakeroot devscripts
aptitude build-dep Paketname

3. Quellen herunterladen und Binärpakete bauen (alle weiteren Befehle als normaler Nutzer ausführen)

mkdir /home/XXXX/tmp/
cd /home/XXXX/tmp/
apt-get source Paketname
cd Paketname-version/

Nun kann die Datei debian/rules oder weitere debianspezifische Dateien wie debian/control oder debain/changelog angepasst werden. Ein wichtiges Programm hierfür ist debchange welches sich im Paket devscripts befindet.
Nach der Konfiguration wird das .deb Paket erstellt.

dpkg-buildpackage -rfakeroot -us -uc

Mit -us -uc überspringt man den Schritt, bei dem üblicherweise Debian Pakete vom Paketersteller signiert werden.
4. Installieren

cd /home/XXXX/tmp/
dpkg -i Paketname_Version_Architektur.deb

Nicht debianisierte Quellpakete kompilieren

Obwohl Debian ein riesiges Paketarchiv hat, kann es vorkommen, dass es zu einem Paket noch keine angepasste Debianversion gibt. Hierzu muss also das Original-Tarball mit den Quellen von der Projektseite heruntergeladen werden und anschließend mit dem Debianprogramm dh_make in eine debianisierte Version umgewandelt werden. Die Abhängigkeiten des Pakets müssen dann manuell mit apt installiert werden.

aptitude install dh-make

Als normaler Nutzer wieder:

mkdir /home/XXXX/tmp/
cd /home/XXXX/tmp/
tar -xvf Paketname_Version.tar.gz
mv Paketname_Version/ paketname-version/
mv Paketname_Version.tar.gz paketname_version.orig.tar.gz

Die Benennung des Pakets und die Unterstriche sind wichtig, damit sie Debians Konventionen entsprechen. Anderenfalls wird dh_make eine Fehlermeldung ausgeben. Danach in das entpackte Verzeichnis wechseln und dh_make ausführen.

dh_make

dh_make wird eine Reihe von Fragen stellen und schließlich müssen die Felder für den Paketbetreuer ausgefüllt werden. (das was man mit aptitude show zu sehen bekommt)
Nachdem dies erledigt ist

dpkg-buildpackage -rfakeroot -us -uc
dpkg -i paketname_version_architektur.deb

Chroot Umgebung und pbuilder

Am besten führt man alle Schritte zum Kompilieren in einer speziellen chroot Umgebung durch, die vom restlichen System getrennt ist und die sich später sehr leicht auch wieder entfernen lässt. Ein weiterer wichtiger Vorteil ist, dass Pakete, die in dieser Umgebung richtig gebaut werden, auch auf anderen Rechnern erfolgreich übersetzt werden können. Der Prozess wird dadurch reproduzierbar.
Ich benutze entweder die debootstrap Methode oder das Programm pbuilder.
1. Pbuilder installieren

aptitude install pbuilder

2. Chroot Umgebung erstellen

pbuilder create --distribution squeeze

Standardmäßig wird ein auf sid basierendes chroot Image erstellt. Die Option --distribution ändert das.
3. Pbuilder aktualisieren

pbuilder update

Falls man längere Zeit nichts mehr kompiliert hat, sollte die chroot Umgebung aktualisiert werden.
4. Quellpaket herunterladen

apt-get source Paket

5. In das Quellverzeichnis wechseln und debianisiertes Quellpaket in chroot Umgebung bauen

pbuilder build Paket_Version.dsc

Die fertigen Binärpakete befinden sich danach in /var/cache/pbuilder/result.

Der herkömmliche Weg - autoconf und automake

In den meisten Quellpaketen befindet sich ein sogenanntes configure Skript, welches automatisch von dem GNU Programm autoconf generiert wird. In der Regel muss man in das Quellverzeichnis wechseln und folgende Befehle ausführen, um ein Binärpaket zu erstellen. Zuvor müssen Abhängigkeiten manuell oder mit aptitude build-dep installiert werden.
Als Ziel für die Installation wird /usr/local gewählt, /opt ist ebenfalls eine gute Alternative.

./configure --prefix=/usr/local --beliebige Optionen zur Konfiguration

Danach genügt es mit make die Quellen zu übersetzen und mit make install die Binärpakete in das gewählte Zielverzeichnis zu installieren.

make
make install

Für Debian ist es dabei besser make install durch checkinstall zu ersetzen. Checkinstall erstellt ein .deb Paket und merkt sich wohin die Pakete installiert werden. Der Nachteil ist, dass es weder die Quelldateien debianisiert noch Paketabhängigkeiten berücksichtigen kann.

su -c "checkinstall -D make install"

Ein Beispiel für diese Methode war meine Dillo2 Kompilierung auf dem Toshiba Portege.

Links

Basics of the Debian package management system
Debian New Maintainers' Guide
Ubuntu - Packaging Guide Complete
Videos von der MiniDebConf 2010 in Berlin in Deutsch
Die .ogv Dateien zu Packaging und Advanced Packaging zeigen einen Vortrag zum Thema Paketerstellung mit Debian.
Nach der Lektüre und den Videos sollte man in der Thematik fit sein. 😉

Solarized: Massage für die geplagten Augen

Ab und an bin ich auf der Suche nach einer neuen Idee um das Terminal ein wenig zu verändern. Diese Woche bin ich an einer interessanten Farbpalette namens Solarized hängen geblieben. Ethan Schoonover hat ein, wie ich finde, elegantes Thema gefunden, welches unter anderem die Farbgestaltung diverser Terminalemulatoren und die Syntaxhervorhebung von Editoren optimiert.

Farben in Vim ändern

Als Farbschema in Vim habe ich z.B. bis vor kurzem desert genutzt und nun erst einmal auf Solarized umgestellt. Das Thema schafft es mit geringem Kontrast sowohl auf dunklem als auch auf hellem Hintergrund zu überzeugen.
Die Installation war nicht besonders schwer.

  1. Auf der Homepage von Ethan Schoonover die gezippte Datei solarized.zip herunterladen.
  2. Im Ordner vim-colors-solarized die Datei solarized.vim nach ~/.vim/colors kopieren.
  3. ~/.vimrc editieren:

    syntax enable
    set background=dark
    colorscheme solarized

Für einen hellen Hintergrund das dark einfach durch light ersetzen. Es gibt noch ein paar optionale Einstellungen, die aber gut dokumentiert sind.

Farbpalette in rxvt-unicode auf solarized anpassen

Normalerweise stelle ich keine großen Anforderungen an einen Terminalemulator (na gut vielleicht ein paar ;)), außer dass er schnell reagieren muss, wenig Ressourcen verbraucht und flexibel anpassbar ist. Hier kommt dann rxvt-unicode oder kurz urxvt ins Spiel.
Im Solarized-Ordner Xresources müssen die dort stehenden Farbwerte entweder in die Datei Xresources oder in die Xdefaults im Home Verzeichnis kopiert werden.
Nach diesen Schritten sieht eine Python Datei in Vim nun so aus.

dircolors in urxvt anpassen

Die Farben der Verzeichnisse und Dateien sahen mit dem GNU Befehl ls noch nicht "solarized" aus. Dank huyz git repository und ausführlicher Anleitung hat sich mein Terminal nun von den Standardfarben weiterentwickelt.
Aus einem nicht nachvollziehbaren Grund konnte ich die 256 Farben Version nicht nutzen (*hust* hier steht warum), obwohl die TERM Variable auf "rxvt-unicode-256color" gesetzt worden war. Die Farben waren komplett falsch. Das ANSI-Universal Thema hingegen funktionierte.

    1. Die entsprechende Datei bei seebi oder huyz git repository herunterladen.
    2. Die Datei dircolors.ansi-universal kann z.B nach ~/.dir_colors kopiert werden.
    3. Den Befehl eval `dircolors $HOME/.dir_colors` in die Datei ~/.profile einfügen.

Dann den Terminal neustarten und man sollte ähnliche (leider keine 256 Farben) Terminal-Screenshots wie bei huyz sehen.

Fazit

Solarized gefällt mir zur Zeit ziemlich gut. Die Vim-Konfiguration ist sehr angenehm für die Augen und verschiedene Syntax wird deutlich hervorgehoben. Einzelne Konsolenanwendungen funktionieren aber noch nicht perfekt mit meiner momentanen Konfiguration und solarized. So gibt es bei manchen Htop-Themen auch mal gar nichts zu lesen auf Grund unpassender Kontraste zwischen verschiedenen Schriftfarben. Da Solarized noch im Beta Stadium ist kann ich nicht 100% sagen, ob es an dem Thema liegt oder falscher Einstellungen meinerseits. Wahrscheinlich eher letzteres.
Tiefergehende Diskussionen zu diesem Thema gibt es auch hier. Als Erinnerung für mich: Um die Terminus Schriftart unter Debian für urxvt einzurichten muss das Paket xfonts-terminus installiert werden und in der .Xdefaults folgender Eintrag stehen:

urxvt*font: xft:Terminus:pixelsize=14

dict: Babylonisches Sprachwirrwarr gelöst

Was müssen das für Zeiten gewesen sein als man noch Bücher und Zeitschriften bemühen musste, um etwas über eine fremde Sprache zu lernen. Klobige, Kilogramm schwere Wälzer angefüllt mit Wissen von A-Z. Damals im letzten Jahrtausend, im fernen Mittelalter, irgendwann Mitte der 1990iger Jahre.
Doch dann wurde das tragbare Telefon erfunden und wurde irgendwann so klein, dass man keinen Koffer mehr zum Transport benötigte. Wörterbücher in praktischen Miniausgaben, maßgeschneidert für den Urlaub und unterwegs, waren lange Zeit nicht aus dem Handgepäck wegzudenken. Bis, ja bis das Zeitalter der Killerääps Einzug hielt und die Frage "Wie löse ich das Problem?" durch "Gibt es dafür ein App?" ersetzt wurde.
Zum Glück gibt es noch andere Möglichkeiten ohne Smartphone zu überleben.
Man nehme die Linuxdistribution der Wahl, installiere den Wörterbuch Client dict oder ding und schon lässt sich direkt aus einem Terminalfenster z.B. nach Englisch-Deutschen Übersetzungen suchen.

aptitude install dict dictd dict-de-en

Anschließend reicht ein dict Geek um Schockierendes herauszufinden. 😯
Natürlich gibt es auch noch dict.cc, freedict.org und leo.org , welche direkt über den Browser oder wie bei leo.org auch über Browseraddons zu erreichen sind.
Dict und Ding sind nicht wirklich neu. Doch manchmal kann man schnell vergessen, dass das zu einer Zeit schon funktionierte als Handynutzer in Schwimmbädern noch merkwürdig bestaunt wurden. Und ja das funktioniert auch heute noch auf Hardware aus der gleichen Zeit. 🙂
Noch mehr Wörterbücher für Linux.

Mach ein Bildschirmfoto mit scrot

Ein Bildschirmfoto zu machen gehört praktisch zum guten Ton, wenn man seinen Desktop präsentieren will oder ohne viel Worte in einem Forum auf ein Problem hinweisen möchte.
In der Regel genügt es mit vorinstallierten Programmen wie z.B. gnome-screenshot und einem Drücken der "Druck" Taste den Bildschirm als Foto zu archivieren. Seit längerer Zeit nutze ich auch Shutter, was viele zusätzliche Optionen bietet und dessen Plugins mir sogar oft die Nachbearbeitung mit Gimp ersparen.
Meistens hilft mir hierbei ein ganz anderes Programm für diese Art von Aufgabe und das heißt scrot.
Scrot ist eine wunderbare, kleine Anwendung, welche verschiedene Funktionen hat, um den gesamten Bildschirm oder auch nur einen Teil davon aufzunehmen und alles als .jpg oder .png Datei abzuspeichern. Mit weiteren Parametern lassen sich leicht Zeitstempel, frei bestimmbare Zeichenketten oder die Bildschirmauflösung an den Dateinamen anhängen.
Scrot lässt sich prima von einem Terminal Emulator aus bedienen. Hier sind einige Beispiele:

Beispiele

1. Den gesamten Bildschirm aufnehmen und das Foto in das aktuelle Arbeitsverzeichnis speichern.

scrot

2. Den gesamten Bildschirm nach fünf Sekunden aufnehmen und dabei das Ganze mit einem Countdown visualisieren.

scrot -cd 5

3. Warte fünf Sekunden, visualisiere die Verzögerung und nimm nur das momentan ausgewählte Fenster auf.

scrot -u -cd 5

4. Warte fünf Sekunden, mache ein Bildschirmfoto und benenne den Dateinamen mit Datumsstempel, Bildschirmauflösung und scrot als Zeichenkette. Speichere das Bild im .png Format im Verzeichnis "bilder" im Home Verzeichnis des Nutzers ab und öffne es danach mit dem Bildbetrachter feh. $f ist ein Platzhalter für die Datei.

scrot -d 5 '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'

Scrot im Menü von Openbox integrieren

Das vor kurzem vorgestellte Crunchbang Linux nutzt Openbox als Fenstermanager und hat scrot hier geschickt im Menü von Openbox integriert. Um sich das zuletzt gezeigte Kommando nicht merken zu müssen, kann man es einfach in der menu.xml wie folgt eintragen oder natürlich auch den grafischen Weg über obmenu gehen.

<menu id="graphicsScreenshots" label="Bildschirmfoto aufnehmen">
	<item label="Jetzt">
	 <action name="Execute">
	  <execute>
		scrot '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'
	  </execute>
	</action>
       </item>
       <item label="In 5 Sekunden...">
	<action name="Execute">
         <execute>
         	scrot -d 5 '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'
	 </execute>
	</action>
       </item>
       <item label="In 10 Sekunden...">
	<action name="Execute">
	 <execute>
		scrot -d 10 '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'
	 </execute>
	</action>
       </item>
       <item label="Ausgewaehlter Bereich....klicke und bewege die Maus">
        <action name="Execute">
         <execute>
		scrot -s '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'
	 </execute>
	</action>
      </item>
      <item label="Nur das Fenster">
	<action name="Execute">
	 <execute>
		scrot -u -d 5 '%Y%m%d-%s_$wx$h_scrot.png' -e 'mv $f ~/bilder/ & feh ~/bilder/$f'
	 </execute>
	</action>
      </item>
</menu>

Bei meiner ersten Begegnung mit Fluxbox bin ich damals auf tenr.de gestoßen. Ziemlich weit unten bei snippets befindet sich ein kleines Skript namens shot.sh, welches sich ebenfalls gut eignet, um den Umgang mit scrot zu vereinfachen. Ansonsten hilft wie immer auch man scrot weiter. Übrigens lässt sich mit der Option -q auch die Qualität der Aufnahme beeinflussen. 🙂

Virtualbox: Vdi- in Raw-Image konvertieren

Als ich das offizielle Handbuch zu Virtualbox durchstöberte, entdeckte ich zuerst nicht, wie man ein Vdi-Image ohne Qemu in ein Raw-Image umwandeln kann, welches ich danach mit dd auf eine Festplatte schreiben konnte.
Virtualbox bietet mit dem Kommandozeilenprogramm vboxmanage und der Option convertfromraw die einfache Möglichkeit ein Rohabbild in das eigene Format .vdi umzuwandeln. Doch wie geht es in die andere Richtung?
Eine Suche im Internet brachte mich dann auf wikibooks.org, wo ich fand, was ich suchte.

vboxmanage internalcommands converttoraw file.vdi file.raw

oder

vboxmanage clonehd -format RAW file.vdi file.raw

Als Alternative bietet sich auch weiterhin das fantastische Qemu an:

qemu-img convert -O raw file.vdi file.raw

Ist das Abbild danach umgewandelt, lässt es sich direkt mit dd auf eine Festplatte (hier: sda) schreiben oder auch mit Qemu betrachten.
dd if=file.raw of=/dev/sda
oder
qemu file.raw
Manchmal führen eben doch mehrere Wege nach Rom. 😉