OpenJDK – Java 7 – mit Ubuntu kompilieren

Geschrieben von everflux am Juli 24th, 2011

Ich habe ein merkwuerdiges SSL Problem mit Java 7 (Build 147, dem Release Candidate) im Zusammenhang mit Online-Banking und Jameica/Hibiskus:

Caused by: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
 at sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:873)
 at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:804)
 at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1319)
 ... 19 more

Schaut man sich dazu den Source Code an, sieht man schnell, dass leider die verursachende Exception verschluckt wird. (Das kommt davon, wenn Committer und Reviewer identisch sind…)
Meine Idee war also, OpenJDK selber zu bauen und da ggf. besseres Logging einzubauen. Die im Internet veröffentlichten Anleitungen sind alle ein paar Jahre alt und nicht mehr ganz korrekt, daher hier meine Ergebnisse zum Nachmachen.
Ich habe Ubuntu als System verwendet, dort ist eine Übersetzung von OpenJDK / Java 7 sehr einfach.
OpenJDK wird mittels Mercurial verwaltet, zur Hierarchiebildung wird die Mercurial Forest extension benötigt (und Mercurial). Ist das „mercurial“ Paket bereits installiert so kann man die Forest extension einfach herunterladen:

hg clone http://bitbucket.org/pmezard/hgforest-crew hgforest

Diese muss nun in die .hgrc eingetragen werden: (das „….“ durch den Pfad zum Download ersetzen)

[extensions]
forest=......hgforest/forest.py
fetch=

Danach installiert man die Build Abhängigkeiten:

sudo apt-get install build-essential gawk libasound2-dev libfreetype6-dev libcups2-dev libxt-dev libx11-dev libxtst-dev libxrender-dev

Und checkt per mercurial-forest die Sourcen fuer OpenJDK aus:

hg fclone http://hg.openjdk.java.net/jdk7/jdk7 jdk7

Da beim späteren Build noch Java Abhängigkeiten heruntergeladen werden müssen, hab ich noch folgendens in die Ant Konfiguration eingesetzt: ~/.antrc

ANT_OPTS=”$ANT_OPTS -Dallow.downloads=true”

Für den build benötigt man ein existierendes Java, und setzt folgenden Umgebungsvariablen:

export ALT_BOOTDIR=/usr/lib/jvm/java-6-sun
unset JAVA_HOME
export LANG="C"
make sanity

Da sollten keine Fehler zu sehen sein und gibt dann den „make“ Befehl (dauert bei mir rund 40 Minuten):

make

Und kann es dann aus dem aktuellen Verzeichnis testen ob „java“ vorhanden ist:

build/linux-amd64/bin/java -version

Bei mir sieht das dann folgendermassen aus:

openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-tkruse-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)

Fertig.
(Ja man benötigt wirklich keine „binary plugs“ o.a“. mehr!)

Update: Für Ubuntu 12.04 benötigt man folgende Pakete:

libcups2-dev, libfreetype6-dev, liboss4-salsa-dev

Und muss (Stand Mai 2012) auch wegen der neueren Kernelversion als die bei OpenJDK bekannten eine Environment Variable setzen:
export DISABLE_HOTSPOT_OS_VERSION_CHECK=ok

Ubuntu: PDF Annotationen

Geschrieben von everflux am Mai 30th, 2011

Kollaboration im „papierlosen Büro“ ist eine kleine Herausforderung für sich – zumindest wenn man ein gemeinsam zu bearbeitendes Dokument nicht ausdrucken, mit Notizen versehen und dann wieder zum Versand einscannen möchte. (Das wäre ja auch nicht papierlos)

Das häufigste anzutreffende Dokumentformat ist „PDF“ – ich habe mich also damit beschäftigt, welche Optionen es gibt, um ein PDF Dokument mit Anmerkungen und Notizen zu versehen. Seit Ubuntu  Nutty 11.04 ist die poppler Version, die evince zum PDF Zugriff verwendet, aktuell genug, um auch Anmerkungen zu unterstützen. Eine Alternative ist „xournal“ ein Tool für Notizen und Skizzen, das auch PDFs lesen und exportieren kann.

