Ich habe heute in der Firma die Webseite umgezogen und da diese sich nun eine IP mit anderen Seiten teilen muss, läuft sie hinter einem Reverse Proxy (nginx). Die Verbindung zwischen Proxy und Webseite läuft dabei über HTTP.
Wenn ich die Seite aufrufen wollte, lief der Browser laufend in einen Redirect Loop und ich wusste nicht wieso. Eine Seite, ebenfalls WordPress, die ich parallel auf das selbe System umgezogen habe, funktionierte ohne Problem mit der identischen Konfiguration. Nachdem ich alles andere ausgeschlossen hatte, kam mir der Gedanke das womöglich WordPress selbst für den Loop verantwortlich ist und tatsächlich, es war so. Der Unterschied zu der anderen WordPress Installation war, folgende Konfiguration in der wp-config.php:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
Kein Plan wieso das bei der einen Installation enthalten war und der anderen wieder nicht. Eventuell gab es bei der Installation einen Diese Seite befindet sich hinter einem Reverse Proxy Button, an den ich mich nicht erinnere. Allerdings weiß ich nicht wieso ich das dann bei der einen Installation ausgewählt haben soll und bei der anderen nicht, da beide vorher nicht hinter einen Reverse Proxy liefen. Natürlich muss auch vom Reverse Proxy der Header entsprechend gesetzt werden, damit es funktioniert, was man in Nginx z.B. wie foglt tut:
Schon lange her das ich hier mal was geschrieben hab, aber irgendwie fehlte mir immer ein Thema um was zu schreiben oder wenn es eins gab, die Lust. Jetzt habe ich aber mal eins, mit dem ich mich die letzten Tage ein wenig auseinander gesetzt hab und überwinde hiermit meine Faulheit und schreibe etwas dazu. :-)
Einleitung
Seit ungefähr Anfang des Jahres bring ich mir selbst programmieren bei und nutze dafür meine Lieblingssprache Lua. Warum Lua? Naja, ich habe schon mal einen Versuch gestartet programmieren zu lernen und zwar mit Python, aber aus irgendeinem Grund langweilte es mich schnell. Versteht mich nicht falsch, Python ist ne coole Sprache, aber irgendwie sprang bei mir da der Funke nicht über. Ganz anders sah das bei Lua aus, auf die ich über den XMPP Server Prosody aufmerksam wurde, wo ich direkt Spaß am schreiben und lesen hatte und hab. Außerdem gefällt mir die minimalistische Natur von Lua, die natürlich nicht nur Vorteile hat. Leider ist sie nicht so weit verbreitet, was den Umfang an vorhanderen Modulen (Libraries) sehr überschaubar macht und ein guter Teil davon auch etwas alt ist. Da ich jemand bin der am besten was versteht und behält indem er es einfach tut, suchte ich, nachdem ich ein paar Tage in Programming in Lua geschmökert hatte, eine Möglichkeit zu üben. Ein Bekannter empfohl mir exercism.io (das ich an dieser Stelle nur wärmstens empfehlen kann), wodurch ich auch direkt mit Test Driven Development in Berührung kam. Seitdem versuche ich immer neben einer guten Dokumentation auch meine „Software“ mit Tests auszustatten. So kam mir dann auch mal langsam der Gedanke sich mit Continuous Integration auseinander zu setzen.
Btw. hier mein bisherigen „Projekte“:
lua-netio – ein API Client Modul zum steuern von Netzwerksteckdosen der Firma NETIO products a.s.
lua-ssllabs – ein API Client Modul für Qualys SSL Labs Server Test API (v3)
emoji-downloader – ein CLI Tool zum downloaden von Custom Emojis von Mastodon oder Pleroma Instanzen
Ich bin immernoch sehr viel am experimentieren und lernen, also ja, der Code sieht mit Sicherheit für den geübten Programmierer an vielen Stellen ziemlich hässlich aus. Für Hinweise bin ich dankbar btw. ;-)
Die Umgebung
Derzeit sind die verbreitesten Lua Versionen Lua 5.1, 5.2 und 5.3. Daneben gibt es zwar noch LuaJIT, aber das lass ich meist außen vor, da wenn es mit Lua 5.1 funktioniert in der Regel auch mit LuaJIT funzt. Gegen diese Versionen möchte ich also auch meine Module testen, was bedeutet das ich diese dann auch installieren muss. Außerdem wird der Paketmanager LuaRocks benötigt, um Abhängkeiten zu installieren. Außerdem wäre es auch möglich das getestete Modul direkt auf luarocks.org zu publishen, das hab ich aber noch nicht gemacht und ist deshalb nicht Part von dem Artikel.
Da ich primär mein eigenes Gitea nutze, entschied ich mich auch einen CI Service zu nutzen der mit Gitea zusammenarbeitet und dies ist Drone. Mit Drone habe ich schon einmal herumgespielt, bevor ich mein Gitea aufsetzte und es gefiel mir schon damals recht gut. Nur hatte ich noch keinen Einsatzzweck und so warf ich den Container irgendwann wieder weg. Drone baut auf Docker auf, wie so fast jedes CI System glaub ich, was man auch sehr an den Konfigurationen sehen kann, welche docker-compose Konfigurationen ähneln. Somit werden auch alle Sprachen unterstützt für die es einen entsprechenden Container gibt und wenn es keinen gibt, macht man sich einen. Für Lua würde also eine .drone.yml in etwa so aussehene:
Diese Konfiguration würde nun z.B. sagen: „Nimm für den Job build, das Docker Image some/lua${LUAVERSION}:image, installier das Unit Testing Framwork busted mit LuaRocks und führe die Tests anschließend aus. Achja und dies tust du bitte für alle drei Lua Versionen.“
Docker Images für Tests
Leider gibt es nicht all zu viele fertige Images mit Lua und LuaRocks und die wenigen die es gibt, basieren dann entweder auf Debian oder Ubuntu (Größe so ~300MB), werden nicht mehr gepflegt oder sind irgendwie buggy. Am vielversprechendsten waren die Images von akorn, welcher allerdings die Lua Versionen mit Platform posix, statt linux kompiliert, was dazu führt das ein paar in C geschriebene Module, wie z.B. luafilesystem nicht nutzbar sind. Dazu habe ich auch schon ein Issue bei ihm erstellt. Sollte er das anpassen oder mich auf einen Fehler meinerseits hinweisen, werde ich vermutlich seine Images nutzen. Bis dahin allerdings habe ich die Dockerfiles angepasst und local die Images erstellt, sodass sie Drone nutzen kann. Das Image das aus meinen LuaRocks Dockerfiles erstellt wird ist mit 187MB zwar dennoch recht groß, allerdings sind auch schon eine Reihe von Build Tools enthalten, womit sich in C geschriebenen Abhängigkeiten direkt installieren lassen sollten. Das cleane Image von akorn ist hingegen ca. 12MB groß.
Alternativ kann man auch das offizielle Python Image nehmen und darin das Tool hererocks installieren. Mit diesem kann man dann Lua und LuaRocks in ein Projektverzeichnis installieren und anschließend nutzen. Wenn man sich die Lua Docker Image Situation anschaut, ist dies sicher auf den ersten Blick die einfachste Lösung. Allerdings komme ich persönlich nicht damit klar, ein 1GB großes Image zum testen eines paar KB großen Modules zu verwenden. Wenn man sich natürlich keine Sorge um Ressourcen machen muss, dann kann man das natürlich tun, bzw. soweit ich das bisher gelesen hab, hat man, wenn man Travis CI nutzt, nicht wirklich viele Auswahlmöglichkeiten mit Lua.
Tests bzw. Specs
Wie weiter oben in dem .drone.yml Beispiel zu sehen ist, nutze ich das Unit Testing Framwork busted von OlivineLabs. Neben busted gibt es noch wesentlich schmalere Unit Testing Framworks, da ich aber durch exercism.io bei busted gelandet bin, nutze ich dieses auch seitdem. Hier mal ein kurzes Beispiel wie ein Test, bzw. in bustedSpec genannt, aussehen kann: Ein simples Modul:
-- hello.lua
return {
say = function(str) return 'Hello ' .. str end
}
Die Spec dazu:
-- spec/hello_spec.lua
local hello = require('hello')
describe('hello lib', function()
it('says hello to you', function()
assert.equal('Hello you', hello.say('you'))
end)
end)
Kurz zur Erklärung: Mit describe definiert man eine Gruppe von Specs und mit it definiert man eine Spec. assert ist hier die monkeypatched Version von Lua’s assert und wird hier für assertions (übersetzt man das in Behauptungen?) genutzt. Wenn assertations zutreffen, gilt der Spec als bestanden und es wird ein grüner Punkt zurück gegeben, wenn nicht gibt es einen roten Punkt und der Spec gilt als nicht bestanden. Die Ausgabe für das obige Beispiel würde dann wie folgt aussehen:
Für das obige Beispiel, habe ich meine .drone.yml wie folgt angepasst:
Mit -o TAP sage ich das busted als Output Handler das TAP (Test Anything Protocoll) benutzen soll. Sobald gepusht, fängt Drone auch direkt mit den Tests an:
Ist der Test durchgelaufen, sieht man dann den Status hinter dem Commit:
Statische Code-Analyse
Obwohl es schon mein IDE macht, lasse ich in der Regel dennoch gern, vor den eigentlichen Tests, eine Linter über meinen Code drüber laufen. Dafür nutze ich luacheck, welches verbreitete Fehler, wie z.B. deklarierte aber unbenutzte Variablen, globale Variablen, uvm. erkennt. luacheck wird ebenfalls über LuaRocks installiert und kann dann als CLI Tool benutzt werden:
Die Werte der --std Option sagen folgendes aus:
max – akzeptiere alle globale Variablen welche in allen Lua Versionen genutzt werden
+busted – akzeptiert globale Variablen die von busted deklariert werden, also z.B. describe oder it (dies brauch man natürlich nur wenn man auch seine Spec Dateien mit analysieren lässt)
Eine .drone.yml für luacheck würde dann wie folgt aussehen:
Und wie definiert wird das ganze dann auch von Drone ausgeführt:
So das soll der Bericht über meine ersten CI Gehversuche sein. Neben Testing und Linting werde ich wohl zukünftig auch noch Coverage Analysen mit LuaCov einbauen, aber da habe ich bisher noch keine Lust gehabt mich mit auseinander zu setzen. Außerdem habe ich gemerkt das ich mich nun doch langsam mal ein bisschen ausführlicher mit Docker beschäftigen muss. Bisher habe ich das Thema immer umschifft, da ich es nie wirklich gebraucht habe, bzw. LXC mir vollkommen ausreichte.
Vielen Dank fürs lesen und fals es Anmerkungen gibt, freue ich mich sehr davon zu hören/lesen. :-)
UPDATE: Erstaunlicherweise wurde ein Update auf Android 8 für die Mi Box 3 bereit gestellt, womit ich ja gar nicht gerechnet hatte. Seitdem treten die unten beschriebenen Probleme nicht mehr auf und ich konnte bisher auch noch keine Neuen feststellen.
Ich habe seit Anfang letzten Jahres die Set-Top-Box Xiaomi Mi Box 3 im Einsatz. Hier möchte ich nur mal eine kleine Liste von Problemen und deren Lösung aufstellen, die ich primär mit der Netflix App hatte:
Netflix App: Auflösung wird nicht unterstützt
Wenn man das Netflix Abo mit 2 Geräten hat, über welches man Videos in HD Qualität abspielen kann, und man die Mi Box in Full HD betreibt, kam es in der Vergangenheit oft dazu, das Netflix meldete, das die Auflösung nicht unterstützt wird. Das hängt irgendwie damit zusammen, dass die Netflix App in die Android Version intergriert ist und wenn man die Box nun in Full HD betreibt, die Videos bei Netflix auch in dieser Auflösung angefragt werden und Netflix dann halt antwortet, das man nicht berechtigt ist diese zu schauen.
Lösung
Man muss die Auflösung in der Box auf 720p stellen, dann sollte es wieder funktionieren. Zeitweise hatte Xiaomi das Problem mal gefixt und man konnte die Box wieder in voller Auflösung fahren, allerdings hielt das nicht lang. Ich fuhr die Box seitdem in 720p und seit gestern habe ich das höhste Abo, weswegen ich nicht sagen kann ob sie das nun gelöst haben oder ob es immernoch auftritt.
Netflix App: Probleme nachdem die Mi Box aus dem Standby erwacht
Die Mi Box läuft in der Regel immer, wenn man nicht den Strom trennt, und geht beim ausschalten des TV’s in Standby. Schaltet man den TV an und möchte direkt Netflix schauen kann es zu Problemen kommen, welche da wären:
Wenn man die Netflix App nicht geschlossen hat, bevor man den TV abgeschaltet hat, zeigt diese nach dem einschalten statt der Thumbnails überall, das es ein Problem mit der Verbindung gibt.
Oben genanntes Problem kann auch auftreten wenn man die Netflix App zuvor geschlossen hat.
Man macht die Netflix App auf, nachdem man die Mi Box aus dem Standby geholt hat und 2s nach dem Start eines Titels meldet die App „Wir haben derzeit Probleme bei der Wiedergabe dieses Titels. [..]“
Lösung
Die App über Einstellung -> Apps beenden und anschließend die App wieder starten
Die Box komplett rebooten
Bild und Ton nicht synchron
Dieses Problem ist mir bisher erst einmal unter gekommen und ich dachte erst das es nur die Netflix App wäre, allerdings trat das Problem in jeder App auf. Auch ein beenden der Apps oder Neustart der Box brachte keine Ändungen.
Lösung
Besserung brachte folgendes, was ich mir aber nicht ganz erklären kann wieso das funktioniert:
Mi Box stromlos machen
HDMI Kabel ausstecken
1-2 min warten
Alles wieder einstecken
Anschließend läuft Bild und Ton wieder synchron.
Anmerkung 26.03.18: Das Problem ist damit nicht dauerhaft gelöst, in meinem Fall tritt es immer mal wieder auf. Was mich verwundert ist, das es vorher nie aufgetreten ist, eigentlich erst seitdem ich die Box wieder 1080p statt 720p laufen lasse.
Nachdem ich Anfang des Jahres, über Thomas Leister seinem Beitrag zu Mastodon, auf Milan seine Instanz und damit ins Fediverse gefunden hatte, dachte ich mir das ich heute mal kurz etwas über die Software Pleroma schreibe, womit ich seit ein paar Monaten eine Instanz betreibe.
PleromaFE frontend auf social.kokolor.es
Pleroma setzt sich aus zwei Komponenten zusammen, dem Frontend und dem Backend, welche getrennt voneinander entwickelt werden. Das hat den Vorteil das das Frontend (PleromaFE) nicht an das Backend gebunden ist und auch für GNUsocial oder postActiv verwendet werden kann. Dadurch wurde ich auch auf das Projekt aufmerksam, da ich, nachdem ich meine postActiv Instanz Anfang des Jahres aufgesetzt hatte, keinen Bock mehr auf das Frontend Qvitter hatte, da dieses bei mir jeden Tag neue Fehler produzierte und ich schon eine ganze Weile das Classic Frontend einsetzte, welche allerdings optisch als auch technisch, stark in die Jahre gekommen ist. Ich war von Anfang an von PleromaFE begeistert, da es schlicht und simpel aufgebaut ist. Quasi genau das was ich gesucht hatte. Ich fing dann an dem Hauptentwickler @lain zu folgen und erfuhr so das sich ein Backend ebenfalls in der Entwicklung befand. Ein paar Monate vergingen und irgendwann Mitte des Jahres ging die erste Testinstanz online und Anfang August entschied ich mich dann ebenfalls mal eine Instanz aufzusetzen und schrieb eine kleine Quick and Dirty Anleitung darüber, da noch keine existierte.
PleromaFE und PleromaBE running on edolas.world
PleromaBE ist in Elixir geschrieben und verwendet das Phoenix Framework. Implementiert ist das OStatus und ActivityPub (derzeit nur intern) Protokoll, außerdem die Twitter und Mastodon API, und ist dabei so ressourcenschonend, dass es auf einem Raspberry Pi läuft oder wie meine Testinstanz, auf einer 2€ VM mit 512MB RAM. Dadurch das auch die Mastodon API implementiert ist, funktioniert auch das Mastodon UI als Frontend und die Mastodon Apps für mobile Betriebssyteme mit PleromaBE. Standartmäßig sind beide UI’s enthalten, wobei PleromaFE der Standart ist. Neben dem ganzen technischen kommt noch dazu, dass das ganze Entwicklerteam rund um die Software ein netter und verrückter Haufen ist, bei dem man sich nie von oben herab behandelt fühlt, wenn man mal Fragen hat und die auch für Kritik und Vorschläge offen sind, was man von anderen Softwareprojekten leider nicht behaupten kann. Wegen all diesen Punkten und weil ich das Gefühl habe das diese Software mit der richtigen Portion an Weitsicht entwickelt wird, ist es derzeit meine favorisierte Mircoblogging Software.
Wer sich selber mal davon ein Bild machen möchte, der kann mittlerweile aus einer Reihe von Instanzen wählen. Hier mal drei Stück mit einer offenen Registrierung, die mir gerade einfallen:
Wer eine eigene Instanz aufsetzen möchte, der kann sich die in der README enthaltene Basis Anleitung im git durchlesen oder schaut mal ins Wiki, wo schon ein paar Step-by-Step Anleitungen existieren, welche mit unter auch von mir stammen und mein bescheidener Beitrag zu diesem Projekt sein soll, da ich beim programmieren eher weniger hilfreich bin.
Das soll es erstmal gewesen dazu gewesen sein. Wenn es Fragen gibt, das ganze euch interessiert oder ihr was beisteuern wollt, die softwarebezogene Kommunikation findet über Matrix, bzw. dem IRC Channel #pleroma auf Freenode statt.
Ein Kumpel ist in eine neue Wohnung gezogen, welche nicht weit von meinen Eltern entfernt ist. Da es noch eine Weile dauert bis er Internet da hat, kam ich auf die Idee das man ihn doch temporär bei meinen Eltern dran hängen kann. Was vorher eher als Scherz gedacht war, wollte dann aber doch ausprobiert werden, denn die nötige Hardware war vorhanden.
Ich schnappte mir also meinen CPE210, der derzeit nur im Schrank rumm lag und und lötet hier wieder die Antennen um, da ich hier ja eine durch eine Rundstrahler Antenne getauscht hatte. Anschließende flashte ich hier LEDE als Firmware auf den Router und konfigurierte ihn als AP. Mein Vater hat, aus Zeiten als es noch kein Internet in meinem kleinen Heimatdorf gab, eine kleine Antennenhalterung einer ehemaligen WIMAX Antenne auf dem Dach, welche perfekt für den CPE passte. Ich kletterte also aufs Dach, befestigte den Router und richtete ihn ungefähr in die Richtung aus, wo die neue Wohnung sich befindet. Erstaunlicherweise habe ich sogar im Garten meiner Eltern, direkt unter dem Router recht guten Empfang, was aber bei der Öffnung der Antenne gar nicht der Fall sein sollte, aber naja. Als Gegenstelle, welche bei meinem Kumpel ans Dachfenster kommt, kommt eine Picostation M2 zum Einsatz. Diese hatte ich mal als Freifunkrouter bei meinem Vater auf dem Dach, welcher allerdings irgendwann mal, aus Gründen, wieder abgenommen wurde und seitdem herum lag. Auf dieser hatte ich irgendwann mal wieder die Stock Software aufgespielt, welche ich auch drauf ließ und den Router einfach als „Station“ konfigurierte, welcher sich mit dem CPE verbindet. Befestigt wurde die Picostation neben einem Dachfenster, indem wir einen Winkel in einen Schlitz zwischen zwei Blechen einklemmten und daran den Router befestigten. Eine Verbindung kam auch prompt zustande, allerdings ist die Geschwindigkeit…naja überschaubar. Mein Kumpel hat nun eine, ein klein wenig schwankende, DSL4000er Leitung, mit welcher man aber bequem 720p Youtube und Netflix gucken kann. Ich habe noch ein paar Stunden mit unterschiedlichen Ausrichtungen der Router und unterschiedlichen Channeln verbracht, allerdings wird es wohl an den Bäumen und drei Häusern liegen, das das Signal nicht sooooo gut ist, aber als Übergang wird es reichen. Klar, ich könnte mir jetzt noch eine Richtantenne für einen normalen Router bauen, aber das ist mir der Aufwand jetzt nicht wert.
UPDATE: Wie angekündigt, nochmal eine kurze Rückmeldung: Mein Rechner lief jetzt seit diesen 14 Tagen durch ohne das das Problem aufgetreten ist. Das wäre vorher nicht gegangen, somit würde ich sagen Kernel Upgrade bringt was. ;-)
Ich hab schon seit Beginn an mit Xubuntu 16.04 das Problem, das in einem von zehn Aufweckversuchen aus dem Standby, so gut wie keine Buchstaben mehr da sind. Außer bei ein paar einzelnen Programmen wie Chromium oder Thunderbird, wo dennoch Buchstaben angezeigt werden. Ich hatte mich damit auch schonmal beschäftigt, konnte aber nichts näheres herausfinden woran es liegen könnte, und ein paar Testeinstellungen in der xorg.conf brachten auch nicht wirklich Besserung. Außerdem trat der Fehler auch „relativ“ selten auf und ich hab ihn auch nicht absichtlich reproduziert können, wodurch mir der Fehler irgendwann wieder egal war und ich damit lebte. Heute trat er allerdings wieder auf und da bekam ich so einen Hals, das ich mich da nochmal mit beschätigte und einen Bugreport fand, der dieses Problem beschrieb. Das Problem hat offenbar mit dem Kernel 4.4 zu tun, da auch Benutzer von Ubuntu 14.04 mit Xenial Kernel von dem selben Problem berichteten. Die Lösung sei hier den Kernel 4.8 zu installieren, welcher das Problem beheben soll. Unter 16.04 macht man das wie folgt:
Laut dem Bugreport soll der Fehler danach nicht mehr auftreten. Ich bin gespannnt und werde nach 14 Tagen hier nochmal ein kleines Update reinschreiben.
Ich denke jeder kennt nohup und was man damit macht. Deshalb hier nur ganz kurz – Führt man z.B. etwas auf einer entfernten Maschine einen Befehl aus und loggt sich aus, wird das HUP Signal an den Prozess gesendet und in Folge dessen terminiert. Stellt man nun nohup vor den Befehl, wird das HUP Signal ignoiert.
Dieser Artikel soll eher für mich eine kleine Gedankenstütze sein, da ich kürzlich, remote, einen Befehl mit vorangestelltem nohup ausführen wollte, der es allerdings nicht tat. Und zwar führte ich ihn wie folgt aus:
STDOUT und STDERR werden eigentlich standartmäßig nach nohup.out umgeleitet, laut manual. Laut Stackoverflow muss man aber alle I/O Stream bei remote nohup Kommandos umleiten. Folgendes funktionierte dann auch:
Steuererklärung…ja spannendes Thema das jeder liebt. Ich gehöre zu denen die noch nie eine gemacht haben. Zwar hab ich schon zwei mal damit angefangen, aber jedes mal wieder abgebrochen, da es mir den Aufwand einfach nicht Wert war. Jeder sagte zwar immer „Ja, die Programme machen alles für dich, das ist einfach.“. Diese Aussage konnt ich nie nachvollziehen. Man wird da zwar an die Hand genommen, aber ich kam immer wieder an den Punkte wo mir das Programm vorschlug hier jetzt Option A oder B einzutragen. Ich hatte aber Option C, welche irgendwie in A und B passen würde, was nun? Dann kommt noch dazu die ganzen Belege zu suchen… Ich bekomm schon richtig Lust während ich das hier schreibe… Naja jedenfalls hat mir mein Vater nahe gelegt das doch mal zu machen, da ich von zu Hause aus arbeite und das sicher lohnen würde. Also heute mal hingesetzt und geguckt ob es denn Steuererklärungsprogramme gibt die nativ unter Linux laufen, obwohl ich die Antwort schon kannte. Ein paar sollen allerdings gut mit Wine laufen, unter anderem das Program tax2017 von Buhl. Das passte mir ganz gut in den Kram, da ich mit diesem damals meinen zweiten Versuch unternahm und ich das als recht übersichtlich in Erinnerung hatte. Also mal schnell gesucht, welche Wine Version denn dafür zu empfehlen ist und wurde im Forum des Herstellers fündig. Benötigt wird also folgendes:
tax2017
Wine >2.4
Aktuelles Winetricks
Visual C++ 2015 libraries
Die Wine Version muss dafür aus dem Repo des Winehq installiert werden, welches man wie folgt hinzufügt:
Dies installiert die derzeit aktuellste Developer Version von Wine (zu diesem Zeitpunkt 2.11.0). Als nächstes installiert man Winetricks. Allerdings nicht aus dem Ubuntu Repository, da die Version ganz schön in die Jahre gekommen ist und damit eine Installation von vcrun2015 nicht funktioniert:
Man sollte nun Winetricks einmal über die Konsole ohne Argumente aufrufen, damit es sich konfiguriert und noch ein paar Abhängkeiten installiert. Anschließend kann man das Fenster schließen und auf der Konsole folgendes ausführen um vcrun2015 zu installieren:
winetricks vcrun2015
Soviel zur Vorbereitung von Wine. Nun kann man die Setupdatei von tax2017 ausführen und die Installation sollte durchlaufen und das Programm anschließend starten. Ich kann noch nicht sagen ob es noch irgendwo Fehler gibt, da ich nun erstmal irgend nenn Code, für das automatische vorausfüllen der Steuererklärung, beantragen musste der mit PER POST zugeschickt wird. Das ist unter anderem auch so ein Punkt der mich immer wieder ankotzt. Man nimmt sich vor heute mal die Steuererklärung zu machen und dann kommt „Bitte beantragen sie das und das – Vielen Dank, Sie werden den Zugangscode in ca. 2 Tagen in ihrem Briefkasten haben.“. 2017 FTW!
Vor ein paar Wochen hat ein Kumpel sich einen neuen Rechner gekauft und in diesem Zuge auch direkt mal sein System neu gemacht, von vorher Ubuntu 12.04 nach nun Xubuntu 16.04. Er meldete sich dann bei mir, weil er seinen Drucker, einen Canon PIXMA MG5250, nicht installiert bekommt. Er hatte bereits die richtigen Treiber herunter geladen und entpackt, allerdings meckerte die install.sh beim ausführen das eine Abhängkeit nicht erfüllt ist:
[...]
Entpacken von cnijfilter-mg5200series (3.40-1) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von cnijfilter-mg5200series:
cnijfilter-mg5200series hängt ab von libtiff4; aber:
Paket libtiff4 ist nicht installiert.
[...]
Nun ist der Treiber von 2011, also eher so Ubuntu 10.04. Unter 16.04 gibt es nun kein libtiff4 mehr, sondern libtiff5. Gut dacht ich mir, bearbeiteste mal schnell das control file des Pakets und ersetzt libtiff4 durch libtiff5. Für solche schnellen Sachen benutzt ich gern ein Script, welches ich mal vor einer Weile gefunden hatte: https://ubuntuforums.org/showthread.php?t=636724. Nachdem ich das control file angepasst hatte, lief die install.sh auch durch und der Drucker lies sich einrichten. Ich macht dann einen Testdruck, allerdings passierte nichts. Die Daten wurden scheinbar korrekt übermittelt und man sah im Display des Druckers, dass dieser auch die Daten empfing, aber anschließend einfach nichts tat. Weder der Drucker noch Ubuntu gaben einen Fehler aus. Nach einer kurzen Recherche, ob denn der Druckertreiber mit libtiff5 zusammenarbeitet, fand ich den Artikel von Klaus Munsteiner. Also bin ich dem Artikel gefolgt und habe libtiff4 installiert und anschließend kam auch etwas aus dem Drucker.
Nach langer Zeit mal wieder ein Beitrag, jedoch aus einer ganz anderen Kategorie als IT. Mein Onkel besitzt schon seitdem ich denken kann (um genau zu sein seit 1978, also noch lange vor meiner Zeit) einen alten DDR Wohnanhänger – einen QEK Junior – auf den ich schon als Kind abgefahren bin und wann immer ich zu Besuch war und es die Temperaturen zuließen, schlief ich darin. Schon damals sagte ich immer das dieser Wohnanhänger irgendwann einmal mir gehören wird und mein Onkel entgegnete immer das dies nie geschehen wird, da er ihn nie abgeben würde. Über ein Jahrzehnt später erreichte mich Mitte letzten Jahres, über den Verwandschaftsbuschfunk, die Nachricht, das mein Onkel den Wohnanhänger verschrotten möchte und ich dachte ich hör nicht richtig. Also direkt angerufen und ihm gesagt das er das mal schön vergessen kann und mir das Ding gefälligst geben soll, dem er nach etwas hin und her schlussendlich auch zustimmte. Meine Eltern waren davon nicht all zu begeistert, da sie ihn nur als Schrott betrachten und ich konnte mir immer anhören „Der kommt aber nicht auf unser Grundstück!“. Zum Glück habe ich aber einen netten Nachbarn und Kindheitsfreund namens Christoph, der meinem QEK einen Stellplatz geben wird. So viel zur Vorgeschichte, letzte Woche war es dann nun endlich so weit und ich fuhr mit Christoph zu meinem Onkel um den QEK zu holen. Da dieser nun seit fast 7 Jahren stand, hatte er natürlich keinen TÜV und ich war mir nicht sicher ob ich direkt einen bekommen würde, weswegen wir mit einem großen Anhänger (Dank nochmal an den Freund meiner Schwester an dieser Stelle) fuhren, worauf der QEK dann schlussendlich geladen werden sollte. Der Plan war hinfahren, draufrollen, festschnallen und zurück. Alles in allem hat wir dafür nicht viel Zeit oder Aufwand eingeplant. Naja, schlussendlich hat das Beladen 1,5 Stunden gedauert, da der QEK doch breiter war als gedacht und wir etwas improvisieren musste und wir uns dann auch noch in Berlin verfuhren. Aber es ging schlussendlich alles gut und der QEK steht nun bei mir. 2 Tage später machte ich mich dann daran mir das gute Stück mal etwas näher anzuschauen. Vorab, der Gute ist Baujahr 1974 (EZ 1978) und stand in seinem ganze Leben die meiste Zeit eigentlich rum. Ich selbst kann mich an keine 10 Gelegenheiten erinnern, wo er wirklich mal bewegt wurde. Auch wurde in den ganzen Jahren nie etwas an ihm erneuert oder getauscht (abgesehn von den Rädern), höhstens mal notdürftig geflickt. Dafür muss man aber sagen, das er echt ganz in Ordnung aussieht und nichts gravierendes gammelt, weil es aber auch nicht viel gibt was gammeln könnte. Als ersten Akt habe ich erstmal angefangen alles was so im Inneren vorhanden war rauszuschmeißen, was primär die, auf Grund von brüchigen Fenstergummis, feucht gewordenen Polster, Teppiche und Gardienen waren und die Innenverkleidung der Küchenschränke. Außerdem fand ich einen intakte Hängematte, welche ich direkt mit der kleinen Tochter meines Nachbarn aufspannte und ausprobierte. Am nächsten Tag schob ich den Hänger dann zusammen mit meinem Vater doch auf das Grundstück meiner Eltern, um den QEK von außen zu reinigen. Er stand bei meinem Onkel immer unter einem Nadelbaum und sah dementsprechend aus. Die Außentemperaturen stimmten und so schnappte ich mir einen Hochdruckreiniger und fing an, zusammen mit meinem Vater, den QEK wieder weiß zu machen. Das meiste und gröbste ging ab, allerdings haben die ein oder anderen Harzspuren dem Hochdruckreiniger getrotzt und so muss ich die Tage nochmal mit Schwamm und Scheuermilch rann. Außerdem musste ich nach der Reinigung außen, innen erst einmal wischen, auf Grund der zuvor erwähnten brüchigen Fenstergummis.
Nachdem der Dreck außen nun weitesgehend runter war, konnte ich nun besser herausfinden was so getauscht bzw. erneuert werden muss, was folgende Dinge wären:
Abdeckung der Kennzeichenbeleuchtung, welche gebrochen ist
Schalen der Beleuchtung müssen entweder erneuert oder poliert werden
Alle Schrauben, da diese teilweise nur noch aus Rost bestehen
Gummis der Fenster, Tür und Dachluke
Haltebänder der Dachlucke
Das linke Fenster und die Frontscheibe, da diese auf Grund von jahrelanger UV Einstrahlung Minirisse haben (Plexiglas)
Löcher und vorhandene Beschädigungen an der Glasfaserhaut ausbessern
Alle Polster müssen neu gemacht werden
Neue Gardienen
Türschloss
Bodenplatte direkt an der Tür sollte neu gemacht werden, da die im Türbereich etwas angegammelt ist
Abschleifen, versiegeln und streichen des Fussbereiches vor der Küche
Neuer Boden – geplant ist Linoleum
Außenbox wieder in Stand setzen (gebrochenes Scharnier, gammelnde Bodenplatte)
Alle Belüftungsöffnungen mit Insektengittern versehen
Bodenstützen von Rost befreien, versiegeln und schmieren
TÜV
Das waren jetzt die Dinge die definitiv erneuert werden müssen und nun die Dinge die ich gern zusätzlich umsetzen würde:
Himmel verkleiden
Seiten verkleiden oder streichen
Küche farblich aufhübschen
Aufstellvorichtung des Tisches verändern oder direkt einen neuen Tisch anfertigen
Standort der Gasflasche in die Außenbox verlagern
Mischbatterie ans Waschbecken anbringen
Wassertank in den Topschrank oder in die Außenbox einbauen, wobei bei letzterem eine Pumpe nötig wäre, bei ersterem würde das Gefälle für den Wasserdruck sorgen
Alte Lampen durch LED’s ersetzen
Ringsherum über die Fenster, aus Holz eine Gardienenbefestigung anbringen, worauf oben dann LED-Beleuchtung angebracht werden soll
Elektrik modernisieren, was heißt Batterie für autarke Stromversorgung, welche wahlweise via Solarpanel auf dem Dach, 12V Anschluss vom Auto oder normale Stromversorgung geladen werden soll
Eine Anschlussdose für Strom Außen anringen (derzeit hängt unten einfach ein Schukostecker raus)
Vielleicht einen kleinen TV
Gasherd
eventuell einen Minikühlschrank
So, das ist einen ganz schöne Liste und mal schauen was ich davon umgesetzt bekomme und was gerade von den zusätzlichen Dingen aus Gewichtsgründen umsetzbar ist. Als erstes steht jedoch der TÜV auf dem Plan, da der QEK wie gesagt nun seit fast 7 Jahren steht und nach 7 Jahren muss man eine Vollabnahme machen lassen, welche natürlich mehr kostet. Außerdem läuft er noch auf meinen Onkel und eine Ummeldung werde ich ohne TÜV nicht machen können. Schön zu beobachten ist auf jeden Fall, seitdem er nun bei mir steht, das zumindest mein Vater mir sehr aktiv mit Rat und Tat zur Seite steht und das schon mich schon andere Nachbarn auf den QEK angesprochen habe und ab wann man sich den denn mal leihen könnte. :-D
Ich werde auf jedenfall in Zukunft von meinen Vorschritten berichten. Und zu guter letzt, nochmal ganz großen Dank an Christoph für die viele Hilfe :-)