ubuntuusers.de

Ein Ubuntu-Programm mit einem kleinen Patch neu compilieren?

Status: Gelöst | Ubuntu-Version: Xubuntu 15.10 (Wily Werewolf)
Antworten |

Reinarden

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

Servus liebe Ubuntu-Mitstreiter,

Seit die an sich prima Ubuntu-Version 15.10 herauskam, hat der Thunar-Dateiverwalter (Version 1.6.10) einen sehr lästigen Fehler, der ihn ständig bei Kopier-, Verschiebe- und Umbenennen-Operationen zum Absturz bringt. Das haben wir schon ausführlich im eigenen Thema besprochen und sowohl Ubuntus Launchpad als auch die XFCE-Seite kennt den Fehler: https://forum.ubuntuusers.de/topic/thunar-stuerzt-staendig-ab-in-xubuntu-15-10/

Wie ich nun auf der XFCE-Fehlerliste sah, hat ein österreichischer Programmierer dieses Jahr schon einen kleinen Patch (nur ein Dutzend Code-Zeilen lang) für dieses Problem in der XFCE-Fehlerliste veröffentlicht: https://bugzilla.xfce.org/show_bug.cgi?id=12264#c14

Manche Linux-Distribution (wie Arch-Linux) haben diese minimal aktualisierte Thunar-Version auch schon ausgeliefert, aber Ubuntu leider nicht, und selbst die neue 16.04-Version von Ubuntu macht es leider noch nicht (bei dieser Thunar 1.6.10-2 vom Spätherbst 2015 fehlt diese Fehlerbereinigung noch, und ich vermute, es gibt noch kein offizielles Thunar-Paket 1.6.10-3, wo der Pätsch enthalten wäre): http://packages.ubuntu.com/xenial/thunar

Gibt es eine Anleitung für einen „C-Compilierung unter Linux“-Anfänger, den Quellcode eines bestehenden Ubuntu-Programmes (Thunar in dem Fall) mit einem kleinen Pätsch zu versehen und neu zu compilieren?

Es müßte nicht einmal ein komplettes Debian-Paket zum Installieren werden, sondern die neue "thunar"-Binärdatei könnte ich nach /opt schieben und dann diese Binärdatei als „Bevorzugte Anwendung“ im Einstellungs-Zentrum eintragen. Denn die paar restlichen, von Thunar benötigten Dateien sind ja schon im System.

Deswegen möchte ich für das Problem hier eine allgemeine Frage aufmachen, und nicht nur den Thunar betreffend. (Aber es stört auch nicht, wenn das jemand machen würde). Danke schon im Voraus für Eure Mühen!

Moderiert von tomtomtom:

Ins passende Forum verschoben.

atze

Anmeldungsdatum:
11. März 2010

Beiträge: 83

Ich konnte auf die Schnelle das hier finden: https://help.ubuntu.com/community/UpdatingADeb

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hi.

Das geht recht einfach:

sudo apt-get build-dep PAKET
sudo apt-get source PAKET

apt/apt-get

Dann halt ins Verzeichnis wechseln, Patch anwenden und kompilieren/installieren: Programme kompilieren (Abschnitt „dreisatz“)

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11228

Wohnort: München