Die beiden Programme unterscheiden sich im Ansatz wesentlich: Während Evince auf Standard-Annotationen setzt, nutzt Xournal ein PDF als „Malunterlage“. Das hat den Vorteil, dass wesentlich flexiblere Moeglichkeiten existieren, um Anmerkungen zu machen: Kleine Skizzen wie Pfeile, Linien und geometrische Formen sagen manchmal mehr als tausend Worte.

Xournal versucht dabei den Anwender zu unterstützen: Aus einem ei-förmigen Gebilde erkennt Xournal einen schönen Kreis. Auch Dreiecke sind so möglich und sehen ästhetisch aus. Verschiedene Farben, Freitext und der obligatorische Textmarker ergänzen das Paket. Xournal eignet sich damit nicht nur zur Anreicherung von PDF Dokumenten, sondern tatsächlich auch als einfache Notiz und Skizzen Applikation.

Der Ansatz von Evince hingegen auf den PDF Standard zu setzen hat den Vorteil, dass die Anmerkungen strukturiert erfasst werden: In einer Übersicht kann man sich durch alle Anmerkungen durchklicken, sieht wer diese wann erstellt hat, und kann eigene hinzufügen. Das ist besonders dann sinnvoll, wenn mehrere Personen an einem Dokument mitwirken.

Leider unterstützt Evince derzeit lediglich Textanmerkungen – ein Textmarker fehlt. Ein weiterer Vorteil: Anmerkungen können nachträglich geändert werden – prinzipiell auch mit anderen Programmen wie dem Adobe Acrobat.

Für welche Anwendung man sich entscheidet hängt somit stark von den Anforderungen ab, und wie man die Software einsetzen möchte: In einem kommerziellen Umfeld haben sich PDF Annotationen etabliert, und man wird sich über die Möglichkeit diese endlich unter Linux ohne Acrobat einsetzen zu können freuen. Reichhaltigere Anmerkungen lassen sich mit Xournal erstellen, diese sind jedoch – einmal als PDF exportiert – im Dokument eingebettet.

Weiterlesen »

DKB Kreditkarte: Kontoabfrage mit Hibiscus/Jameica

Geschrieben von everflux am Mai 27th, 2011

Hibiscus ist ein Plugin für Jameica – zusammen ergibt sich daraus ein Homebanking Programm das auf verschiedenen Betriebssystemen läuft (überall wo Java verfügbar ist), die Software kann hier heruntergeladen werden.

Die normale Abfrage von Konten erfolgt über HBCI – dies Protokoll wird jedoch leider nicht von jeder Bank bzw. jedem Finanzdienstleister für alle Produkte unterstützt. So ist Paypal z.B. nicht per HBCI abfragbar, und auch die recht populären DKB Kreditkarten Konten nicht.

In neuen Versionen unterstützt Jameica auch Scripting und sogenannte Offline-Konten. Das sind Konten, die nicht per HBCI abgefragt werden, sondern von Hand gepflegt werden. (Z.B. kann man so ein „Bar Kasse“ Konto führen.) Mittels Scripting – und dem richtigen Script – lassen sich so nun auch Paypal und die DKB Kreditkartenkonten abfragen. Dazu laedt man sich lediglich die neueste Jameica Version herunter und installiert das Hibiscus Plugin.

Anschließend muss man noch das jameica.scripting Plugin, HTMLUnit (wird zum Screen-Scraping der DKB und Paypal Webseiten verwendet) und die Scripte für Paypal und/oder DKB installieren – dafür gibt es zum Glück ein einzelnes Archiv, welches man hier herunterladen kann.

Das Archiv entpackt man – genauso wie das Hibiscus Plugin für Jameica – in den Plugins Ordner.

Nach dem Start von Jameica hat man unter „Datei->Einstellungen“ den Punkt „Scripting“, wo man Paypal und/oder das DKB Script aktivieren kann.

Für die DKB Kreditkarte erstellt man nun ein Offline Konto – als Bankleitzahl nimmt man die der DKB (12030000), als Kontonummer verwendet man die eigene Kontonummer und als Kundennummer verwendet man die Nummer der Kreditkarte. Hier kann man die mittleren Stellen der Nummer durch „*“ ersetzen – lediglich die ersten und letzten vier Ziffern der Kreditkartennummer müssen richtig angegeben sein.

