Category Archives: Uncategorized

Zurück im Jahr 2000 mit fli4l

Ich befinde mich gerade auf den Chemnitzer Linux-Tagen 2010 am Stand von eisfair und fli4l. Unser überaus schicker Standrouter1 ist ein sogenanntes WRAP Board, also schon bisschen abgehangen. Der Hersteller hat hier leider keine Pufferbatterie für die RTC vorgesehen, so dass die Uhr nach jedem Stromausfall am 1.1.2000 um 0:00 (UTC) losläuft.

Nun läuft selbstverständlich fli4l (in der aktuellen Version 3.4.0) auf der Kiste und dort gibt es das Paket (bei fli4l traditionell opt genannt) chrony, was eben chrony bereitstellt, einen kleinen Dienst um die Zeit über NTP abzugleichen. Den Sprung von 2000 auf 2010 möchte der aber nicht automatisch abgleichen, so dass hier ein manueller Eingriff erforderlich ist. Die nötige Prozedur ist leider nicht ganz selbsterklärend, daher hier das kurze HowTo, wie man dort vorgehen kann.

Schritt 1: Den chronyd mit den richtigen Optionen neu starten. Per default wird dort bloß -r gesetzt. Die Option -s erlaubt auch das Setzen der RTC über chrony. Also erstmal per ssh einloggen. Dann:

killall chronyd
chronyd -r -s

Schritt 2: Beim chronyd einloggen. Dazu gibt man auf der Shell einfach chronyc ein. Per default darf man dann erstmal fast nichts, aber man kann das vom Paketmaintainer hinterlegte Passwort eingeben, um mehr Rechte zu erlangen. Bitte wie folgt eingeben:

chronyc
password dummy

Schritt 3: Die Zeit setzen. Dazu erlaubt man sich das zunächst mal mit dem Befehl manual, dann setzt man die Zeit und dann sagt man ihm noch, dass er das auch der RTC verklickern soll. Beim Setzen der Zeit reicht es das auf eine Minute genau zu machen, den Rest erledigt chrony später ganz normal per NTP.

manual on
settime 2010-03-14 08:55

Bei der Eingabe von settime springt die von chronyd erzeugte CPU-Last auf über 90%. Nach einem weiteren Neustart von chronyd, ist die Zeit gesetzt, ich kann nicht sagen warum, aber der pragmatische Ansatz funktioniert hier. Also:

killall chronyd
chronyd -r -s

Jetzt passt schonmal die Systemzeit, ein rtcdata im chronyc zeigt aber noch die alte Zeit der RTC. Also führt man hier nochmal ein trimrtc aus. Die Änderung braucht ein paar Minuten um übernommen zu werden, das geschieht aber dann automatisch.

So, und jetzt wo die Zeit vom Messerouter richtig eingestellt ist, freuen wir uns auf den zweiten Tag hier. Gestern war es schon gut besucht und es waren viele freundliche Interessenten am Stand. Der Sonntag Morgen läuft etwas ruhiger an, da könnte man eigentlich nochmal einen Kaffee trinken …

Update: die so gesetzte Uhrzeit übersteht auch einen Soft Reboot. D.h. wenn man das WRAP hinter eine USV hängt, braucht man die ganze Prozedur nur einmal auszuführen! ;-)

  1. wo alle Besucher nur fragen, wo man die Hardware kaufen kann []

HowTo: Auf Kanal 13 funken mit Debian

Unter uns sind neue Nachbarn eingezogen. Im Gegensatz zu den alten Nachbarn, verfügen diese über WLAN. Damit sind sie nicht die einzigen, im Funkspektrum tummeln sich hier ständig mindestens ein halbes Dutzend Funkzellen – kennt man vermutlich heutzutage aus jedem deutschen Mietshaus.

Grund genug für meinen Mitbewohner, den Kanal unseres WLAN-Access-Points mal in eine bisher wenig genutzte Region zu verschieben: Kanal 13. Nachtigall ick hör Dir trapsen, war da nicht mal was, mit Kanälen, die in den USA verboten sind, in Europa aber nicht? Muss wohl so sein, und da Debian ja fürsorglich ist, ist die Einstellung für USA default – obwohl, wenn man sich die Lösung ansieht, kann man Debian vermutlich nicht mal die Schuld in die Schuhe schieben.

