Sun, Jan 06, 2019

Kandidatur für das openSUSE Board

Du hast vielleicht schon gehört, dass die Wahlen für drei offene Sitze im openSUSE Board im Gange sind. Ich habe eine Weile darüber nachgedacht, für das Board zu kandidieren und jetzt scheint es der richtige Zeitpunkt zu sein, um mich einzubringen.

Der nachfolgende Text ist die deutsche Übersetzung einer einfachen, unbearbeiteten Kopie meiner Bewerbung.

Einführung, Biographie und Beiträge

Mein Name ist Vinzenz Vietzke, aber ich bevorzuge es, beim viel kürzeren “vinz” oder “vinzv” zu bleiben. Ich bin 34 Jahre alt, lebe in einer kleinen Stadt in Süddeutschland. Wie die meisten deutschen Linux-Anwender in meinem Alter habe ich bereits Ende der 90er Jahre meine ersten Schritte mit S.u.S.E. gemacht. Im Laufe der Jahre wechselte ich zwischen verschiedenen Distributionen und trug auf verschiedene Weise zu etlichen von ihnen bei. Mein Hauptberuf ist Produktmanagement und Marketing beim Linux-Hardwareanbieter TUXEDO Computers.

openSUSE und TUXEDO

Ausgehend von nur einem Laptop mit openSUSE bieten wir bei TUXEDO heute rund 20 verschiedene Modelle sowie eine große Auswahl an Desktop-PCs mit vorinstalliertem Leap 15. Kunden erhalten außerdem kostenlosen lebenslangen Support für ihr vorinstalliertes System. Deshalb muss natürlich auch unser kostenloses Telefon/E-Mail-Supportteam für openSUSE geschult werden. Für dieses ganze Projekt war und bin ich als Technik- und Projektleiter sozusagen verantwortlich, um openSUSE auf die Computer von TUXEDO zu “bringen”. Ich bin mit oS in Kontakt getreten, habe ausgearbeitet, wie und wann wir alles realisieren können.

Zusätzlich zu den technischen Angelegenheiten bin ich die treibende Kraft bei TUXEDO Computers, damit unser Unternehmen die Unterstützung von openSUSE intensiviert. Seit Oktober 2018 sponsern wir daher offiziell das openSUSE-Projekt. Wir bieten jedes unserer Modelle als Vorführ- und Workshop-Gerät kostenlos an und kümmern uns um die Logistik- und Event-Betreuung. Außerdem sponsern wir die oSC19 in Nürnberg mit Geräten zur Demonstration und für Installationsfeste.

Natürlich sind das vor allem finanzielle Anstrengungen und unternehmensinterne Projekte. Aber um openSUSE einen größeren Bekanntheitsgrad zu verschaffen, braucht es jemanden, der koordiniert, vorantreibt und sich kümmert. Deshalb nenne ich meine Beiträge zu openSUSE meist “Meta-Beiträge”.

i18n

Neben den teils bezahlten und teils Freizeitaktivitäten für TUXEDO koordiniere ich Upstream-Übersetzungsteams von Xfce, übersetze aktiv openSUSE und vielen anderen Projekten. Für Details siehe meine Profile bei Crowdin, Gnome, Transifex sowie meine persönliche Website..

Ziele

Wie jedes von Freiwilligen geführte Projekt hat auch openSUSE seine Probleme zu lösen. Die meisten von ihnen sind offensichtlich und bereits in Arbeit: Konsolidierung von Webauftritten, Reinigung des Wikis, Sortierung der Kommunikationsinfrastruktur und mögliche Erweiterungen. Ich glaube nicht, dass es noch etwas mehr braucht, um diese Dinge außer der Zeit voranzutreiben. Der Vorstand hat in der Vergangenheit bei diesen Dingen eine wirklich großartige Arbeit geleistet und wird es sicherlich auch in Zukunft tun.

Große und kleine Probleme

Eines der Hauptthemen, die ich erlebe, ist die öffentliche Wahrnehmung, z. B. wie openSUSE als Distribution wahrgenommen wird. Wenn Menschen über openSUSE sprechen, erzählen sie hauptsächlich von ihren Erfahrungen, die sie vor einem Jahrzehnt gemacht haben (wörtlich!). Du bist 2011 auf einige YaST-Themen gestoßen und deshalb hast du aufgehört, openSUSE zu empfehlen, und du hast nie deine Meinung geändert? Meine Güte. Diese Erinnerungen müssen überarbeitet und in einen korrekten Zusammenhang gebracht werden. Die meisten von ihnen sind sowieso Vorurteile.