Um Doppelbuchungen zu vermeiden, sollte unter „erweitert“ noch das automatische Gegenbuchen ausgeschaltet werden.

Das Konto kann anschließend über den Knopf „per Scripting synchronisieren“ abgefragt werden. (Leider nicht zentral mit den anderen HBCI Konten – aber immerhin.)

Ubuntu Natty: Busybox v1.17.1

Geschrieben von everflux am Mai 5th, 2011

Eine frische Ubuntu 11.04 Natty Installation schlug bei mir stets fehl: es kam statt des gewohnten Ubuntu Systems lediglich ein „Busybox v1.17.1“ Prompt.

Ich hatte das Ubuntu System dabei über den „Alternate Installer“ installiert, LVM crypt fuer full disc encryption und btrfs als Dateisystem. Nichts besonderes, und es hatte bisher mit Karmic und Jaunty immer prima geklappt. So ganz genau weiss ich auch nicht, woran es liegt, jedenfalls wird die Grub Konfiguration nicht korrekt erzeugt, und dadurch kann das System nicht korrekt hochfahren.

Man kann die Grub Flags manuell editieren und in meinem Fall fehlt dabei:

rootflags=subvol=@

Hat man dies editiert, kann man mit Strg-X booten. Ein „update-grub“ alleine hat entgegen anderer Aussagen in den zugehoerigen Bugs im Canonical Bugtracker nicht geholfen.

Ich habe dann das Paket grub2 aktualisiert und nochmals „update-grub“ gemacht. Das hat jedoch auch nicht geholfen.

Schliesslich habe ich die /etc/default/grub Konfigurationsdatei editiert und da bei GRUB_CMDLINE_LINUX_DEFAULT noch „rootflags=subvol=@“ eingetragen und „update-grub“ aufgerufen.

Danach funktionierte alles wie es sollte. puh.

Ubuntu Natty: Scrollbars in Gnome Classic

Geschrieben von everflux am April 30th, 2011

Nach langem Zögern habe ich mich entschlossen Ubuntu Natty 11.04 zu testen. Am neuen Ubuntu hat mich vor allem gestört, dass jemand meint, mir vorschreiben zu müssen, was für mich das beste ist: Eine Umstellung bei der Benutzeroberfläche.

Wenn ich einen Mac möchte, kaufe ich mir einen – und keine schlechte Kopie. Innovation hin oder her, wenn es in Ubuntu 11.10 kein benutzbares Gnome mehr gibt, fliegt Ubuntu von den Desktops für die ich direkt oder indirekt verantwortlich bin. Mint, Fedora oder zurück zum guten alten Debian sind durchaus Optionen.

Keine Option ist in meinen Augen „Ubuntu classic“ dass eben nicht „klassisch“ ist. Ich betreue einige Anwender, die sich mühsam an einen Computer gewöhnt haben, und keine Zwangsbeglückung möchten (oder sich einfach nicht mehr umstellen können): Selbst in Ubuntu classic sind die Scrollbars geändert und für Computer-Anfänger massiv unintuitiv. Und dazu noch inkonsistent: In Chromium und Firefox werden nicht die „Overlay Scrollbars“ verwendet, weil es da zu Problemen kommt. Das bedeutet, dass das Benutzerinterface mal so und mal so aussieht. Das soll man dann erstmal plausibel erklären können.

Um die alten Laufleisten wieder herzustellen, verwendet man die folgenden Kommandos in einer Shell (einzeln ausführen):

sudo apt-get remove overlay-scrollbar
sudo bash
echo "export LIBOVERLAY_SCROLLBAR=0" > /etc/X11/Xsession.d/80-disableoverlayscrollbars

Firefox 4 als Ubuntu Paket installieren

Geschrieben von everflux am März 23rd, 2011

Firefox 4 ist seit gestern offiziell veröffentlicht worden – auch fuer Linux bzw. Ubuntu. Firefox 4 ist wesentlich schneller als der alte Firefox und verfügt über HTML5 Kompatibilität sowie ein aufgeräumteres Userinterface.

