Mittwoch, 30. April 2008

duplicity und ftplicity auf Microsoft FTP Server

Versucht man mit duplicity oder ftplicity auf einen Microsoft FTP-Server zu sichern, erhält man folgende Fehlermeldung:

The filename, directory name, or volume label syntax is incorrect

Dies liegt daran, dass duplicity standardmäßig Dateinamen mit Dopplepunkten erzeugt, die ein Microsoft Betriebssystem nicht verarbeiten kann. Zum Glück gibt es eine duplicity-Option, mit der auf ein anderes Format für Dateinamen umgeschaltet werden kann:

--short-filenames

If this option is specified, the names of the files duplicity writes will be shorter (about 30 chars) but less understandable. This may be useful when backing up to MacOS or another OS or FS that doesn’t support long filenames.

Jetzt gilt es nur noch ftplicity zu überzeugen, diese Option zu verwenden. Da es keinen entsprechenden Parameter in der Konfigurationsdatei gibt, muss man die Programmdatei von ftplicity direkt bearbeiten: um die Zeile 80 herum muss man in der letzten Zeile der Funktion

function ftply { # die eigentliche Wrapper-Funktion
FTP_PASSWORD="$ZIEL_PW" \
PASSPHRASE="$GPG_PW" \
TMPDIR="$TEMP_DIR" \
$DUPLICITY --encrypt-key $GPG_KEY \
--sign-key $GPG_KEY --verbosity $VERBOSITY \
"$@"
}

die zusätzliche Option eintragen:

function ftply { # die eigentliche Wrapper-Funktion
FTP_PASSWORD="$ZIEL_PW" \
PASSPHRASE="$GPG_PW" \
TMPDIR="$TEMP_DIR" \
$DUPLICITY --encrypt-key $GPG_KEY \
--sign-key $GPG_KEY --verbosity $VERBOSITY \
--short-filenames "$@"
}

Danach klappt das Backup auch mit einem Microsoft FTP-Server.

Dienstag, 15. April 2008

GWT das Heimtelefonieren abgewöhnen

Der Hosted-Modus des GWT prüft bei Google, ob die aktuellste Version verwendet wird. Wer dies abschalten möchte, der editiert .java/.userPrefs/com/google/gwt/dev/shell/prefs.xml. Diese Datei enthält die Uhrzeit der nächsten Abfrage in Millisekunden seit 1970. Da dies ein long ist, kann man getrost zwei, drei Neuen vornedran schreiben. Danach gibt es für absehbare Zeit kein nach Hause telefonieren mehr.

Donnerstag, 28. Februar 2008

Exception mit JAX-RPC und SAAJ

Verwendet man JDK 1.6 und JAX-RPC in der mit NetBeans ausgelieferten Version, so erhält man u.U. folgende Exception:

Exception in thread "main" java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl cannot be cast to com.sun.xml.messaging.saaj.soap.MessageImpl
at com.sun.xml.rpc.client.StubBase._postSendingHook(StubBase.java:231)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:324)

Die Ursache hierfür ist eine inkompatible SAAJ-Bibliothek. Nach dem Installieren der aktuellen Version von https://saaj.dev.java.net/ klappt es.

Mittwoch, 23. Januar 2008

Java druckt nicht unter Ubuntu 7.10

Versucht man unter Ubuntu 7.10 aus einem Java-Programm etwas heraus zu drucken, so erhält man auf den meisten Systemen diese Exception:

java.lang.NullPointerException: null attribute
at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)

die Ursache hierfür ist die Drehbarkeit der Seite in CUPS v1.3. Hierbei wird beim Modus "automatisch" ein Nullpointer zurückgegeben, mit dem die aktuelle Java-Version noch nichts anfangen kann:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6633656

Damit man trotzdem drucken kann, muss man entweder
  • die Seitendrehung von "automatisch" auf einen festen Wert stellen
  • CUPS auf eine ältere Version umstellen
Da bei meinem Drucker die erste Option nicht ging, hab ich die zweite realisiert. Hierzu musste ich zuerst in der Datei /etc/apt/sources.list Feisty als Quelle angeben:

deb http://de.archive.ubuntu.com/ubuntu/ feisty main restricted

Dann in der Datei /etc/apt/preferences - die ich neu erstellen musste - folgenden Eintrag machen:

Package: cupsys
Pin: version 1.2.8-*
Pin-Priority: 1001

Danach kann man mit

sudo apt-get update
sudo apt-get upgrade