Was also, wenn das Notebook jetzt nur Netze bis Kanal 11 anzeigt? Dann legt man unter Debian eine Datei in /etc/modprobe.d/ an. Wie die heißt, ist nicht so wichtig, bei mir heißt die wlan_EU.conf, auf .conf sollte sie wohl enden. Drin steht bei mir folgendes:

options cfg80211 ieee80211_regdom=EU

Eine Zeile, reicht aus. Die übergibt dem Kernelmodul cfg80211 beim Laden die passende Option und dann sind alle Kanäle sichtbar. An einigen Stellen im Weltnetz steht das “EU” noch in Anführungszeichen, also wenn’s ohne nicht klappt, dann vielleicht mit.

Xen: Debian Squeeze DomU in Debian Lenny Dom0

Aus der Reihe »Sonntag nachmittag für Frustrationstolerante« heute Folge 137 aus der Reihe »Virtualisierte Maschinen und freie Betriebssysteme«. Folgende Ausgangssituation: Server mit installiertem Debian Lenny als Xen Host (Dom0), es laufen diverse virtuelle Maschinen (DomU), unter anderem welche mit Debian Etch, eisfair-1, eisfair-2 und eben auch eine mit Debian Squeeze, dem aktuellen Testing-Zweig der Debian-Distribution. Bis auf die DomU mit eisfair-1 liefen alle virtuellen Maschinen bis dato mit dem Kernel 2.6.26-2-xen-686, der auch auf dem Host zum Einsatz kommt.

Vor einigen Tagen nun gab es in Debian Squeeze ein Update von udev 149 auf 150. Das Paket verweigerte dann aber die Installation mit dem Hinweis, dass der verwendete Kernel zu alt sei. Das war durchaus nervig, weil dadurch auch die Updates anderer Pakete nicht mehr eingespielt wurden, also hieß es: Kernel-Update.

Einfach mal schnell Kernel-Update gestaltete sich dann leider nicht so einfach. Debian hat Xen quasi aus der Distribution rausgeworfen bzw. bietet keine dedizierten Xen-Kernel mehr an. Gut, das ließ sich noch relativ problemlos lösen. Die Wahl fiel auf linux-image-2.6.30-bpo.2-686-bigmem von backports.org, denn dort heißt es:

This kernel also runs on a Xen hypervisor. It supports only unpriviledged (domU) operation.

Also fix den Kernel in der Dom0 installiert. DomU runtergefahren, Config angepasst, Kernelmodule ins Dateisystem der DomU kopiert, DomU gestartet und dann – nichts. Beim Hochfahren blieb die virtuelle Maschine einfach hängen, und zwar schon so früh im Bootprozess, dass ich keine Ahnung hatte, woran das lag.

Der nächste Schritt bestand dann darin eine weitere VM zum Testen aufzusetzen und die Suchmaschine der Wahl zu befragen. Ich weiß nicht, wo ich überall gelesen habe und was ich alles probiert habe. Am Ende funktionierte der Kernel, es waren nur Anpassungen an der Xen-Config notwendig, daher erstmal hier die Config und dann noch ein paar Kommentare dazu:

kernel  = '/boot/vmlinuz-2.6.30-bpo.2-686-bigmem'
ramdisk = '/boot/initrd.img-2.6.30-bpo.2-686-bigmem'
memory  = '128'
root    = '/dev/xvda1 ro'
disk    = [ 'phy:heaven/falbala_root,xvda1,w',
            'phy:heaven/falbala_swap,xvda2,w' ]