Wer ein Debian basiertes Linux System, wie z.B. Ubuntu, hat, sollte nach Möglichkeit Software über Pakete installieren. Zum Glück gibts es für Ubuntu ein eigenes PPA in dem stabile Versionen von Mozilla nach Veröffentlichung  bereitgestellt werden. Das spart einiges an Arbeit und bietet gegenüber dem Mozilla-Daily PPA den Vorteil, wirklich eine stabile Version zu nutzen.

Wer also unter Ubuntu Firefox 4 schon jetzt nutzen möchte, bevor dieser in den normalen Paketquellen bereitgestellt wird (falls das überhaupt geschieht und nicht erst im nächsten Ubuntu Release), der kann folgendes in eine Kommandozeile eintippen:

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update
sudo apt-get upgrade

Viel Spaß mit Firefox 4 unter Ubuntu!

Weitere Neuerungen in Firefox 4:

  • Firefox Sync bietet die Synchronisierung von Bookmarks und Einstellungen über mehrere Rechner
  • Von der neuen – stark beschleunigten – JavaScript Engine profitiert das gesamte Userinterface, nicht nur Webseiten
  • Firefox 4 ist mit vielen Erweiterungen nicht kompatibel (ok, das ist nichts neues nach einem Firefox Update)
  • „do not track“ Einstellung für verbesserte Privatssphäre
  • Mein derzeitiger Favorit: App Tabs, mittels Rechtsklick auf ein Tab kann dieser als „permanent“ gespeichert werden – praktsch für Twitter, Facebook und co

Wer ein wenig schauen möchte, wo Firefox eingesetzt wird: http://glow.mozilla.org/

Pidgin, Ubuntu und Bonjour: Probleme mit ipv6

Geschrieben von everflux am März 9th, 2011

Pidgin ist mein bevorzugter IM Client – auch unter Ubuntu Linux. Seit geraumer Zeit jedoch ärgerte mich Pidgin, es gab Probleme mit der Bonjour Kommunikation. Pidgin meldete
Unable to send the message, the conversation couldn't be started.
obwohl mein Gesprächspartner aufgeführt war. Die Umstände waren etwas schwer zu reproduzieren – mit einigen Rechnern funktionierte es, mit anderen nicht. Und genau das half mir auch eine „Lösung“ zu finden: Wurde die Kommunikation von einem Rechner aus initiiert, bei dem ipv6 deaktiviert war, funktionierte das ganze. Sonst nicht.

Unter der Haube kommt „avahi“ zum Einsatz – übrigens auch wenn es um remote Desktop Verbindungen geht. Hier hatte ich nämlich vergleichbare Probleme. Um das Bonjour und Remote-Desktop Problem zu loesen habe ich in der /etc/avahi/avahi-daemon.conf die Einstellung
use-ipv6=yes
auf
use-ipv6=no
geändert. Danach noch schnell den Avahi Dienst neu starten, und die  Probleme sind behoben. Pidgin selber wird in der nächsten Version auch einen Bugfix für dies Problem beinhalten, solange wollte ich aber nicht warten.

WLAN deauthenticating / denied association (code=17)

Geschrieben von everflux am März 5th, 2011

Lange Suche, kleine Ursache: Wenn man sich mit einem Linux Rechner nicht mit einem Linksys / Cisco WLAN Router verbinden kann, und dabei Meldungen wie z.B.


NetworkManager[1036]: (wlan0): supplicant connection state: associating -> disconnected
NetworkManager[1036]: (wlan0): supplicant connection state: disconnected -> scanning
wpa_supplicant[1234]: Trying to associate with 00:14:bf:29:c4:23 (SSID='sforce-wpa' freq=2447 MHz)
NetworkManager[1036]: (wlan0): supplicant connection state: scanning -> associating
kernel: [ 417.694909] wlan0: authenticate with 00:14:bf:29:c4:23 (try 1)
kernel: [ 417.696781] wlan0: authenticated
kernel: [ 417.697518] wlan0: associate with 00:14:bf:29:c4:23 (try 1)
kernel: [ 417.700259] wlan0: RX AssocResp from 00:14:bf:29:c4:23 (capab=0x431 status=17 aid=0)
kernel: [ 417.700267] wlan0: 00:14:bf:29:c4:23 denied association (code=17)
kernel: [ 417.700297] wlan0: deauthenticating from 00:14:bf:29:c4:23 by local choice (reason=3)