Auf der anderen Seite setzen Menschen, die von Linux gehört haben, aber kaum Kenntnisse haben, meist eine bestimmte Distribution mit Linux gleich. Obwohl es technisch nicht korrekt ist, tun Endbenutzer dies – was in Ordnung ist. Aber sie setzen es nicht mit openSUSE gleich, und das ist schade. oS ist wirklich weit gekommen und ist einfach zu installieren, zu betreiben und zu bedienen. Die Menschen müssen nur etwas darüber wissen, und genau hier kommen die oben genannten Vorurteile ins Spiel. Der ” Technik-Typ ” in einem Freundeskreis ist ein Multiplikator und muss überzeugt werden, dass openSUSE etwas ist, das er mit gutem Gewissen uneingeschränkt empfehlen kann.

Rolle des Boards

Aus meiner Sicht hat das Board zwei Hauptrollen: In erster Linie ist es eine Art Dienstleister. Es dient dem gesamten Projekt als Anlaufstelle für Fragen, Projektkoordination und Richtungsweisung etc. Dies ist entscheidend für das gesamte openSUSE-Projekt und sollte nie geändert, sondern nach Möglichkeit nur erweitert werden.

Die zweite Rolle könnte als “Zündfunke für Ideen” bezeichnet werden. Die meisten Ideen aus der Community sind technischer Natur, was völlig logisch ist. Nur manchmal gibt es Dinge, von denen das ganze Projekt profitieren würde, aber niemand sieht sie oder hat Zeit dafür. Hier könnte das Board einspringen, um Zündfunken zu erzeugen und Input von jemandem zu geben, der in der Lage ist, einen Schritt zurückzutreten, um das Gesamtbild zu betrachten.

Meine Rolle in diesem Board-Team wäre sowohl für Teil eins zugänglich als auch hilfreich zu sein. Aber auch, wie im zweiten Teil erwähnt, bei Bedarf Überlegungen und Ideen zu äußern.

Warum solltest du für mich stimmen?

Ich beschäftige mich seit etwa 10 Jahren mit Linux und Open Source Communities. Obwohl ich kein langfristiger Mitwirkender bei openSUSE bin, weiß ich, wie in einem so großen, vielfältigen Projekt “Dinge laufen” und wie man damit umgeht. Wenn du jemanden ohne “Geekobrille” haben willst, solltest du für mich stimmen. Nicht, dass es schlecht ist, tief in der Community von openSUSE verankert zu sein! Aber ich kann neue Perspektiven einbringen, die meisten davon bezogen auf Endanwender, Windows-Flüchtlinge und neugierige, aber technisch nicht versierte Menschen. Ich verstehe sowohl Entwickler und Techniker auf der einen Seite als auch Leute, die vorinstallierte Linux-Hardware mit wenig Lust zum Basteln kaufen. Auf diese Weise fungiere ich als Stellvertreter zwischen den Welten, was am Ende für alle Beteiligten gut sein könnte.

Zusammenfassung

Wie bereits erwähnt, läuft mein Hauptziel darauf hinaus, dass Leute an einfaches, aber leistungsfähiges Linux denken, wenn sie openSUSE hören. Das Gesamtprojekt ist groß und stark genug, um wirklich als “die erste Wahl für Sysadmins, Entwickler und Desktop-Anwender” zu fungieren – und zwar alle!

Frag mich irgendwas

Wenn du es so weit geschafft hast – danke für deine Zeit und dein Interesse. Für Fragen, Kommentare oder Widersprüche stehe ich dir gerne zur Verfügung. Ich freue mich über alles davon via:

board_candidates++ - or: running for the openSUSE Board again

About two years ago, I wrote a mail titled "Another openSUSE Board candidate". These two years passed quickly, and I really enjoyed being part of the Board and helping the community whenever needed.

I'd like to continue this "job", and therefore decided to run for re-election.

I use openSUSE since years (it was still named „SuSE Linux“ with lowercase „u“ back then) and started annoying people in bugzilla, err, started betatesting in the 9.2 beta phase. Since then, I reported more than 1300 bugs. Nowadays, OBS ruins my bugzilla statistics by introducing the option to send a SR ;-)

