Nachdem ich Euch gestern den Statusbericht geschrieben hatte, wollte ich mal mit Geary Emails lesen. Was fĂŒr eine fatale Entscheidung đ
Pinephone: How to Fix Geary’s Libsoup Problem
Was braucht man zum Lesen von Emails? Ein Emailprogramm! Also nehmen wir doch das seit zwei Jahren installierte, konfigurierte und funktionierende Geary … startet nicht … öhm ?!?!
Dem Journal seine Geheimnisse zu entreiĂen war auch nicht so einfach, weil Geary nicht als geary Unit logged, sondern als „geary-autostart.desktop[4159]“ wobei die Zahl die PID des Prozesses ist die, na wer rĂ€ts, flexibel ist. Hallo?!?! Er hat denn diesen Blödsinn jetzt wieder verzapft!
Kommen wir zum Problem
geary-autostart.desktop[4159]: ![err] 18:09:01.0248 libsoup:libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.
Wahnsinnsmeldung, aber tatsÀchlich zutreffend. Es gibt zwei Versionen von der LibSoup: 2.4 und 3.0.
1/3 aller Apps setzen noch auf 2.4, die anderen 2/3 setzen auf die Version 3.0 der Lib. Offensichtlich ist es nicht erlaubt, beide Versionen gleichzeitig in einem Programm zu benutzen, was ja auch Sinn macht, weil so ein App-Entwickler leicht mal den Ăberblick ĂŒber seine Ressourcen verliert und dann passieren ganz komische Dinge.
Es gibt es nur ein kleines Problem:
# ldd /usr/bin/geary | grep soup
libsoup-2.4.so.1 => /lib64/libsoup-2.4.so.1 (0x0000007f80910000)
… kleine Pause, damit sich die Info bei Euch setzen kann…
Ok, also Geary nutzt nur die 2.4, kann aber nicht sein, weil die Meldung sagt ja, daĂ beide Versionen gesichtet wurden. Da mĂŒssen wir wohl mal mit strace nachsehen, was da abgeht:
pine@fedorapine ~]$ strace -f geary 2>&1 | grep soup
openat(AT_FDCWD, „/lib64/libsoup-2.4.so.1„, O_RDONLY|O_CLOEXEC) = 3
[pid 5045] openat(AT_FDCWD, „/usr/lib64/evolution-data-server/libsoup-3.0.so.0“, O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
[pid 5045] openat(AT_FDCWD, „/lib64/libsoup-3.0.so.0„, O_RDONLY|O_CLOEXEC) = 21
[pid 5045] write(2, „![err] 18:13:40.0262 libsoup:lib“…, 121![err] 18:13:40.0262 libsoup:libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.) = 121
Wie der erfahrene Leser sofort sieht, sind hier zwei Prozesse beteiligt, der Hauptprozess ist Zeile 1, also Geary selbst:
openat(AT_FDCWD, „/lib64/libsoup-2.4.so.1„, O_RDONLY|O_CLOEXEC) = 3
ein Subprozess mit PID 5045 sind die anderen:
[pid 5045] openat(AT_FDCWD, „/usr/lib64/evolution-data-server/libsoup-3.0.so.0“, O_RDONLY|O_CLOEXEC) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
[pid 5045] openat(AT_FDCWD, „/lib64/libsoup-3.0.so.0„, O_RDONLY|O_CLOEXEC) = 21
[pid 5045] write(2, „![err] 18:13:40.0262 libsoup:lib“…, 121![err] 18:13:40.0262 libsoup:libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.) = 121
Jetzt ist eigentlich schon klar, daà Geary tatsÀchlich nur die 2.4 lÀdt, aber irgendeine Lib/App/Plugin das Nachgeladen wird, will die 3.0 laden.
Da stellt sich jetzt die Frage, wie man das rausbekommt, weil Geary schon 148 Libs lÀdt und was das an Plugins lÀdt, steht nur im Source drin und ist vermutlich auch hochgradig davon abhÀngig, was das jeweilige Plugin vorhat.
Langer Rede kurzer Sinn
Um das rauszubekommen, muĂte eine radikale Entscheidung her:
chmod 000 /lib64/libsoup-3.0.so.0.0.5
Eigentlich als NotmaĂnahme gedacht um zu sehen, ob Geary starten wĂŒrde, wenn man die Lib aus dem System entfernt, brachte das dann alles nötige ans Licht. Geary startet nĂ€mlich „normal“, aber eine als Adressbuch genutzte Komponente namens „folks“ , die wollte nicht mehr.
Das machte sich dann im Journal so bemerkbar:
Aug 17 18:55:01 fedorapine geary[5678]: *[wrn] 18:55:01.0337 folks:backend-store.vala:768: Failed to load module from path ‚/usr/lib64/folks/26/backends/eds/eds.so‘: libsoup-3.0.so.0: Kann die Shared-Object-Datei nicht öffnen: Keine Berechtigung
Aug 17 18:55:01 fedorapine geary[5678]: *[wrn] 18:55:01.0369 folks:backend-store.vala:768: Failed to load module from path ‚/usr/lib64/folks/26/backends/bluez/bluez.so‘: libsoup-3.0.so.0: Kann die Shared-Object-Datei nicht öffnen: Keine Berechtigung
Aug 17 18:55:01 fedorapine geary[5678]: *[wrn] 18:55:01.0377 folks:backend-store.vala:768: Failed to load module from path ‚/usr/lib64/folks/26/backends/ofono/ofono.so‘: libsoup-3.0.so.0: Kann die Shared-Object-Datei nicht öffnen: Keine Berechtigung
Aug 17 18:55:01 fedorapine geary[5678]: *[wrn] 18:55:01.0418 folks:Failed to find primary PersonaStore with type ID ‚eds‘ and ID ’system-address-book‘.
Aug 17 18:55:01 fedorapine geary[5678]: Individuals will not be linked properly and creating new links between Personas will not work.
Aug 17 18:55:01 fedorapine geary[5678]: The configured primary PersonaStore’s backend may not be installed. If you are unsure, check with your distribution.
Jetzt haben wir die Ursache fĂŒr das Problem gefunden, aber wie fixen wir das jetzt erstmal temporĂ€r, bis Geary auf LibSoup-3 umgestellt ist?
How to Fix … auf die ganz harte Tour
Wir brauchen…
einen Gearywrapper
die Hilfe von Sudo
und ein gutes GedÀchtnis,
weil das dĂŒrft Ihr nach jedem Geary oder LibSoup3 Update nochmal anpassen đ
SUDO
Wir tragen in die /etc/sudoers entweder direkt oder ĂŒber das sudoers.d Verzeichnis folgendes ein:
# cat /etc/sudoers | grep geary
@include /etc/sudoers.d/gearywrapper.conf
# cat /etc/sudoers.d/gearywrapper.conf
pine ALL = (root) NOPASSWD: /usr/bin/chmod
ACHTUNG: damit darf der Pineuser alle Files chmodden die er will, oder die ein Angreifer will, aber nie Àndern können sollte. Anders gehts aber erstmal nicht.
Der Geary-Wrapper
In die Datei /usr/local/sbin/gearywrapper muĂ das rein:
#!/bin/bash
sudo /usr/bin/chmod 000 /lib64/libsoup-3.0.so.0.0.5
geary –gapplication-service
sudo /usr/bin/chmod 755 /lib64/libsoup-3.0.so.0.0.5
dann chmod 755 /usr/local/sbin/gearywrapper ausfĂŒhren.
Das Geary-Desktopfile
Das File /usr/share/applications/geary-autostart.desktop muà so geÀndert werden:
#TryExec=geary
#Exec=geary –gapplication-service
Exec=/usr/local/sbin/gearywrapper
Das File /usr/share/applications/org.gnome.Geary.desktop kann so geÀndert werden, aber nicht alle EintrÀge sind wichtig, die ersten 2 reichen:
TryExec=/usr/local/sbin/gearywrapper
Exec=/usr/local/sbin/gearywrapper %U
Exec=/usr/local/sbin/gearywrapper mailto:
Exec=/usr/local/sbin/gearywrapper –new-window
Ab jetzt startet Geary aus dem AppGrid wieder \o/ nur das Adressbuch funktioniert nicht mehr ganz so umfangreich wie es sollte, aber zumindest kann man wieder Emails lesen und schreiben.
Update: 13:46 Uhr – fixed Geary 40.0-9 released
Fedora Maintainer Kalev Lember hat fĂŒr die Ă€lteren Versionen von Geary, und natĂŒrlich die Rawhideversion, einen Upstreampatch in den Fedora Build integriert und mit dem Paket ab Version 40.0-9, ist der Fehler behoben und Geary startet auch mit dem aktuellen folks und Evolution Unterbau. Auf den obigen Workaround hingewiesen, entfleuchte Kalev der folgende Kommentar: „Hah, fun hack đ“ . Es war zwar echt nervig das Problem zu isolieren, aber der Workaround war wirklich spaĂig đ