name    = 'falbala'
vif  = [ 'mac=00:16:3e:7d:4b:a2, bridge=eth0' ]
extra = 'xencons=hvc0 console=hvc0'
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Wie man sieht, sind die Block-Devices, die in die VM gereicht werden, LVM Logical Volumes. Hier musste ich die Durchgereichten von /dev/sda* auf /dev/xvda* wechseln. Das hat definitiv mit dem verwendeten Kernel zu tun, der die Blockdevices nur noch dort ähm findet, oder so. Ich denke das war die entscheidende Änderung. In der mit »extra« beginnenden Zeile, habe ich die Angaben für die Xen-Konsole noch angepasst, irgendwo hatte ich gelesen, dass das jetzt hvc0 und nicht mehr xvc0 heißen muss. Die entsprechenden Änderungen an /etc/fstab und /etc/inittab innerhalb der virtuellen Maschine mussten natürlich auch noch vorgenommen werden, aber danach lief die DomU wieder und auch das Update von udev ließ sich problemlos einspielen. :-)

Coffee Connection: Netzwerkverbindungen mit Java im Debian Sid

Ein länglicher Titel für ein ärgerliches Problem mit kurzer Lösung:

Seit einigen Tagen mag sich Eclipse unter Debian Sid auf meinem Arbeitsnotebook nicht mehr mit dem Internet verbinden. Die Fehlermeldungen sind, je nach Modul, verschieden, laufen letztendlich aber immer auf etwas in der Form “Network noch reachable” hinaus. Erst dann fällt auch auf, wie oft ich doch bei der Entwicklung auf das Internet zugreife: Subversion und Maven funktionieren nicht mehr, Updates und das Einspielen von Plugins ist unmöglich und irgendwann – ein wichtiger Hinweis auf die Fehlerursache – stellte sich heraus, dass gar keine Java-Anwendung mehr Zugang zum Netzwerk hat.

Nachdem ich zunächst nach Fehlern bei Eclipse gesucht habe, war die Lösung nun recht nahe: Ein Blick in die Fehlerberichte für das Paket sun-java6-jdk zeigt den Bug #560044, der genau mein Problem beschreibt. Offenbar hält SUNs Java sich nicht an die Konventionen für den Umgang mit IPv4- und IPv6-Verbindungen, so dass IPv4 gar nicht mehr funktioniert.

Der Fehlerbericht enthält am Ende auch einen Workaround, der bei mir funktioniert: In der Datei /etc/sysctl.d/bindv6only.conf die Variable net.ipv6.bindv6only von 1 auf 0 setzen, und schon dürfen IPv6-Sockets auch IPv4-Pakete empfangen. [Update: Mit dem Aufruf invoke-rc.d procps restart muss die Konfiguration dann noch neu geladen werden.] Problem solved.

Nun muss dieser Bug nur noch unter dem Google-Query “Debian Eclipse network connection error” erscheinen, dann wäre er auch keinen Blogeintrag mehr wert. 8-)

Opera stellt fest

Habe gerade Opera Update auf 10.10 eingespielt und bekomme gleich als erstes folgende Meldung:

Opera hat festgestellt, dass KDE läuft.

Einige von Operas Tastaturkürzel (wie Strg+F4) könnten nicht funktionieren, da KDE diese reserviert hat.

Sie können die KDE Tastenkürzel im KDE Kontrollzentrum ändern.

WTF? Ich werde doch nicht mein ganzes System umstellen, nur weil ein einziger proprietärer Browser da gern seine eigenen Tastenkürzel hätte. Zumal ich bei Opera sowieso immer das Problem habe, dass ich mit Tastenkürzeln, die ich aus anderen Programmen kenne, dort ins Leere laufe oder völlig unerwartete Sachen auslöse. Wieso schlägt Opera nicht vor, wie man seine eigenen Tastaturkürzel ändert? Frechheit! Naja, bleibt es halt weiterhin nur der billige Pornobrowser

LaTeX zurück an den Start bringen

Neuer Tag, neue Geschichte, die ich einrichten muss. Heute ist LaTeX auf dem System dran. Wir reden immernoch von Debian Squeeze.

Erster Schritt:

aptitude install texlive-full vim-latexsuite