One of my current activities in openSUSE is working in the Heroes team, where I started with moving and upgrading the wiki. I also help out on various *.opensuse.org servers since someone was evil enough to give me root permissions on lots of them ;-) (Transparency note: I helped to setup the elections.opensuse.org server before last year's elections - but will of course not touch it until the elections finish.)

My other openSUSE hobbies ;-) are AppArmor and PostfixAdmin, where I'm active in upstream development and as packager. AppArmor also turned out to be a good opportunity for cross-distribution collaboration.

You can find me on several mailinglists and on IRC (nickname "cboltz"), and of course I still scare people in bugzilla. I‘m also a regular visitor and speaker at the openSUSE Conference, and visit other conferences as time permits.

My day job has nothing to do with computers. I produce something you can drink that is named after a software we ship in openSUSE ;-)

Oh, and I collect funny quotes from various mailinglists, IRC, bugzilla etc. that then end up as random [1] signatures under my mails, so be careful what you write ;-)

There are some things I‘ll never do (you might remember them from two years ago):

  • use a stable release on my main computer – Tumbleweed is just too good ;-)
  • open a bugreport if fxing the bug and sending a SR is faster
  • be too serious – hey, our motto is „Have a lot of fun...“ ;-)
  • drink beer ;-) (sorry, not even openSUSE beer)

If you want to read more from or about me, have a look at


I wish all candidates good luck, and hope that we‘ll see some more candidates and lots of voters!



[1] sometimes I hand-pick signatures, and this is one of these cases with a non-random signature ;-) (yes, I know it's unusual for a blog post to have a signature at all, so this will stay a rare exception)
--
Christian, there are times you are a pain in the ass, there are times I really like you.
This is one of both of those times ;)
[Richard Brown]

Sun, Dec 09, 2018

Kmail und PostgreSQL zusammenbringen

Kmail, das Mailprogramm des KDE Projekts, kommt ja nicht alleine daher. Mit dabei ist auch ein Adressbuch, eine Terminverwaltung, ein Benachrichtigungsdienst und noch einiges mehr. Das ganze wird von Akonadi, dem dahinterliegenden Backend der gesamten KDE PIM Suite, sozusagen am Laufen gehalten.

Standardmäßig läuft Akonadi mit MySQL als Datenbanksystem, was bei mir aber immer wieder Zicken gemacht hat. Daher habe ich mich mal nach Alternativen umgesehen und bin neben SQLite bei PostgreSQL gelandet. Über SQLite und die Implementierung in Akonadi gab es leider einige negative Berichte, darum habe ich es direkt aussortiert.
Mit PostgreSQL hatte ich keine Erfahrungen, konnte es aber recht schnell einrichten. Die Anbindung von Akonadi und somit Kmail an PostgreSQL war ebenfalls einfach.

Alle Schritte unter openSUSE

Zuerst installieren wir alle nötigen Pakete für PostgreSQL und die Akonadi-Anbindung:

# zypper in postgresql-server libQt5Sql5-postgresql

PostgreSQL Server aktivieren und starten:

# systemctl enable --now postgresql

Postgres-Nutzer und -Datenbank anlegen:

# su - postgres
$ createuser <dein-nutzername>
$ psql postgres
postgres=# alter user <dein-nutzername> createdb;
postgres=# \q;
# exit

Dann richten wir – mit deinem regulären Nutzerkonto – den Datenbankzugriff einrichten:

$ createdb akonadi-<dein-nutzername>

Nun stoppen wir Akonadi und löschen bzw. verschieben die Einstellungen. Das ist besonders wichtig, falls du Akonadi schon einmal gestartet hast!

$ akonadictl stop
$ rm -rf ~/.local/share/akonadi

Die Verbindung zum Datenbankserver passen wir in der Datei ~/.config/akonadi/akonadiserverrc wie folgt an:

[%General]
Driver=QPSQL

[QPSQL]
Host=/tmp/akonadi-<dein-nutzername>.hash
InitDbPath=/usr/bin/initdb
Name=akonadi
Options=
ServerPath=/usr/bin/pg_ctl
StartServer=true

Abschließend Akonadi neu starten und du bist startklar:

$ akonadictl start

Sun, Nov 11, 2018

openSUSE-Pakete für den Client und das Dateisystem von Keybase

Keybase gehört zu den Diensten, die zwar irgendwie wahnsinnig nützlich sind, denen der breite Erfolg bisher aber leider verwehrt wurde. Das Kernfeature besteht darin, dass es einen Weg bietet eine verschlüsselte Kommunikation mit Personen aufzubauen von denen man nur einen Social-Media-Account kennt. Durch das Verfahren, einen Beweis über die Eigentümerschaft des Schlüssels im Social-Media-Account zu hinterlegen, kann man diesen, anders als Schlüsseln welche man von einem PGP-Keyserver erhalten hat, recht gut Vertrauen. Leider bietet allerdings Keybase kein Installationspaket seiner Software für openSUSE an, so dass ich nun selber Pakete erstellt habe.

