HomeHome ArchiveArchive

TaxMe 2008 auf Ubuntu jaunty 9.04 amd64

The saga continues.

Nun ja,wir kennen das Muster mitlerweile: ein neues TaxMe, einen neuen Tag mit herumpröbeln verloren.

Warum schaffen es DV Informatik auch nach 4 Jahren nicht eine Version von TaxMe herauszugeben, ‘’’die einfach läuft’’’? Man nimmt die auf dem Desktop mit Abstand verbreitetste Linux Distribution, startet Taxme und - es tut nicht.

So sieht meine TaxMe2008 Installation aus:

  # apt-get install libswt-gtk-3.4-java libswt-gtk-3.4-java-gcj libswt-gtk-3.4-jni
  $ cd TaxMe2008/libs
  $ mv linux-gtk linux-gtk.32bit
  $ mkdir linux-gtk
  $ for i in 
    libswt-atk-gtk-3448.so 
    libswt-awt-gtk-3448.so 
    libswt-cairo-gtk-3448.so 
    libswt-gnome-gtk-3448.so 
    libswt-gtk-3448.so 
    libswt-mozilla-gtk-3448.so 
    libswt-pi-gtk-3448.so 
    do; 
       ln -s /usr/lib/jni/$i
    done
   $ ln -s /usr/share/java/swt-gtk-3.4.jar swt.jar
   $ cat runTaxMe
   #!/bin/sh
   export MOZILLA_FIVE_HOME=/usr/lib/xulrunner
   export LD_LIBRARY_PATH=${MOZILLA_FIVE_HOME}:${LD_LIBRARY_PATH}
   ./TaxMeBe2008

Resultat:

  • TaxMe2008 startet
  • Hilfe nicht verfügbar
    \$ cat log.txt
     at ch.dvbern.tax.common.presentation.cd.util.BrowserUtil.createBrowser(BrowserUtil.java:76)
     at ch.dvbern.tax.common.presentation.cd.Taxme.createWelcomeContent(Taxme.java:323)
     at ch.dvbern.tax.common.presentation.cd.Taxme.createContents(Taxme.java:313)
     at org.eclipse.jface.window.Window.create(Window.java:431)
     at ch.dvbern.tax.common.presentation.cd.TaxmeController.startup(TaxmeController.java:911)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher\$1.run(TaxmeLauncher.java:145)
     at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
     at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
     at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher.launchApplication(TaxmeLauncher.java:155)
     at ch.dvbern.tax.common.presentation.cd.TaxmeLauncher.launchTaxme(TaxmeLauncher.java:86)
     at ch.dvbern.tax.be.np.presentation.cd.TaxmeBeLauncher.main(TaxmeBeLauncher.java:82)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:616)
     at ch.dvbern.lib.update.Launcher.main(Launcher.java:91)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:616)
     at com.zerog.lax.LAX.launch(DashoA8113)
     at com.zerog.lax.LAX.main(DashoA8113)
    Caused by: org.eclipse.swt.SWTError: XPCOM error -1041039359
     at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
     at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:355)
     at org.eclipse.swt.browser.Browser.(Browser.java:118)
     at ch.dvbern.tax.common.presentation.cd.util.BrowserUtil.createBrowser(BrowserUtil.java:58)
     ... 23 more
    org.eclipse.swt.SWTError: XPCOM error -1041039359
     at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1597)
     at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:355)
     at org.eclipse.swt.browser.Browser.(Browser.java:118)
     at ch.dvbern.tax.common.presentation.cd.help.gui.HelpApplication.createContents(HelpApplication.java:171)
     at org.eclipse.jface.window.Window.create(Window.java:431)
     at ch.dvbern.tax.common.presentation.cd.action.menu.HelpMainhelpAction.openHelpWindow(HelpMainhelpAction.java:79)
     at ch.dvbern.tax.common.presentation.cd.action.menu.HelpMainhelpAction.run(HelpMainhelpAction.java:51)
     at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
     at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
     at org.eclipse.jface.action.ActionContributionItem.access\$2(ActionContributionItem.java:500)
     at org.eclipse.jface.action.ActionContributionItem\$5.handleEvent(ActionContributionItem.java:411)
     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
     at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
    
    
    