Ja ich weiß, das ist das Rundum-Sorglos-Paket, was mir auch sehr viel Kram auf die Platte spült, was ich nie nutzen werde. Macht nichts, so ist das halt mit Rundum-Sorglos-Paketen. vim-latexsuite will noch aktiviert werden – wie, musste ich auch erst im Netz wiederfinden. Sehr hilfreich:

man vim-addons

Soweit so gut, als nächstes habe ich dann den Ordner ~/texmf aus meinem Backup zurückgespielt. Einfach mal `texhash` eingeben hat dann allerdings noch nicht dazu geführt, dass das System da was mit anfangen wollte, also wieder Doku wälzen. Ergebnis:

mktexlsr ~/texmf

Führte erstmal dazu, dass ich das gewünschte Dokument kompilieren konnte, aber ich bekam noch Warnungen, dass was mit den Fonts nicht stimmte:

LaTeX Font Info:    Try loading font information for OMS+lmss on input line 110
.
LaTeX Font Info:    No file OMSlmss.fd. on input line 110.

LaTeX Font Warning: Font shape `OMS/lmss/m/n' undefined
(Font)              using `OMS/cmsy/m/n' instead on input line 110.

LaTeX Font Info:    External font `lmex10' loaded for size
(Font)              <10> on input line 110.
LaTeX Font Info:    External font `lmex10' loaded for size
(Font)              <7> on input line 110.
LaTeX Font Info:    External font `lmex10' loaded for size
(Font)              <5> on input line 110.

Die Suche, wie man das beheben kann, war nicht so super aufschlussreich. Ich hab das dann wie folgt beheben können, wo bei ich nicht weiß, ob das jetzt die eleganteste Lösung ist:

usepackage{textcomp}

Alles in allem, ich schau grad mal auf die Uhr, über eine Stunde, um den Kram zusammenzusuchen, um dann festzustellen, dass ich auch noch das Dokument übersetzen muss, weil es in Englisch geschrieben ist. *sigh*

HowTo: Windows booten mit Debian und GRUB 2

Bei Debian wurde vor einigen Wochen das neue GRUB 2 in Debian Testing (Squeeze) gespült, das alte GRUB, welches das jetzt offiziell »GRUB Legacy« heißen soll, ablöst. Bei Ubuntu ist das übrigens auch für das nächste Release (Karmic) geplant, das in wenigen Tagen rauskommen wird. Wer diese Systeme als einzige auf einem 08/15-PC einsetzt, wird von dem Wechsel vermutlich kaum etwas mitbekommen.

Auf meinem neuen Netbook ist nun Windows XP Home vorinstalliert gewesen. Ich hab das mitbezahlen müssen und ich gebe zu, dass ich es draufgelassen habe, einfach um ab und zu nochmal Diablo II spielen zu können, ohne da im Linux große Verrenkungen anstellen zu müssen mit Installation, Spiele-3D-Grafik oder gar Wine. Nun ist es drauf und ich will es auch booten können. Der Installer von Debian Stable (Lenny) hatte das seinerzeit korrekt erkannt und in der Konfiguration von GRUB Legacy eingetragen.

Beim Upgrade auf GRUB 2 hat Debian diesen Eintrag nun schlichtweg ignoriert. Es hat auch keine neue Suche nach alternativen Betriebssystemen angestrengt, obwohl man vermutlich nur ein bisschen Code aus dem Installer hätte nutzen müssen. In der Liste der zum Boot möglichen Systeme tauchte Windows jedenfalls nicht auf.

Wie das nun bei dicken Rewrites so ist, die noch während des Beta-Stadiums ohne richtige Dokumentation auf die Nutzer losgelassen werden: man steht erstmal im Regen. Dazu kommt, dass der Distributor sich dann noch was ausdenkt, um das sauber in sein System zu integrieren. Bei der Suche, wo ich das nun eintragen müsste, hab ich dann folgendes herausgefunden:

Die neue Config-Datei von GRUB 2 ist /boot/grub/grub.cfg. Das erste was bei Debian drin steht:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

Soviel Hilfe hätte ich gar nicht erwartet. In /etc/default/grub kann man zunächst mal ein paar Optionen für den Kernel zum Laden setzen. Sowas wie quiet oder vga=789 oder ähnliches. Die Syntax ist selbsterklärend.

In /etc/grub.d liegen dann verschiedene Skripte:

-rwxr-xr-x 1 root root 3223 12. Sep 18:08 00_header
-rwxr-xr-x 1 root root 1152 12. Sep 17:56 05_debian_theme
-rwxr-xr-x 1 root root 3221 10. Aug 19:49 10_linux
-rwxr-xr-x 1 root root 4418 12. Sep 18:08 30_os-prober
-rwxr-xr-x 1 root root  281  7. Okt 23:07 40_custom
-rw-r--r-- 1 root root  483 10. Aug 19:49 README

Die sollte man auch alle brav in Ruhe lassen, wenn man sich nicht wirklich gut mit Shell-Scripting auskennt. Allerdings ist 40_custom genau der richtige Ort für unseren Eintrag um Windows zu booten. Dieser Eintrag sieht dann ungefähr so aus, bzw. gleich mal die ganze Datei, damit das klar wird:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows XP" {
    set root=(hd0,2)
    chainloader +1
}

Auch dies ist nur ein Shell-Script, das irgendwann im Update-Prozess für die Konfigurationsdatei von GRUB 2 ausgeführt wird. Bei der Angabe der Partitionsnummer aufpassen, da gab es eine Verschiebung um +1 gegenüber GRUB Legacy. Jetzt also noch den abschließenden Debian-spezifischen Befehl ausführen, um die neue grub.cfg zu schreiben und schon kann man wieder Windows booten:

update-grub

Update: Seit dem Update von heute, 24.01.2010, erkennt Debian Squeeze die Windows-Installation wieder automatisch. D.h. man kann den Inhalt aus /etc/grub.d/40_custom wieder rausnehmen. Einmal update-grub aufrufen sollte danach genügen, um Einträge für Windows in die Liste zu zaubern.

Update: Die Option vga=789 ist übrigens keine gute Wahl mehr. Spätestens seit Kernel 2.6.32-3 ist KMS, also Kernel Based Mode Setting, aktiv und funktioniert auch und wenn man dann vga setzt, kommt man aus dem X nicht mehr per Strg+Alt+F2 auf die »normale« Konsole.

Einheitliches Verhalten des Compose Key unter Debian

Ich bin gerade dabei mein neues Netbook (Samsung NC10) einzurichten. Ein Problem, das ich auch schon beim alten Notebook hatte: das Verhalten des Compose Key, den ich übrigens gern auf Caps Lock lege, ist in Gnome bzw. GTK-Anwendungen nicht deckungsgleich mit anderen Anwendungen in X wie beispielsweise Qt-Anwendungen. Man findet dann im Netz häufig den Tipp, man müsse die Umgebungsvariable GTK_IM_MODULE="xim" setzen. Nur wird immer nicht so recht klar, wo genau. Ich hab die Zeile unter Debian Squeeze jetzt in $HOME/.xsessionrc eingetragen bzw. die Datei extra dafür angelegt. Das funktioniert jetzt so und beim nächsten Mal, wenn ich das Problem hab, schlage ich hier nach anstatt ewig zu probieren und zu suchen…

Nachtrag: Um die Frage aus den Kommentaren noch aufzugreifen, ich habe natürlich keine dedizierte Compose-Taste, so wie in der Wikipedia auf den Bildern zu sehen. Vielmehr kann man unter Linux andere Tasten mit dieser Funktion belegen. Ich verwende dazu die ansonsten nutzlose Taste Caps Lock. Die Verwendung des Compose Key ist dann simpel. Einmal Compose Key drücken und dann eine meist intuitive Sequenz von anderen Tasten danach. So gibt beispielsweise Compose + T + M das hier: ™. Praktisch ist das auch, wenn man oft ausländische Buchstaben hat. Das norwegische ‘ö’ gebe ich ein, indem ich Compose + / + o drücke: ø. Viele dieser Kombinationen sind wirklich intuitiv und man erreicht so auf einfache Weise eine große Vielzahl von Unicode-Zeichen, die man sonst nur schwierig einfügen kann. :-) Hier nun noch ein Foto von der deutschen Tastatur des Samsung NC10:

Keyboard Layout Samsung NC10

Ausgesperrt bei Nacht

Ursprünglich hatte ich angefangen, diesen Beitrag in meinem noch recht neuen privaten Blog zu schreiben (der Tux hat übrigens auch eins), im Laufe des Schreibens wurde das dann aber doch zu technisch und passt eher hier her.

Warum also ausgesperrt? Es begann vor einigen Wochen, als mein bis dato stets zuverlässiges Notebook Samsung X05 plötzlich ab und zu stehen blieb, also einfror, sprich im laufenden Betrieb plötzlich nichts mehr ging. Mauszeiger ging nicht mehr, Bildschirminhalt änderte sich nicht mehr und sämtliche Tastatureingaben waren wirkungslos. Da half nur harter Reset und fortan Notebook nicht mehr bewegen, was natürlich die erwünschte Mobilität ad absurdum führt.

Unterdessen sah ich mich nach einem Ersatz um, der noch etwas leichter und kleiner als das 14″-Gerät (Masse etwa 2.1kg) sein sollte. Mittlerweile bestellt ist das Samsung NC10 in schwarz mit UMTS-Option. Ich hoffe, dass es ebenso zuverlässig sein wird, die technischen Daten und Testberichte stimmen da optimistisch. (Meine Erfahrungen damit, speziell im Hinblick auf Linux, werden folgen.)

Wenige Stunden nach der Bestellung dachte ich mir dann, dass ich das BIOS-Passwort, was beim alten Laptop stets abgefragt wurde, mal abschalten könne. Das wiederholte Eingeben bei den ganzen hardwarebedingten Reboots war etwas nervig. Gesagt getan: im BIOS-Setup dann keine Möglichkeit das abzuschalten, nur es zu ändern. Im Dialog zum Ändern hab ich also einfach zweimal Enter gedrückt und dann war ich ausgesperrt. Seitdem wird weder zwar immernoch das Passwort abgefragt, aber weder das alte Passwort noch einfach »Enter« drücken hilft. Es endet stets mit der Meldung »System disabled«, wohlgemerkt noch vor dem eigentlichen Booten.

Zunächst sei dazu angemerkt, dass ich das für einen schweren Bug in der BIOS-Software halte, weil der Nutzer an keiner Stelle darauf hingewiesen wird, dass sich der Rechner bei dieser Art Eingaben so verhält. Oder anders gesagt: das Ding hat sich hier an meinen durch langjährige Erfahrung geprägten Erwartungen vorbei verhalten. :-/

Die offensichtliche Lösung im Weltnetz ein passendes Master-Passwort zu finden, war zum Scheitern verurteilt und so wendete ich mich an den Support von Samsung. Ich erwähnte wann und wo ich das Gerät gekauft hatte und zudem, dass ich wegen räumlicher Trennung derzeit nicht in der Lage bin, an den Kassenzettel zu kommen. Interessiert Samsung aber nicht:

Da das BIOS-Passwort eine sicherheitsrelevante Einrichtung darstellt, benötigen wir aus rechtlichen Gründen eine Legitimation von Ihnen, zum Beispiel in Form eines Kaufbelegs, bevor wir Ihnen mit der Entsperrung eines BIOS-Passworts behilflich sein können.

Ok, war zu erwarten, wirft aber dennoch die Frage auf, was ich machen soll, wenn ich das Gerät beispielsweise gebraucht ohne Original-Kassenbon oder Quittung gekauft hätte? Wie soll ich da mein Eigentum nachweisen? Fotos mit mir und dem Gerät beim Verkäufer? Router-Logfiles mit der MAC-Adresse? Ich meine, ich verstehe ja, dass die das nicht jedem potentiellen Langfinger erzählen wollen, aber dann sollen sie doch bitte das BIOS-Setup so programmieren, dass man sich nicht versehentlich aussperren kann. :-(

Nachtrag: Mittlerweile habe ich den Kassenbon eingescannt und an Samsung geschickt. Heute bekam ich den Rückruf und gemeinsam mit dem Support-Menschen, konnte das Problem näher eingegrenzt werden. Nach dreimaliger Fehleingabe des Passworts zeigt das Notebook einen längeren String an, den man dem Support-Menschen vorliest. Der wiederum erzählte mir dann das aktuelle Passwort, das mir dann seltsam bekannt vorkam. Es stellte sich heraus, dass es genau zwei Passwörter gibt: ein System-Passwort und ein User-Passwort. Ersteres benötigt man, um ins BIOS-Setup zu gelangen, letzteres nur um den Rechner zu starten. Das Problem war nun, dass ich vergessen hatte, dass ich unterschiedliche Passwörter vergeben hatte. Ich wäre also noch mit dem eigentlich bekannten System-Passwort ins BIOS-Setup gekommen. Dort stellte ich dann fest, dass die zuvor als buggy gebrandmarkte Methode das Passwort wieder zu entfernen doch korrekt funktionierte. Ich konnte also beide Passwörter auf diese Weise wieder »clear« bekommen. Das einzige Problem war nun, dass anscheinend das System-Passwort beim Boot abgefragt wurde, wenn das User-Passwort nicht gesetzt war. Das muss man dann aber auch wissen. ;-)

Automatische Keyword-Ersetzung mit Mercurial

In der Diskussion zu CRE130 über verteilte Versionsverwaltungssysteme kam die Frage auf, ob man Mercurial für die Bearbeitung von LaTeX-Files nutzen und dort dann vielleicht sogar eines der Pakete rcs, rcsinfo, rcs-multi, svn, svninfo, svn-multi oder vc verwenden kann. Ersteres ist kein Problem. Selbstverständlich kann man mit Mercurial seine LaTeX-Dokumente versionieren.

Die automatische Ersetzung von sogenannten Keywords, wie man das von RCS, CVS oder Subversion kennt, lässt sich bei Mercurial über die Erweiterung Keyword Extension realisieren, die bei Mercurial gleich dabei ist. Damit das möglicherweise mit einem der oben genannten LaTeX-Pakete zusammenspielt, beschreibe ich nun, wie man die Keywords denen von Subversion maximal ähnlich aussehen lässt.

Zunächst muss man die Erweiterung aktivieren. Das macht man am besten nicht global sondern einzeln im Repository, indem man im Repo in die Datei .hg/hgrc folgendes einfügt:

[extensions]
keyword =

Auf welche Dateien die automatische Ersetzung angewendet wird, bestimmt man in einem weiteren Abschnitt, hier z.B. für alle Dateien mit der Endung .txt in allen Unterordnern des Repositorys:

[keyword]
**.txt =

Die Ausgestaltung der Keywords kann man nun mit der Template Engine (in anderem Zusammenhang in Kapitel »Customizing the output of Mercurial« des großartigen Mecurial Buchs beschrieben) von Mercurial selbst vornehmen. Es gibt zwar default Keywords, aber in der .hg/hgrc definiert man die besser selbst. Meine aktuellen Einstellungen sehen wie folgt aus:

[keywordmaps]
Author = {author}
Date = {date|isodate}
Id = {file|basename} {rev}:{node|short} {date|isodate} {author|user}
Revision = {rev}:{node|short}

In einer Testdatei führt das dann zu folgendem Ergebnis bei der Ersetzung:

$Author: Alexander Dahl <alex@antiblau.de> $
$Date: 2009-08-13 10:43 +0200 $
$Id: bar.txt 1:986b794ecbb1 2009-08-13 10:43 +0200 alex $
$Revision: 1:986b794ecbb1 $

Um das dem Output von Subversion noch ähnlicher zu machen, könnte man den Teil für die Revision sogar noch auf {rev} abkürzen. Hier ist allerdings zu beachten, dass die Revisionsnummern von Mercurial nicht global eindeutig sind, sondern nur für das jeweilige Repository gelten.