Die grundlegenden Funktionen von Keybase sind über das Kommandozeilenwerkzeug keybase verfügbar. Dieses wird vom Paket keybase-client bereitgestellt und lässt sich in Tumbleweed durch ein einfaches sudo zypper install keybase-client installieren. Für Leap 15.0 ist das Paket leider nur als Versuchspaket verfügbar, welches sich am besten per 1-Klick-Installation von software.opensuse.org installieren lässt.

Außerdem bietet Keybase noch zwei weitere nützliche Funktionen. Mit dem dazugehörigen Dateisystem lassen sich Daten verschlüsselt und signiert mit anderen Nutzer tauschen. Auch öffentlich lassen sich darüber Dateien anbieten. Diese erscheinen dann unter https://<nutzername>.keybase.pub, und sind natürlich nicht verschlüsselt sondern nur signiert. Hierfür wird das Paket kbfs benötigt. Ist diese installiert, kann man per systemctl --user start kbfs das Dateisystem starten, welches dann unter ${XDG_RUNTIME_DIR}/keybase/kbfs erscheint.

Die zweite nützliche Funktion ist es Git-Repositories verschlüsselt in Keybase abzulegen. Hierzu wird das Paket kbfs-git benötigt. Sobald diese installiert ist, und das Dateisystem aktiv, kann Git auf Repositories welche das Protokoll keybase nutzen zugreifen. Die Verwaltung erfolgt hierbei über das Kommando keybase git.

Tue, Oct 30, 2018

Dieser Rattenfänger befreit Mäuse

Seit letzter Woche ist Piper in openSUSE Tumbleweed als Paket enthalten. Piper erlaubt es für eine ganze Reihe Spielermäuse diese auch unter Linux ganz genau so zu konfigurieren, wie es sonst die nur unter Windows verfügbaren Programme der Hersteller tun.

Ein Screenshot von Piper

Bei meiner Logitech G502 kann ich mit Piper nicht nur grafisch zwischen den einzelnen Profilen wechseln, sonder ich kann auch für jedes Profil die Auflösungsstufen, die Tastenbelegung und die LEDs konfigurieren.

Zur Installation muss das Paket piper ausgewählt werden, entweder in der grafischen Paketverwaltung, per 1-Klick-Installation auf software.opensuse.org oder auf der Kommandozeile:

sudo zypper install piper

In openSUSE Leap ist Piper aktuell leider nicht nutzbar. Der darunterliegende Service Ratbagd hatte seine Sicherheitsbegutachtung beim Release von Leap 15.0 leider noch nicht abgeschlossen. Mit der kommenden Version 15.1 sollte der Nutzung von Piper auf Leap dann aber auch nichts mehr im Wege stehen.

Mon, Oct 22, 2018

HTTP/2 im Apache auf openSUSE

Nachdem es inzwischen keine Version von openSUSE mehr gibt in welcher der Apache zu alt ist um HTTP/2 zu unterstützen, gibt es eigentlich keine Ausrede mehr um dieses nicht einzusetzen. Tatsächlich ist die Installation auf openSUSE auch schon hervorragend vorbereitet, man muss lediglich berücksichtigen, dass HTTP/2 nicht mit dem Multi-Processing-Module (MPM) Worker kompatibel ist, welches immer noch der Standard ist.

Um HTTP/2 zu aktivieren ist zunächst ein kompatibles MPM zu installieren. Eine gute Wahl ist hierbei das MPM Event, welches unter openSUSE durch das Paket apache2-event bereitgestellt wird.

sudo zypper install apache2-event

Alle notwendige Konfiguration kann anschließend in der Datei /etc/sysconfig/apache2 vorgenommen werden:

  1. Das korrekte MPM auswählen: APACHE_MPM=event.
  2. Das HTTP2-Module durch hinzufügen von http2 zum Wert von APACHE_MODULES aktivieren.
  3. Den Wert HTTP2 zu APACHE_SERVER_FLAGS um die von openSUSE mitgelieferte Konfiguration für HTTP/2 zu aktivieren.

Ab dem nächsten, per systemctl restart apache2 durchführbaren, Neustart ist der Server dann per HTTP/2 zu erreichen.