Und es ist notabene nach 4 Jahren immer noch das gleiche Problem: den Browser mit den externen Hilfetexten zu starten.

TaxMe 2006 auf Ubuntu jaunty 9.04 amd64

Was:

Anleitung, um TaxMe 2006 unter amd64 unter Linux, Ubuntu Jaunty 9.04 zum Laufen zu bringen.

Kurzversion:

   $ cd ~/TaxMeBe2006/lib/ && mv linux-gtk linux-gtk.32bit && mkdir linux-gtk && cd linux-gtk
   $ sudo apt-get install libswt3.2-gtk-jni libjna-java
   $ for i in atk awt cairo gnome "" mozilla pi ; do ln -s /usr/lib/jni/libswt-${i}-gtk-3236.so; done
   $ ln -s /usr/lib/java/swt.jar

Herleitung:

Wenn man TaxMe 2006 auf einer amd64 Platform startet, dann passiert nichts.

in TaxMeBe2006/log.txt steht dann:

   $ cat TaxMeBe2006/log.txt
   java.lang.reflect.InvocationTargetException
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:616)
           at ch.dvbern.lib.update.Launcher.main(Launcher.java:91)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:616)
           at com.zerog.lax.LAX.launch(DashoA8113)
           at com.zerog.lax.LAX.main(DashoA8113)
   Caused by: java.lang.UnsatisfiedLinkError: /home/user/TaxMeBe2006/lib/linux-gtk/libswt-pi-gtk-3235.so: /home/user/2006/TaxMeBe2006/lib/linux-gtk/libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
           at java.lang.ClassLoader$NativeLibrary.load(Native Method)
           at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767)
           at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1692)
           at java.lang.Runtime.loadLibrary0(Runtime.java:840)
           at java.lang.System.loadLibrary(System.java:1047)
           at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
           at org.eclipse.swt.internal.gtk.OS.(OS.java:22)
           at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
           at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
           at org.eclipse.swt.widgets.Display.(Display.java:126)
           at ch.dvbern.tax.common.presentation.cd.util.GuiUtil.getImageRegistry(GuiUtil.java:134)
           at ch.dvbern.tax.common.presentation.cd.action.ActionBase.(ActionBase.java:59)
           at ch.dvbern.tax.common.presentation.cd.action.menu.FilePrintAction.(FilePrintAction.java:26)
           at ch.dvbern.tax.be.presentation.cd.TaxmeBeLauncher.main(TaxmeBeLauncher.java:54)
           ... 11 more



Aha - wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) - weisst darauf hin, dass wir irgendwo ein 32bit executable (bzw. hier eine 32bit Bibliothek haben), wo das System 64bit bräuchte.

Wir müssen also libswt-pi-gtk-3235.so durch eine 64bit Version ersetzen. Wir schauen zuerst Mal im Verzeichnis /home/user/TaxMeBe2006/lib/linux-gtk/ nach und sehen, dass es da noch einen Haufen andere Bibliotheken hat. Die sollten also allesammt ersetzt werden. Machen wir also, aber zuerst legen wir Mal die existierenden Dateien auf die Seite:

   $ cd ~/TaxMeBe2006/lib/ && mv linux-gtk linux-gtk.32bit && mkdir linux-gtk
So, nun ist das original linux-gtk Verzeichnis auf der Seite und wir haben ein frisches, leeres linux-gtk zum Basteln. Wo kriegt man nun die entsprechenden libswt-pi-gtk-3235.so 64bit Bibliotheken her? Da mein Rechner unter Ubuntu läuft suche ich dort ein bischen in den Paketen herum - <http://packages.ubuntu.com> bietet das entsprechende Suchinterface und man findet heraus, dass einerseits nur die Version -3236 der Bibliotheken vorliegt, und dass andererseits diese im Ubuntu Paket libswt3.2-gtk-jni zu finden sind. swt.jar wiederum befindet sich im Paket libswt3.2-gtk-java. Also
   $ sudo apt-get install libswt3.2-gtk-jni libjna-java