Eigentlich ist das nicht schwer: Zum Einspielen des Patch legt man sich am besten eine ~/.quiltrc mit diesem Inhalt an (vgl. https://wiki.debian.org/UsingQuilt#Encapsulated):

d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
        # if in Debian packaging tree with unset $QUILT_PATCHES
        QUILT_PATCHES="debian/patches"
        QUILT_PATCH_OPTS="--reject-format=unified"
        QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
        QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
        QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
        if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
fi

Dann holen wir uns die Bau-Abhängigkeiten für thunar:

sudo apt-get install devscripts quilt build-essential
sudo apt-get build-dep thunar

und den gewüschten Patch (laut Bugtracker löst der das Problem nicht vollständig, aber zu Demonstrationszwecken nehmen wir den mal) und wenden ihn auf den Sourcen an:

mkdir ~/src # oder ein anderes beliebiges Verzeichnis
cd ~/src
wget "http://bug-attachment.xfce.org/attachment.cgi?id=6530" -O 0001-Deactivate-SEND_MOVED-code-paths.patch
apt-get source thunar
cd tunar-1.6.10
quilt import ../0001-Deactivate-SEND_MOVED-code-paths.patch
quilt push -a

Und dann bauen wir das Paket neu:

dch -l local "local rebuild with 0001-Deactivate-SEND_MOVED-code-paths.patch"
dpkg-buildpackage -b -us -uc

Die fertigen Pakete liegen dann im übergeordneten Verzeichnis und können installiert werden:

sudo dpkg -i ../*local*.deb

Reinarden

(Themenstarter)

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

Ich danke Euch für die prompten Lösungsvorschläge, die ich gerne bei nächstbester Gelegenheit ausprobieren werde. Bei Erfolg – oder Mißerfolg – melde ich mich dann wieder. ☺ Einen guten Arbeitstag allen, wünsche ich.

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 712

Wohnort: Hamburg

ich bin von dem Problem auch betroffen - am meisten crasht es, wenn ich Filme (Dateien > 4 GB) ausschneide und in einem anderen Ordner auf der gleichen Partition wieder einfüge. Ob das nun mit dem aktuellen bug etwas zu tun hat oder ein noch älterer (ebenfalls unbehobener) Bug ist, ist wohl nicht ganz sicher. Auch Harald Judt schreibt "I believe the drag & drop issue you describe here has been there for a long time. I am not sure it has anything to do with this bug." Allerdings ist drag & drop m.E. nicht das gleiche wie cut & paste, da bei ersterem m.E. nur kopiert wird (?)

Es gibt von ihm in dem Thread auch einen neueren Patch (Check-if-a-thunar-file-is-still-valid-before-reloading.patch). Er schreibt "Deactivating SEND_MOVED code paths didn't help completely, thunar was still crashing on renaming sometimes (more often than not). Alternative workaround. Does fix all? crashes on my system - I hope this isn't simply coincidence because of my lack of time for looking into this and testing -, but apparently some update problems remain when moving lots of files."

Nach meinem Verständnis ("Alternative") ersetzt dieser den ursprünglichen Patch.

Ich habe thunar mit dem neuen patch neu gebaut und zumindest beim ersten Test crasht es nicht gleich beim Kopieren.

Ich habe die Datei mal beigefügt. Sie ist für Xubuntu 15.10 und die Architektur AMD64, also die 64-bit-Version, was wohl die meisten benutzen. Die Datei thunar muss mit root-Rechten in /usr/bin abgelegt werden und ersetzt die vorhandene Datei. Ich hatte die vorhandene Datei dort zunächst umbenannt in thunar.orig, musste dann aber feststellen, dass der Dateimanager, der in 'Bevorzugte Anwendungen# eingestellt war, dann auf diese alte thunar.orig zeigte. Deshalb habe ich die alte Datei in /usr/bin ganz entfernt und sicherheitshalber auch einen reboot gemacht, falls thunar noch im RAM war.

Nachtrag: Bei mir wird der Anhang als 8172653-thunar runtergeladen. Die Datei muss noch in thunar umbenannt werden, root zugeordnet und auch als ausführbar gekennzeichnet werden:

sudo chown root:root 8172653-thunar
sudo mv 8172653-thunar thunar
sudo chmod a+x thunar

wenn man ein Debian-Paket baut, so wie seahawk1986 vorgeschlagen hat, besteht das problem, dass dieses sich dann wegen nicht erfüllter Abhängigkeiten nicht installieren lässt:

thunar hängt ab von thunar-data (= 1.6.10-1local1); aber:
  Version von thunar-data auf dem System ist 1.6.10-1.

thunar-data auch neu zu bauen, hatte ich keine Lust, wer weiss, wovan das dann wieder abhängt. Vermutlich würde sich das Problem auch lösen lassen, wenn man vorher auf den "dch -l local"-Befehl verzichtet.

thunar (763.9 KiB)
/usr/bin/thunar für amd64 mit integriertem Check-if-a-thunar-file-is-still-valid-before-reloading.patch
Download thunar

Reinarden

(Themenstarter)

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

Danke DoktorSeltsam für Deine Mühen. Werde Dein Compilat gerne mal testen (denn bisher schreckte ich zurück, so eine Compilation selber zu machen). Auch unter 16.04 läuft es bisher und nach einigen Schnelltests noch ohne Absturz. Werde in ein paar Tagen einen Status zurückmelden.

Man muß übrigens das Compilat nicht über die alte Thunar-Systemdatei schreiben, sondern kann die Compilats-Datei an einen geeigneten Ort stellen, dann im Xubuntu-Einstellungsverwalter das Symbol „Bevorzugte Anwendungen“ starten und dort als „Werkzeuge → Dateiverwaltung“ die Datei auswählen. Dann kommt das Compilat zum Zug, wann immer Xubuntu einen Dateiverwalter öffnet.

Reinarden

(Themenstarter)

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

DoktorSeltam, Dein Thunar-Compilar funktioniert hier (unter Xubuntu 16 beta) gut: an vielen Stellen in (verwiesenen) Ordnern, wo ich den original Thunar durch einfaches Datei-Verschieben reproduzierbar und garantiert zum Abstruz bringen kann, funktioniert das Compilat einwandfrei.

Welche Schritte hast Du denn nun im einzelnen vorgenommen zum Erstellen dieser Thunar-Datei? Besonders interessant wäre der URL auf den Pätsch von Harald Judt und auf welchen Quellcode Du ihn dann wie angewandt hast.

Und wie kriegen wir nun die Xubuntu-Entwickler dazu, diesen Pätsch ebenfalls in Ubuntu 16 aufzunehmen? Denn ansonsten liefern sie eine defekte Ubuntu 16 Langzeit-Version aus, weil der Thunar darin ständig abstürzt.

–-

P.S. Diese Frage kopiere ich auch noch in das andere Thema, wo das Thunar-Problem generell und ohne Paketerstellungs-Einzelheiten besprochen wurde: Thunar-Abstürze machen Xubuntu 15.10 unbenutzbar

P.P.S. Zu meinem Absatz vom Samstag über die „Bevorzugte Anwendungen“: das gilt für den Doppelklick auf das Thunar-Symbol im Schreibtisch und ähnliche Aktionen; doch wenn man die Sitzungsverwaltung so eingestellt hat, daß alle Prozesse bei der nächsten Sitzung wieder geladen werden, dann nimmt Xubuntu bei einer neuen Sitzung erst einmal den /usr/bin/thunar und nicht die „Bevorzugte Anwendung“, wo in unserem Fall z.B. DoktorSeltsams Thunar-Compilat eingestellt ist.

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

Reinarden schrieb:

Und wie kriegen wir nun die Xubuntu-Entwickler dazu, diesen Pätsch ebenfalls in Ubuntu 16 aufzunehmen? Denn ansonsten liefern sie eine defekte Ubuntu 16 Langzeit-Version aus, weil der Thunar darin ständig abstürzt.

Nur zu Deiner Beruhigung: Die LTS wird erst mit der ersten Pointrelease upgegraded, und ich gehe davon aus, dass der Patch bis dahin Einzug gefunden hat. Davon abgesehen ist es natürlich trotzdem sinnvoll, wenn die Entwickler das möglichst früh mit aufnehmen.

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 712

Wohnort: Hamburg

lionlizard schrieb:

Nur zu Deiner Beruhigung: Die LTS wird erst mit der ersten Pointrelease upgegraded, und ich gehe davon aus, dass der Patch bis dahin Einzug gefunden hat. Davon abgesehen ist es natürlich trotzdem sinnvoll, wenn die Entwickler das möglichst früh mit aufnehmen.

Die Einschätzung teile ich nicht. Der Patch ist bisher nur als Idee in einer Diskussion im Bugtracker gepostet worden und nicht ins xfce-git eingeflossen. Ich befürchte, das selbst das nicht reichen würde,solange xfce nicht eine neue stable Zwischenversion veröffentlicht.

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 712

Wohnort: Hamburg

Reinarden schrieb:

Welche Schritte hast Du denn nun im einzelnen vorgenommen zum Erstellen dieser Thunar-Datei? Besonders interessant wäre der URL auf den Pätsch von Harald Judt und auf welchen Quellcode Du ihn dann wie angewandt hast.

Im Prinzip bin ich so vorgegangen wie von seahawk beschrieben, nur dass ich den Patch händisch per Editor eingebaut habe. Er ist sehr simpel und wurde an gleicher Stelle wie der von Dir erwähnte erste Patch etwas später im Februar gepostet.

Und wie kriegen wir nun die Xubuntu-Entwickler dazu, diesen Pätsch ebenfalls in Ubuntu 16 aufzunehmen? Denn ansonsten liefern sie eine defekte Ubuntu 16 Langzeit-Version aus, weil der Thunar darin ständig abstürzt.

Harald müsste zumindest den Patch im xfce-git einpflegen. Das kann er, denn er ist scheinbar auch der einzige aktive Entwickler dort für thunar. Die Frage ist, ob er das will, denn er scheint das eigentliche Problem in der glibc zu sehen. Es ist für eine LTE aber eigentlichen unüblich, nicht breit getestete Patches zu übernehmen Ich sehe das eigentliche Problem darin, dass xfce den Bug monatelang mehr oder weniger ignoriert hat.

Reinarden

(Themenstarter)

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

Danke DoktorSeltsam für Deine Erklärungen und fürs Bereitstellen der behobenen Thunar-Binärdatei als Dateianhang. Vor einiger Zeit ersetze ich mittels sudo-Rechten meine „/usr/bin/thunar“-Datei mit Deiner Datei und seither läuft Thunar unter Xubuntu 16.04 absturzfrei.

(Den anderen Thunar-Fehler, den die Xubuntu-Mannschaft gestern bei der finalen 16.04-Version beschrieb, wo in gewissen Fällen beim Umbenennen eine Datei doppelt im Thunar erscheint – aber nicht in der Konsole –, tritt hier zwar noch auf, weil der Fehler offenbar mit dem Absturz-Fehler nicht viel gemeinsam hat. Aber mit einem manchmal doppelt sehenden Thunar kann ich vorerst leben.)

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 712

Wohnort: Hamburg

ich habe Harald Judt übrigens angemailt und vorgeschlagen, den letzten Patch (der in meinem Compilat enthalten ist) ins git einzuchecken. Leider Null Reaktion.

Ich werde jetzt mal schauen, ob ich rauskriege, welche Patches die Ubuntuentwickler in der 16.04. nun eigentlich eingebaut haben.

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 712

Wohnort: Hamburg

die folgenden Patches sind in thunar für 16.04 eingeflossen:

0001-Don-t-copy-templates-but-create-them-bug-8312.patch:

From: Nick Schermer <nick@xfce.org>
Date: Sat, 29 Sep 2012 15:50:16 +0200
Subject: [PATCH] Don't copy templates but create them (bug #8312).

Instead of copying templates, create new files and allow
to feed a template file. It is then easy with
g_output_stream_splice to feed the template data into
the new file.

This way the new file has the template data, but not
any of the attributes (timestamps etc).

01_support-non-multiarch-modules.patch:

From: Lionel Le Folgoc <lionel@lefolgoc.net>
Date: Tue, 11 Oct 2011 21:30:17 +0200
Subject: Look for plugins in {non-,}multiarch THUNARX_DIRECTORY

This will let a multiarch enabled libthunarx find plugins built against a
non-multiarch thunar (load plugins from both /usr/lib/$triplet and /usr/lib).

Die beiden vorstehenden Patches waren auch schon in 15.10 enthalten

02_Fix-crashes-when-reloading-target-file-after-move.patch

From: Harald Judt <h.judt@gmx.at>
Date: Thu, 2 Jul 2015 10:30:21 +0200
Subject: Fix crashes when reloading target file after move (bug #11983)

When moving a file, check the target file for NULL to avoid crashes
or assertions

.

03_Fixing-missing-return-value-in-standard-view.patch

From: Steve Dodier-Lazaro <sidnioulz@gmail.com>
Date: Mon, 30 Nov 2015 15:29:56 +0000
Subject: Fixing missing return value in standard view

Bei den beiden ersten (älteren) Patches kann ich nun nicht nachvollziehen, warum die nicht standardmäßig im xfce-git eingepflegt wurden, sondern offenbar noch Teil der eigenen Debian-Patches sind. Der letzte Patch vom 30.11.15 dürfte kosmetischer Natur sein und eine Compiler-Warnung fixen. Der Patch von Harald Judt aus Juli 2015 ist NICHT der offenbar entscheidende Patch, den er im Februar 2016 veröffentlicht hat:

From: Harald Judt <h.judt@gmx.at>
Date: Wed, 17 Feb 2016 17:47:38 +0100
Subject: Check if a thunar file is still valid before reloading

---
 thunar/thunar-file.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index 3262dfb..002c980 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -3920,7 +3920,9 @@ thunar_file_unwatch (ThunarFile *file)
 gboolean
 thunar_file_reload (ThunarFile *file)
 {
-  _thunar_return_if_fail (THUNAR_IS_FILE (file));
+  /* if the file has already been destroyed, break here */
+  if (!THUNAR_IS_FILE (file))
+      return FALSE;
 
   /* clear file pxmap cache */
   thunar_icon_factory_clear_pixmap_cache (file);
-- 

Hier herrscht das blanke Chaos. Es grasieren diverse Patches in diversen parallelen Bugreports, Keiner hat mehr den Überblick, was jetzt ein reiner Test, was ein zielführender Ansatz und was ein zuverlässiger Fix ist. Ich kann nicht verstehen, dass das xfce-Team hier nicht steuernd eingreift und -wenn der Entwickler keine Zeit hat- da jemand anders einspringt, der testet und sinnvolle Patches ins git übernimmt.

Reinarden

(Themenstarter)

Anmeldungsdatum:
29. September 2014

Beiträge: 1044

DoktorSeltsam schrieb:

Der Patch von Harald Judt aus Juli 2015 ist NICHT der offenbar entscheidende Patch, den er im Februar 2016 veröffentlicht hat.

Genau. Sein nebensächlicher Pätsch vom Juli 2015 ist nun in Xubuntu 16.04 LTS enthalten, während sein kriegsentscheidender Pätsch vom Februar 2016 nicht in Xubuntu 16.04 LTS enthalten ist und somit der Thunar ständig abstürzt.

Doch Haralds neuerer Februar-2016-Pätsch ist in Deiner oben angehängten Thunarversion enthalten, weswegen diese in Xubuntu 16.04 LTS hätte einfließen sollen. ☺

Hier herrscht das blanke Chaos. Es grasieren diverse Patches in diversen parallelen Bugreports, Keiner hat mehr den Überblick, was jetzt ein reiner Test, was ein zielführender Ansatz und was ein zuverlässiger Fix ist. Ich kann nicht verstehen, dass das xfce-Team hier nicht steuernd eingreift und -wenn der Entwickler keine Zeit hat- da jemand anders einspringt, der testet und sinnvolle Patches ins git übernimmt.

Traurig. Aber das erklärt, warum Thunar seit Ubuntu 15.10 kaputt ist. So einen Killer-Bug hat weder Xubuntu noch der hervorragende Thunar verdient.

Bitte an einen Moderator: könnten wir vielleicht dieses Thema hier in das bereits bestehende ältere Thema zum gleichen Problem einfügen? (Das ältere Thema heißt: Thunar-Abstürze machen Xubuntu 15.10 unbenutzbar und es könnte dann inzwischen leider heißen: „Thunar-Abstürze machen Xubuntu 15.10 und 16.04 unbenutzbar“)

Antworten |