Um für Browser per HTTP/2 nutzbar zu sein muss der Server übrigens TLS reden, da Firefox und Chrome HTTP/2 nur für sichere Verbindungen unterstützen. Das sollte heutzutage aber sowieso der Standard sein.

Thu, Jun 21, 2018

GameMode

Beim Spielen möchte man am liebsten ungestört sein. Deshalb bietet es sich häufig an so manches Program beim Starten eines Spieles zu schließen. Auch weisen viele Spiele von Feral Interactive, z.B. F1 2017, weisen einen beim Start recht deutlich darauf hin, dass sie für die CPU eigentlich gerne den Performance-Modus aktiviert hätten. Programme zu beenden und den Energiesparmodus zu wechseln, vor allem aber dies nach Ende der Spielesitzung alles wieder rückgängig zu machen, ist mühselig und steht dem spontanen Spielegenuß im Weg. Hier hilft der von Feral Interactive entwickelte GameMode.

GameMode läuft als Prozess im Hintergrund und bietet eine einfache Funktion: Über die dazugehörige Bibliothek können Spiele den Rechner in einen Spielemodus schalten. Im Spielemodus wird die CPU in den Performance-Modus geschaltet. Außerdem lassen sich beliebige weitere beim Start des Spielemodus auszuführende Aktionen definieren um beispielsweiße den Mail-Client für die dauer der Spielesitzung zu beenden. Am Ende der Spielesitzung schaltet GameMode die CPU dann von alleine wieder in den balancierten Modus, so dass nicht weiter unnötig viel Energie verbraucht wird.

Da selbst Spiele von Feral Interactive noch nicht durchgängig GameMode unterstützen gibt es außerdem libgamemodeauto. Libgamemodeauto kann per LD_PRELOAD mit einer Anwendung mitgeladen werden und sorgt dann automatisch für den Wechsel in den Spielemodus. Installiert man libgamemodeauto über das openSUSE-Paket libgamemodeauto0, so findet es sich in /usr/lib64/libgamemodeauto.so.0. Um es im Spiel game zu nutzen ist diese dann wie folgt zu starten:

LD_PRELOAD=/usr/lib64/libgamemodeauto.so.0 game

Um Spiele per Steam mit libgamemodeauto zu starten ist in den Startoptionen des Spieles folgendes einzutragen:

LD_PRELOAD=$LD_PRELOAD:/usr/lib64/libgamemodeauto.so.0 %command%

Diese Kommandozeilen finden sich auch in der Paketbeschreibung von libgamemodeauto0, welche sich per zypper info libgamemodeauto0 anzeigen lässt.

Der einfachste Weg GameMode zu installieren ist den Download oder die Anleitung von software.opensuse.org zu nutzen. In Tumbleweed reicht ein einfaches zypper install ligbamemodeauto0. In Leap ist libgameodeauto leider noch nicht eingezogen, so dass zuvor das Repository games:tools hinzugefügt werden muss.

Zusätzliche Aktionen für den Start und das Ende des Spielemodus lassen sich in der Datei ~/.config/gamemode.ini definieren. Bei mir sieht diese so aus:

[custom]
start=
  cd && boinccmd --set_run_mode never
  akonadictl stop
  balooctl suspend
  notify-send "GameMode started"
end=
  notify-send "GameMode ended"
  akonadictl start
  balooctl resume
  cd && boinccmd --set_run_mode auto

Mit boinccmd wird Boinc für die dauer der Spielesitzung angehalten. Mit akonadictl halte ich effektiv mein Emailprogram an und mit balooctl schalte ich für die Dauer der Spielesitzung die Indizierung der Desktopsuche aus. Nach Änderungen an der Konfigurationsdatei muss GameMode einmal beendet werden, am einfachsten über killall gamemoded. Durch die nächste Anwendung, welche den GameMode nutzen möchte, wird der Prozess automatisch wieder gestartet, dann mit der neuen Konfiguration.

Für einfache Tests gibt es außerdem noch die Möglichkeit den Spielemodus mittels gamemode -r explizit zu aktivieren. Beenden des Programmes per Strg+C deaktiviert den Spielemodus dann wieder.

Sat, Jun 09, 2018

Ein paar Tipps zum Aktualisieren von openSUSE

Seit dem 25. Mai 2018 ist openSUSE Leap 15.0 verfügbar. Ein guter Grund mal ein paar Tipps zur Aktualiserung von openSUSE auf eine neue Version zu geben. Da ich für gewöhnlich mithilfe des Installationsmediums aktualisiere beziehen sich meine Tipps primär auf diese Methode. Aber gerade der Hinweis wie man verwaiste Pakete findet ist natürlich auch nach einem sogenannten Live-Upgrade hilfreich.