Nur leider genügt die Installation der Pakete nicht, da TaxMe2006, obwohl ein unter Linux funktionsfähiges Programm in seiner eigenen Welt läuft. Vielleicht müsste, um dem abzuhelfen der richtige Pfad oder die richtige Umgebungsvariable gesetzt werden - hab nicht lange gesucht, und die entsprechenden Bibliotheken einfach verlinkt: \$ ls -l TaxMeBe2006/lib/linux-gtk/ lrwxrwxrwx … libswt-atk-gtk-3236.so -\> /usr/lib/jni/libswt-atk-gtk-3236.so lrwxrwxrwx … libswt-awt-gtk-3236.so -\> /usr/lib/jni/libswt-awt-gtk-3236.so lrwxrwxrwx … libswt-cairo-gtk-3236.so -\> /usr/lib/jni/libswt-cairo-gtk-3236.so lrwxrwxrwx … libswt-gnome-gtk-3236.so -\> /usr/lib/jni/libswt-gnome-gtk-3236.so lrwxrwxrwx … libswt-gtk-3236.so -\> /usr/lib/jni/libswt-gtk-3236.so lrwxrwxrwx … libswt-mozilla-gtk-3236.so -\> /usr/lib/jni/libswt-mozilla-gtk-3236.so lrwxrwxrwx … libswt-pi-gtk-3236.so -\> /usr/lib/jni/libswt-pi-gtk-3236.so lrwxrwxrwx … swt.jar -\> /usr/lib/java/swt.jar Und siehe da - es klappt, TaxMe2006 startet. Tomáš Pospíšek

listing init scripts, sorted by priority on RedHat

If you want to know in which order RedHat will execute init scripts, then you can list them like this:

grep '#\s*chkconfig:' /etc/init.d/* | sed 's/:#//; s/\/etc\/init.d\///;' | awk '{ printf "%2s %2s %7s %s\n", $4, $5, $3, $1 }' | sort

which will produce on my system:

01 99   12345 sysstat                                                                                                                                     
02 99   12345 lvm2-monitor                                                                                                                                
03 97     235 sysstat                                                                                                                                     
05 95     345 kudzu                                                                                                                                       
06 99   12345 cpuspeed                                                                                                                                    
08 92    2345 ip6tables                                                                                                                                   
08 92    2345 iptables                                                                                                                                    
 0 99    2345 microcode_ctl                                                                                                                               
10 90    2345 network                                                                                                                                     
11 88    2345 auditd                                                                                                                                      
11 89       - netplugd                                                                                                                                    
12 87    2345 restorecond                                                                                                                                 
12 88    2345 syslog
13  1     345 setroubleshoot
13 87    2345 irqbalance
13 87    2345 mcstrans
13 87     345 portmap
13 87       - multipathd
14 86     345 nfslock
15 85    2345 mdmonitor
15 85       - mdmpd
18 85     345 rpcidmapd
19 69       - rpcsvcgssd
19 85     345 rpcgssd
20 80       - kdump
22 85     345 messagebus
25 75     345 netfs
25 88    2345 pcscd
27 73       - ypbind
28 72     345 autofs
30 74       - nscd
35 65       - krb524
41 89       - rdisc
 4 99    2345 readahead_early
50 50       - netconsole
55 25    2345 sshd
56 50     345 xinetd
58 74       - ntpd
60 20       - nfs
64 36       - mysqld
80 30    2345 sendmail
85 15    2345 gpm
85 15       - httpd
90 10    2345 xfs
90 10       - psacct
90 60    2345 crond
91 35       - smb
91 35       - winbind
95 05    2345 anacron
95 05       - saslauthd
95  5     345 atd
95  5       - conman
96 99       5 readahead_later
97 03     345 rhnsd
97 03     345 yum-updatesd
98 02     345 avahi-daemon
98 02     345 haldaemon
98 02       - avahi-dnsconfd
99 01    2345 smartd
99 95      35 firstboot

Tomáš Pospíšek