auftauchen, dann handelt es sich um folgende Phänomen: Der Router ist der Meinung, dass er voll ist, und bittet den Client, sich mit einem anderen WLAN Access Point zu verbinden.

Windows Rechner ignorieren das, und verbinden sich dennoch mit dem Access Point, während Linux – in diesem Fall ein mit Ubuntu Maverick ausgestatteter Thinkpad – der Bitte Folge leistet. Er bricht den Verbindungsaufbau mit dem Router bzw. WLAN Access Point ab.

Leider ist davon in der GUI von Ubuntu (Network Manager) nichts zu sehen, sondern es dauert einfach sehr lange, bis erneut der Dialog zur Eingabe des WLAN Passwort auftaucht. Ein Blick in „dmesg“ oder die Protokolldateien offenbart dann das Problem.

In meinem Fall ist der Router ein Linksys WRT mit Tomato Firmware – hier habe ich dann einfach die Anzahl der erlaubten Clients erhöht.

Glassfish 3.1 und httpOnly Session Cookie

Geschrieben von everflux am März 4th, 2011

Wie bereits in meinem anderen Eintrag zu Glassfish 3.1 beschrieben, ist seit der Implementierung der Servlet 3.0 Spezifikation in Glassfish 3.1 der Session Cookie standardmäßig auf „httpOnly“ gesetzt – dies kann Probleme mit einigen JavaScript Frameworks verursachen.

In dem web.xml Deploymentdescriptor kann dies umkonfiguriert werden, im glassfish-web.xml Descriptor ist dafür leider keine Möglichkeit vorgesehen. Weblogic, auch von Oracle mit BEA zugekauft, verhält sich dabei genauso, auch hier ist der Session Cookie auf httpOnly gesetzt – kann jedoch über den Weblogic spezifischen Deployment Descriptor unabhängig von der web.xml umkonfiguriert werden.

Und Glassfish 3.1 unterstützt nun auch ein Subset des Weblogic Deployment Descriptors um Weblogic kompatibel zu sein. (Vermutlich ist dies auch ein Grund, aus dem die Cookies httpOnly sind, um mit Weblogic konform zu sein.) Auch wenn es komisch ist, dass Glassfish selber keine Möglichkeit vorsieht das Verhalten im eigenen Deployment Deskriptor zu konfigurieren – über den Umweg des Weblogic spezifischen Descriptors geht es dann:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<session-descriptor>
<cookie-http-only>false</cookie-http-only>
</session-descriptor>
</weblogic-web-app>

Datenrettung mit Ubuntu

Geschrieben von everflux am Februar 10th, 2011

So einfach kann Datenrettung sein: Meine Mutter hat auf einer Digitalkamera Bilder gehabt, die ihr sehr am Herzen liegen. Leider wurden die Fotos von der Digicam irgendwie gelöscht – und der Frust sehr groß.

Ich hab mir die Speicherkarte der Kamera geschnappt, diese mit einem USB Kartenleser an einen Ubuntu Rechner gehängt, und mittels „dd“ ein Abbild der Karte gemacht:

dd if=/dev/sdc of=~/Desktop/rettung.img bs=8192

Das ganze dauerte eine Weile, da es sich um eine 32 Gigabyte Speicherkarte handelte. Nun konnte ich gefahrlos auf dem Abbild arbeiten – soweit mir bekannt löschen Kameras die Fotos nicht sofort, sondern geben, wie bei Dateisystem im Computer, den Speicher lediglich zur Wiederverwendung frei. Somit sah ich gute Chancen auf einer erfolgreiche Datenrettung mit Bordmitteln.

Nachdem das Abbild erstellt war, habe ich mit dem Programm „photorec“ das Abbild durchsuchen lassen (ggf. das Paket testdisk installieren, wenn photorec noch nicht verhanden ist):

photorec rettung.img

Nach einer geraumen Weile fanden sich dann die geretteten Bilder in dem von mir angegebenen Ordner. Ich liebe es, wenn ein Plan funktioniert.


http://everflux.de/
Copyright © 2007, 2008 everflux. Alle Rechte vorbehalten. All rights reserved.