openSUSE Leap 15.0 ist jetzt verfügbar

Der NVIDIA-Treiber

Meiner Erfahrung nach empfiehlt es sich den NVIDIA-Treiber vor dem Update zu deinstallieren. Bei früheren Versionen von openSUSE habe ich es ansonsten schon erlebt, dass auch nach hinzufügen des NVIDIA-Repositories für die neue Version noch der alte Treiber installiert bleibt. Dieser funktioniert dann allerdings nicht. Linux, bzw. X.org, ist an dieser Stelle zwar hart im Nehmen und nutzt dann automatisch Nouveau, aber dieser kann dem proprietären Treiber von NVIDIA leider nicht annähernd das Wasser reichen.

Sollte das System bereits aktualisiert und Nouveau aktiv sein, so empfiehlt es sich den alten NVIDIA-Treiber mittels zypper remove nvidia* komplett zu deinstallieren und anschließen neu zu installieren. Eine Neuinstallation mittels zypper install --force hat bei mir in der Vergangenheit meißtens nicht den gewünschten Erfolg gebracht.

UEFI

Bei einem System welches sowohl im EFI-Modus als auch im Bios-Kompatibilitätsmodus starten kann ist es wichtig das Upgrade im selben Modus zu starten welchen das alte System nutzt. Bei openSUSE 42.2 endete ich dadurch, dass ich dies nicht getan habe, mit einem nicht bootfähigen System. Allerdings gibt es im Zweifelsfall einen einfachen Ausweg. Einfach auf dem bereits aktualisieren System das Update nochmal im richtigen Modus ausführen. Da alle Pakete schon aktualisiert sind und nur noch der Bootcode korrekt installiert werden muss, geht dies dann auch recht schnell.

Repositories

Bei einem Update mithilfe des Installationsmediums werden alle zusätzlichen Repositories aus dem System entfernt. Dies führt zu einem sauberen Update, kann aber zur Folge haben, dass man anschließend mühsam zusammensuchen muss woher man eine bestimmte Anwendung hatte. Hierzu empfiehlt es sich vor der Aktualisierung einen Überblick zu verschaffen welche Pakete man aus dritten Quellen installiert hat.

Die konfigurierten Repositories

Zypper kann einem mit repos -u die Liste der aktuell konfigurierten Repositories mit ihren URLs ausgeben. So ist es, falls das Repository auch nach dem Update noch benötigt wird, möglich, durch einfaches Ersetzen der Versionsnummer in der URL, an das passende Repository der neuen Version zu kommen. Auf meinem großen Rechner sieht dies dann zum Beispiel so aus:

> zypper repos -u
Die Repository-Prioritäten sind ohne Effekt. Alle aktivierten Repositorys teilen sich die gleiche Priorität.

