{"id":559,"date":"2010-02-26T02:43:48","date_gmt":"2010-02-26T01:43:48","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=559"},"modified":"2010-02-26T02:43:48","modified_gmt":"2010-02-26T01:43:48","slug":"klarer-wine-fur-mein-sparbuch","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=559","title":{"rendered":"Klarer Wine f\u00fcr mein Sparbuch"},"content":{"rendered":"<p>Nach dem ich mich seit meinem finalen Entschluss, Windosen nur noch mit dem Dosen-\u00d6ffner und einer Linux-CD zu behandeln, gab es inzwischen in meinem Umfeld erste Umsteiger in Sachen zu betreuender Rechner. Aufgabe war es, ein Notebook f\u00fcr den Einsatz f\u00fcr Office-Arbeiten und einfache Buchhaltungsaufgaben fertig zu machen. Da es gewisse Altlasten zu beachten gab, gestaltet sich der Umstieg jedoch nicht ganz reibungslos, auch wenn das Grundsystem mit Office und Browser tadellos l\u00e4uft, und abgesehen von kleineren Qu\u00e4relen mit dem HAL im Zusammenspiel mit dem Plasma-Desktop derzeit kleinere Work-Arounds ben\u00f6tigen.<\/p>\n<p>Ein gr\u00f6\u00dferes Projekt stand jedoch die Tage an: F\u00fcr die Finanzverwaltung sollte WISO Sparbuch 2010 eingerichtet werden, damit die bestehenden Daten gepflegt und erg\u00e4nzt werden k\u00f6nnen. Da das Programm f\u00fcr Linux nicht verf\u00fcgbar ist, und auf den Einsatz einer VM aus Resourcengr\u00fcnden vermieden werden soll, fiel die Wahl auf <a href=\"http:\/\/winehq.org\/\">Wine<\/a>, was bereits seit l\u00e4ngerem als durchaus brauchbare Alternative zum Einsatz virtueller Maschinen mit Paravirtualisierung oder Vollvirtualisierung gelten kann.<!--more--><\/p>\n<p>Ein erster <a href=\"http:\/\/appdb.winehq.org\/objectManager.php?sClass=version&#038;iId=18971\">Blick in die Kompatibilit\u00e4tsliste<\/a> ist dabei sogar bereits recht vielversprechend. Au\u00dfer einem kleinen Crash beim Starten des Programms, f\u00fcr den es einen Workaround in Form eines kurzen Source-Patches gibt, l\u00e4sst sich das Programm mit gerade einmal 4 weiteren Schritten fast so wie auf einer Dose installieren.<\/p>\n<p>Der erste Schritt ist hierbei eine blanke Wine-Installation. Das Paket wine wird unter Debian zwar standardm\u00e4\u00dfig mitgeliefert, h\u00e4ngt aber sogar in der Experimental-Version derma\u00dfen hinterher, dass man dies zu gunsten geschonter Nerven \u00fcberspringen sollte und direkt auf die von <a href=\"http:\/\/www.winehq.org\/download\/deb\">WineHQ angebotenen Paket-Quellen<\/a> wechseln sollte. Da es f\u00fcr Squeeze jedoch (derzeit?) keine ausreichend aktuellen Source-Pakete zum Selberbauen gibt und die Eintragung f\u00fcr Lenny nicht funktioniert (APT meldet einen 404 Not Found beim Update), muss man an dieser Stelle etwas improvisieren und auf die Jaunty-Quellen (Ubuntu) konfigurieren.<\/p>\n<p>Hierf\u00fcr \u00f6ffnet man eine Kommando-Zeile und f\u00fchrt (root-User d\u00fcrfen auf sudo verzichten) den Import der n\u00f6tigen Schl\u00fcssel zum Validieren der Paket-Quellen aus:<\/p>\n<pre lang=\"bash\">wget -q http:\/\/wine.budgetdedicated.com\/apt\/387EE263.gpg -O- | sudo apt-key add -\r\nsudo wget http:\/\/wine.budgetdedicated.com\/apt\/sources.list.d\/karmic.list -O \/etc\/apt\/sources.list.d\/winehq.list<\/pre>\n<p>Alternativ kann man jedoch die Paket-Quellen auch \u00fcber von seinem X-Server bereitgestellte Klicki-Bunti-Oberfl\u00e4che &#8211; wie auf der WineHQ-Seite dargestellt &#8211; importieren.<\/p>\n<p>Nach dem wir nun f\u00fcr Wine die ben\u00f6tigten Paketquellen verf\u00fcgbar haben, k\u00f6nnte man normalerweise Wine bereits installieren, was jedoch in diesem speziellen Falle zu einem Problem mit WISO Sparbuch 2010 f\u00fchrt. Um den hierf\u00fcr n\u00f6tigen Work-Around anzuwenden, muss man sich Wine aus den Quellen \u00fcbersetzen, was einfacher geht, als man vermuten w\u00fcrde. Als erste Vorbereitung hierf\u00fcr ben\u00f6tigen wir jedoch noch zwei weitere Pakete: apt-src und devscripts. Deren Installation verl\u00e4uft auf einer Root-Konsole ohne gro\u00dfe Umst\u00e4nde:<\/p>\n<pre lang=\"bash\">aptitude install apt-src devscripts<\/pre>\n<p>Sind diese beiden zus\u00e4tzlichen Pakete eingerichtet, kann es an das Einrichten der Compilier-Umgebung gehen:<\/p>\n<pre lang=\"bash\">cd \/usr\/src\r\napt-src install wine\r\napt-src build wine<\/pre>\n<p>Wichtig ist hierbei, dass die beiden letzten Befehle in \/usr\/src als Arbeitsverzeichnis ausgef\u00fchrt werden, weil apt-src das Arbeitsverzeichnis als Stammverzeichnis f\u00fcr Quelltext-Trees verwendet. Dieses Verhalten kann zwar \u00fcberschrieben werden, macht aber unn\u00f6tige Schreibarbeit und verkompliziert die Arbeit unn\u00f6tig. L\u00e4uft dieser erste Build reibungslos durch, kann es an das anwenden des Bugfixes gehen. Hierzu wechselt man in das unter \/usr\/src frisch angelegte Verzeichnis wine-1.1.* und von dort aus nach dlls\/ntdll\/:<\/p>\n<pre lang=\"bash\">cd wine-1.1.*\/dlls\/ntdll\/<\/pre>\n<p>In diesem Verzeichnis befinden sich eine ganze Reihe verschiedener *.c-Dateien, von denen nur die virtual.c von Interesse ist. Diese \u00f6ffnet man mit dem Editor seiner Wahl und sucht sich etwa auf Zeile 100 &#8211; abh\u00e4ngig von der Source-Version von Wine &#8211; den folgenden Block:<\/p>\n<pre lang=\"c\">    PAGE_WRITECOPY,             \/* WRITE | WRITECOPY *\/\r\n    PAGE_WRITECOPY,             \/* READ | WRITE | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY,     \/* EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY,     \/* READ | EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY,     \/* WRITE | EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY      \/* READ | WRITE | EXEC | WRITECOPY *\/\r\n };<\/pre>\n<p>In diesem ersetzt man die 2. und 4. Zeile mit PAGE_EXECUTE_WRITECOPY wie folgt:<\/p>\n<pre lang=\"c\">    PAGE_WRITECOPY,             \/* WRITE | WRITECOPY *\/\r\n    PAGE_WRITECOPY,             \/* READ | WRITE | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY,     \/* EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY | PAGE_EXECUTE_READ,     \/* READ | EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY,     \/* WRITE | EXEC | WRITECOPY *\/\r\n    PAGE_EXECUTE_WRITECOPY | PAGE_EXECUTE_READ      \/* READ | WRITE | EXEC | WRITECOPY *\/\r\n };<\/pre>\n<p>Dabei sollte man <em><strong>DRINGEND!!!<\/strong><\/em> darauf achten, die richtigen Zeilen zu erwischen, weil man sich nicht nur einiges an Zeit damit spart, sondern auch unangenehmen Nebeneffekten vorbeugt: Die Datei virtual.c ist Bestandteil der Speicherverwaltung und flie\u00dft sp\u00e4ter in die ntdll.dll ein, die unter Windows als Schnittstellen-Bibliothek zum Kernel dient. Auch wenn unter Wine eine gewisse Abstraktion \u00fcber zus\u00e4tzliche Userland-Schichten u.U. Fehler abfangen kann, kann ein Fehler hier verheerende Folgen haben!<\/p>\n<p>Ist diese \u00c4nderung erfolgreich eingepflegt und die Korrektheit \u00fcberpr\u00fcft, k\u00f6nnen wir uns nun um das Erzeugen der Bin\u00e4rpakete k\u00fcmmern. Dies kann mit einem Terminal und folgenden Befehlen erreicht werden:<\/p>\n<pre lang=\"bash\">cd \/usr\/src\/wine-1.1.*\/\r\ndch -l patch \"Workaround for Crash in WISO Sparbuch 2010\"\r\nsed 's,-O2,-O9,' debian\/rules > debian\/rules~ && mv debian\/rules~ debian\/rules\r\ndch -a \"Increased optimization level when Compiling for better runtime performance\"\r\ncd \/usr\/src\r\napt-src -i build wine<\/pre>\n<p>Das Bauen des Paketes ben\u00f6tigt nun ca. 15-30 Minuten je nach Geschwindigkeit des Prozessors &#8211; eine gute Gelegenheit, um die Mittagspause nachzuholen oder anderweitig f\u00fcr die Kollegen mit Kaffee zu versorgen.<\/p>\n<p>Unter Umst\u00e4nden kann es bei der Ausf\u00fchrung der Paket-Installation zu Problemen mit der automatischen Installation von Dependencies kommen. Sollte dies der Fall sein, sollte man diese per Hand \u00fcber die Paketverwaltung seiner Wahl installieren, ohne Wine jedoch auszuw\u00e4hlen (die lokal erzeugten Builds sind der Paket-Verwaltung zu diesem Zeitpunkt noch nicht bekannt). Anschlie\u00dfend kann die Installation der erzeugten Pakete mit<\/p>\n<pre lang=\"bash\">dpkg -i \/usr\/src\/wine*_1.1.*.deb<\/pre>\n<p>wiederholt werden.<\/p>\n<p>Ist die Installation von Wine erfolgreich gegl\u00fcckt, wird nun ein Terminal auf einer grafischen Oberfl\u00e4che ben\u00f6tigt. Dies ist n\u00f6tig, da ansonsten die folgenden Schritte fehlschlagen. Wie gemacht f\u00fcr diese Aufgabe sind hierbei xterm und konsole, die, je nach Vorliebe gestartet werden sollten. Admin-Rechte werden ab diesem Punkt &#8211; trotz dem Programme installiert werden &#8211; nicht mehr ben\u00f6tigt, da jegliche \u00c4nderungen innerhalb des eigenen Home-Verzeichnisses ausgef\u00fchrt werden. Vielmehr ist es sogar notwendig, dass die folgenden Schritte unter dem Nutzer-Account ausgef\u00fchrt werden, f\u00fcr den WISO Sparbuch 2010 sp\u00e4ter ausgef\u00fchrt werden soll.<\/p>\n<p>Auf der Konsole angekommen, f\u00fchren wir aus:<\/p>\n<pre lang=\"bash\">wget http:\/\/kegel.com\/wine\/winetricks\r\nsh winetricks -q msxml3 msxml4 dotnet20 jet40\r\nsh winetricks wmp9<\/pre>\n<p>Diese Zeilen installieren alle ben\u00f6tigten Abh\u00e4ngigkeiten, d.h. die XML-Parser MSXML3, MSXML4, das Jet-Datenbank-Interface, das .NET-Framework 2.0 sowie den Windows Media Player 9. Bei letzterem ist es normal, wenn das Setup beim ersten Durchlauf &#8211; microsoft-typisch &#8211; mit einem Fehler abbricht; hiervon nicht beirren lassen, und einfach den weiteren Anweisungen folgen.<\/p>\n<p>Nach dem nun eine ganze Reihe von Vorbereitungen ausgef\u00fchrt wurden und hoffentlich bisher alles erfolgreich verlief, kann es nun an die Installation gehen. Hierzu legt man das Installationsmedium in das CD-Laufwerk und mounted dieses. <\/p>\n<pre lang=\"bash\">mount \/media\/cdrom<\/pre>\n<p>Anschlie\u00dfend startet man eine DOS-Konsole.<\/p>\n<pre lang=\"bash\">wineconsole cmd<\/pre>\n<p>Im nun erscheinenden Fenster, das starke \u00c4hnlichkeiten mit einem DOS-Prompt aufweist, wechselt man auf Laufwerk D: und f\u00fchrt die start.exe aus:<\/p>\n<pre lang=\"dos\">D:\r\nstart<\/pre>\n<p>Danach erfolgt die Installation von WISO Sparbuch 2010 wie auf einer Dose: Immer den Anweisungen folgen!<\/p>\n<p>Ob alles erfolgreich verlaufen ist, sieht man beim ersten Start der Anwendung: St\u00fcrzt diese mit einem Wine-Dialog und der Meldung eines unbehandelten Schreibzugriffs ab, so sollte man den Patch nochmals \u00fcberpr\u00fcfen, das Source-Paket erneut bauen und nochmals installieren. Zudem sollte man beachten, dass man diese \u00c4nderung am Quellpaket mit jedem Upstream-Release von Wine erneut ausf\u00fchren muss. Wie man sich diese Aufgabe etwas vereinfachen kann, habe ich in abgewandelter Form bereits <a href=\"http:\/\/blog.benny-baumann.de\/?p=515\">an anderer Stelle f\u00fcr den Bind9<\/a> beschrieben.<\/p>\n<p>Sollte es mit dieser Anleitung Probleme geben, freue ich mich \u00fcber Feedback und w\u00fcrde um entsprechende Hinweise in der <a href=\"http:\/\/appdb.winehq.org\/\">Kompatibilit\u00e4tsdatenbank von Wine<\/a> bitten, da diese nur so behandelt werden k\u00f6nnen.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=559&amp;md5=efd5d58645db50bfdd547c0b4a3a8063\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Nach dem ich mich seit meinem finalen Entschluss, Windosen nur noch mit dem Dosen-\u00d6ffner und einer Linux-CD zu behandeln, gab es inzwischen in meinem Umfeld erste Umsteiger in Sachen zu betreuender Rechner. Aufgabe war es, ein Notebook f\u00fcr den Einsatz f\u00fcr Office-Arbeiten und einfache Buchhaltungsaufgaben fertig zu machen. Da es gewisse Altlasten zu beachten gab, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[29],"tags":[62,10,98,200,264,13,265],"class_list":["post-559","post","type-post","status-publish","format-standard","hentry","category-software","tag-bug","tag-debian","tag-developement","tag-howto","tag-opensource","tag-patch","tag-wine"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=559"}],"version-history":[{"count":3,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/559\/revisions"}],"predecessor-version":[{"id":562,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/559\/revisions\/562"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}