die Version von CUPS auf die ältere deaktualisieren und das Drucken klappt wieder.

Mittwoch, 7. November 2007

Sprache bei Ubuntu/Gutsy ändern

Ich sag's ja, wenn man Windows-Administratoren Linux-Maschinen installieren lässt: bei der Installation "Englisch" als Sprache ausgewählt! Klar, unter Windows macht man das so, damit man die Updates früher bekommt, bzw. damit Dritt-Software überhaupt funktioniert. Also die Sprache umstellen. Der altbekannte Weg

sudo dpkg-reconfigure localeconf

funktionierte unter Feisty, aber unter Gutsy nicht mehr. Hier muss man händisch die Datei

/etc/default/locale

Folgendes eintragen:

LANG="de_DE.UTF-8"

noch das Sprachpaket installieren:

sudo apt-get install language-pack-de

dann das altbewährte

sudo dpkg-reconfigure locales

und schon hat man nach einem Relogin alles auf Deutsch. Genauer beschrieben ist es hier:

http://wiki.ubuntuusers.de/Spracheinstellungen

Donnerstag, 1. November 2007

nVidia Netzwerkkarten, Hibernate/Suspend und fehlende Netzwerkkonfiguration

Ich habe einen nVidia Corporation CK8S Ethernet Controller auf meinem Asus Board. Nach einem Suspend erhält die Karte keine IP-Adresse mehr. Den Grund dafür liefert ein dmesg:

0000:00:05.0: Invalid Mac address detected: 71:4a:28:d8:11:00
Please complain to your hardware vendor. Switching to a random MAC.

Bzw ein ifconfig, der nach jedem Suspend/Resume-Zyklus eine neue Netzwerkkarte (eth1, eth2 usw) anzeigt.

Aha: nach jedem Resume wechselt die MAC-Adresse, woraufhin mein Ubuntu von einer neuen Netzwerkkarte ausgeht. Ein Blick in /etc/udev/rules.d/70-persistent-net.rules zeigt auch das ganze Ausmaß der Katastrophe: viele Einträge mit unterschiedlichen MAC-Adressen. Laut einem Forums-Post handelt es sich hier um "reversed IP-address", was man im BIOS abstellen kann. Wer keine entsprechende Option findet, oder wie ich keine Lust hat, den Rechner neu zu starten, der stellt seine Netzwerkkonfiguration von MAC-Adresse auf PCI-Adresse um: die korrekte PCI-Adresse steht in der dmesg-Ausgabe; alternativ kann man auch die Ausgabe von lspci für die Netzwerkkarte verwenden und "0000:" davor schreiben (wer hat schon mehrere PCI-Busse installiert?). Dann passt man die Datei

/etc/udev/rules.d/70-persistent-net.rules

an, indem man den Eintrag

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:28:4a:71", NAME="eth0"

durch

SUBSYSTEM=="net", DRIVERS=="?*", ID=="0000:00:05.0", NAME="eth0"

ersetzt, wobei natürlich die passende ID einzutragen ist. Danach klappt es dann auch mit dem Netzwerk nach einem Resume.

Dienstag, 30. Oktober 2007

VirtualBox Shared Folder

Die VirtualBox ist eine gute Alternative zu VMware & Co, die zudem unter der GPL steht. Recht praktisch sind die "Shared Folder", mit denen man ein Verzeichnis des Gastgebes freigeben und vom Gast aus zugreifen kann. Realisiert ist das für Windows als CIFS-Freigabe. Leider bekommt man leicht eine Meldung in der Art "Fehler 67" Name nicht gefunden. Die Ursache hierfür ist sind fehlende oder falsch installierte Gasterweiterungen. Mir ist es passiert, dass ich eine Virtuelle Maschine unter Linux mit Version 1.5.0 installiert habe und dann unter MacOS X mit Version 1.4 nutzen wollte und eben diesen Fehler erhielt. Zur Lösung habe ich die Gasterweiterungen deinstalliert

  • mit "regedit" im magischen "Run"-Verzeichnis das Starten der Gasterweiterungen entfernt
  • kurzfristig den Grafikkartentreiber umgestellt und beim obligatorischen Reboot dann die automatische Hardwareerkennung abgebrochen habe
  • die Dateien aus C:\Programme und C:\Windows\System32 gelöscht (alles mit "innoprakt" und "vbox" im Namen)
Danach kann man die restlichen Dateien entfernen und die älteren Gasterweiterungen installieren. Und schon klappt auch das

net use x: \\vboxsvr\share