#  | Alias                           | Name                                                    | Aktiviert | GPG-Überprüfung | Aktualisierung | URI
---+---------------------------------+---------------------------------------------------------+-----------+-----------------+----------------+-------------------------------------------------------------------------------------
1 | code                            | Visual Studio Code                                      | Ja        | (r ) Ja         | Ja             | https://packages.microsoft.com/yumrepos/vscode
2 | download.nvidia.com-leap        | nVidia Graphics Drivers                                 | Ja        | (r ) Ja         | Ja             | http://download.nvidia.com/opensuse/leap/42.3
3 | download.opensuse.org-non-oss   | Haupt-Repository (NON-OSS)                              | Ja        | (r ) Ja         | Ja             | http://download.opensuse.org/distribution/leap/42.3/repo/non-oss/
4 | download.opensuse.org-non-oss_1 | Aktualisierungs-Repository (Nicht-Open-Source-Software) | Ja        | (r ) Ja         | Ja             | http://download.opensuse.org/update/leap/42.3/non-oss/
5 | download.opensuse.org-oss       | Haupt-Repository (OSS)                                  | Ja        | (r ) Ja         | Ja             | http://download.opensuse.org/distribution/leap/42.3/repo/oss/
6 | download.opensuse.org-oss_1     | Hauptaktualisierungs-Repository                         | Ja        | (r ) Ja         | Ja             | http://download.opensuse.org/update/leap/42.3/oss
7 | isv_ownCloud_desktop            | The ownCloud Desktop Client (openSUSE_Leap_42.3)        | Ja        | (r ) Ja         | Ja             | http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/openSUSE_Leap_42.3/
8 | opensuse-guide.org-repo         | Libdvdcss Repository                                    | Ja        | (r ) Ja         | Ja             | http://opensuse-guide.org/repo/openSUSE_Leap_42.3/
9 | packman.inode.at-suse           | Packman Repository                                      | Ja        | (r ) Ja         | Ja             | http://packman.inode.at/suse/openSUSE_Leap_42.3/
10 | repo-debug                      | openSUSE-Leap-42.3-Debug                                | Nein      | ----            | ----           | http://download.opensuse.org/debug/distribution/leap/42.3/repo/oss/
11 | repo-debug-non-oss              | openSUSE-Leap-42.3-Debug-Non-Oss                        | Nein      | ----            | ----           | http://download.opensuse.org/debug/distribution/leap/42.3/repo/non-oss/
12 | repo-debug-update               | openSUSE-Leap-42.3-Update-Debug                         | Nein      | ----            | ----           | http://download.opensuse.org/debug/update/leap/42.3/oss/
13 | repo-debug-update-non-oss       | openSUSE-Leap-42.3-Update-Debug-Non-Oss                 | Nein      | ----            | ----           | http://download.opensuse.org/debug/update/leap/42.3/non-oss/
14 | repo-source                     | openSUSE-Leap-42.3-Source                               | Nein      | ----            | ----           | http://download.opensuse.org/source/distribution/leap/42.3/repo/oss/
15 | repo-source-non-oss             | openSUSE-Leap-42.3-Source-Non-Oss                       | Nein      | ----            | ----           | http://download.opensuse.org/source/distribution/leap/42.3/repo/non-oss/

Installierte Pakete eines Repositories anzeigen

Fragt man sich wozu ein bestimmtes Repository im System ist kann man sich mit zypper search --repo <repository-id> --installed-only die aus einem bestimmten Repository installierten Pakete anzeigen lassen. Am Beispiel des NVIDIA-Repositories sieht das bei mir dann so aus:

> zypper search -r download.nvidia.com-leap -i
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S  | Name                      | Zusammenfassung                                                       | Typ
---+---------------------------+-----------------------------------------------------------------------+------
i+ | nvidia-computeG04         | NVIDIA driver for computing with GPGPU                                | Paket
i+ | nvidia-gfxG04-kmp-default | NVIDIA graphics driver kernel module for GeForce 400 series and newer | Paket
i+ | nvidia-glG04              | NVIDIA OpenGL libraries for OpenGL acceleration                       | Paket
i+ | x11-video-nvidiaG04       | NVIDIA graphics driver for GeForce 400 series and newer               | Paket

Verwaiste Pakete aufräumen

Nach dem Update lohnt es sich häufig verwaiste Pakete zu entfernen. Solche kann man mit einer Kombination von zypper search und grep leicht auffinden:

> zypper search --details --installed-only --type package | grep Systempakete
i+ | Desurium                                    | Paket | 0.8.0_rc10-3.1                                       | x86_64 | (Systempakete)

Möchte man ein Paket gerne behalten lohnt es sich mit zypper search --details <Paketname> zu schauen ob es eine andere Version des Paketes in einem der konfigurierten Repsitories gibt. Findet sich dort keine Version, so lohnt meißtens ein Besuch auf https://software.opensuse.org.

Wed, May 09, 2018

Grid Autosport auf openSUSE 42.3

Grid Autosport ist ein zwar älteres, aber immer noch exzellentes Rennspiel das zwar kein definitiv Arcaderacer ist, einen aber auch nicht mit einem Hardcoresimulationsanspruch erschlägt. Ähnlich wie Gran Tourismo findet es einen exzellenten Mittelweg und ist, im Gegensatz zu diesem, auch auf Linux spielbar. Es eignet sich somit also auch für ein kurzes Rennen in der Mittagspause, was nicht heißt, dass man keine Stunden darin versenken kann. Leider lässt es sich unter openSUSE 42.3 aber nachdem man es per Steam heruntergeladen hat nicht direkt starten.

Der Startbildschirm von Grid Autosport auf openSUSE

Das Problem

Nach dem Start rödelt der rechner kurz, es kommt aber kein Spielfenster hoch. Startet man Steam aus einer Konsole, so erscheint dort beim Versuch das Spiel zu starten folgendes:

>>> Adding process 17089 for game ID 255220
>>> Adding process 17089 for game ID 255220Installing breakpad exception handler for appid(steam)/version(1506500000)
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: /home/marix/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libssl.so.1.0.0: no version information available (required by /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport)
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: /home/marix/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: no version information available (required by /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport)
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: /home/marix/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libssl.so.1.0.0: no version information available (required by /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/../lib/x86_64/libcurl.so.4)
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: /home/marix/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libssl.so.1.0.0: no version information available (required by /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/../lib/x86_64/libcurl.so.4)
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: /home/marix/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: no version information available (required by /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/../lib/x86_64/libcurl.so.4)
>>> Adding process 17090 for game ID 255220
/ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/GridAutosport: relocation error: /ephemeral/steam/marix/steamapps/common/GRID Autosport/bin/../lib/x86_64/libcurl.so.4: symbol ENGINE_load_builtin_engines, version OPENSSL_1.0.0 not defined in file libcrypto.so.1.0.0 with link time reference
Game removed: AppID 255220 "GRID Autosport", ProcID 17086

Hier liegt also eine Inkompatibilität zwischen der vom Spiel mitgebrachten Curl-Bibliothek und den von Steam mitgebrachten Bibliotheken SSL und Crypto vor.

Die Lösung aus dem Netz

Beim Googeln findet sich schnell eine Lösung welche vorschlägt libcrypto.so.1.0.0 aus der Steam-Runtime entfernen. Dies löst auch das Problem mit Grid Autosport. Allerdings hat diese Lösung auch Nachteile. Da die Steam-Runtime modifiziert wird ist damit zu rechnen, dass das nächste Steam-Update die Dateien wiederherstellt und man die Datei erneut entfernen muss. Außerdem kann es damit zu Problemen in anderen Spielen kommen welche sich auf die von Steam mitgelieferte Version verlasen.

Die bessere Lösung

Die obige Lösung weißt aber bereits den Weg zu einer besseren Lösung, denn sie funktioniert deshalb, weil openSUSE bereits kompatible Versionen der beiden Bibliotheken enthält. Tatsächlich betrifft dieses Problem einige Spiele welche von Feral Interactive portiert wurden. So ist auch Dirt Rally von diesem Problem betroffen. Für dieses Spiel findet sich eine Lösung welche sich Analog auch auf Grid Autosport anwenden lässt:

  1. Ins Spielverzeichnis wechseln: cd <steam library>/steamapps/common/Grid\ Autosport/lib/x86_64.
  2. Dort auf die libcrypto des Systems linken:
    > ln -s /lib64/libcrypto.so.1.0.0
    > ln -s /lib64/libssl.so.1.0.0
    

Diese Lösung ist besser, weil sie nur das einzelne Spiel betrifft und nicht global die Steam-Runtime beschädigt. Sie hat allerdings den Nachteil, dass sie kaputt gehen kann falls Steam mal die Dateien anfasst, z.B. bei einem Update. Updates von Grid Autosport sind aber deutlich seltener als solche von Steam selbst, und auf meinem System hat der Fix auch schon einige Patches überlebt.

Tue, Apr 24, 2018

Zwei neue Pakete für openSUSE

openSUSE Tumbleweed enthält jetzt zwei neue Pakete welche ich erstellt habe: python-emoji und python-ntfy. Ersteres hat es sogar noch in openSUSE Leap 15.0 geschafft.

Die Funktionalität von python-emoji ist schnell erklärt und trotzdem unglaublich nützlich, wie diese leichte Abwandlung des Beispiels aus der Paketbeschreibung auf PyPI zeigt:

>> import emoji
>> print(emoji.emojize('Python ist :thumbs_up:'))
Python ist 👍

Natürlich funktioniert dies sowohl in modernem Python als auch in klassischem Python.

Eines der Pakete welche von python-emoji profitieren ist python-ntfy. python-ntfy ermöglichte es aus der Konsole Benachritigungen zu verschicken. Diese können entweder auf der Arbeitsfläche angezeigt werden, oder über verschiedene Backends an ein Smartphone weitergeleitet werden. Allerdings sind momentan noch nicht Backends auch für openSUSE paketiert. Besonders praktisch ist der Befehl ntfy done. Nutzt man diesen um einen lange laufenden Prozess zu starten, so bekommt man, sobald dieser fertig ist, eine Nachricht welche auch über Erfolg oder Misserfolg und die Laufzeit des Prozesses informiert. Man kann sich also ganz gemütlich in die Hängematte legen während der Rechner ackert. 😉