Mixxx and bug in old libportaudio2

Hallo,

ich möchte die DJ-Software “Mixxx” unter SUSE leap 15.2 nutzen.
Dazu habe ich den Quellcode gemäß Anleitung von https://mixxx.org aus git abgerufen und die Anwendung selbst gebaut.
Alternativ habe ich die Anwendung auch einmal als Community-Paket installiert.

In beiden Fällen läuft das Programm, es kommt jedoch alle paar Minuten zu Abstürzen auf Grund einer verletzten Zusicherung in der Bibliothek “portaudio” (libportaudio2). Der Bug in portaudio ist bekannt und längst gefixt, SUSE leap 15.2 nutzt aber einen Versionsstand von portaudio aus dem Jahr 2016.

Was kann ich tun?

  • Für mich wäre es am einfachsten, wenn in SUSE leap ganz offiziell eine aktuelle Version von portaudio bereitgestellt werden würde. Kann ich da irgendwo einen Request stellen? Wer macht das? SUSE (Community) oder die Entwickler der Library?
  • Kann ich die von SUSE bereitgestellte Library ersetzen durch einen lokalen Build einer aktuellen Version von portaudio?

Kannst du mal den Link zu dem Patch posten?

Hier mal aktuelle Builds:

PS:
Dies sind zwar die aktuellesten stabilen Sourcen, aber das nächstjüngere stabile wären die Sourcen aus openSUSE…

Was kann ich tun?

Bugreport schreiben…

Das ist der Bug den ich meine:
https://github.com/PortAudio/portaudio/issues/268

Und das der Pull-Request mit dem Fix:
https://github.com/PortAudio/portaudio/pull/344

Der von Sauerland verlinkte Build sieht gut aus. Version v190700_20210406

Wie kann ich diese Version installieren?
Yast und zypper bieten mir nur die 190600_20161030 an…

sudo zypper search -s libportaudio
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S | Name                | Type  | Version                   | Arch   | Repository
--+---------------------+-------+---------------------------+--------+---------------------
i | libportaudio2       | Paket | 190600_20161030-lp152.3.6 | x86_64 | Main Repository
i | libportaudio2       | Paket | 190600_20161030-lp152.3.6 | x86_64 | openSUSE-Leap-15.2-1
  | libportaudio2-32bit | Paket | 190600_20161030-lp152.3.6 | x86_64 | Main Repository
i | libportaudiocpp0    | Paket | 190600_20161030-lp152.3.6 | x86_64 | Main Repository

Wie kann ich diese Version installieren?
Yast und zypper bieten mir nur die 190600_20161030 an…

Gott sei Dank sind nicht alle Repos in openSUSE aktiv…

Möglichkeit 1:
src.rpm herunterladen und daraus die entsprechenden libs bauen und diese installieren.
Hat den Vorteil, das man das src.rpm auch unter Leap 15.3 zum bauen benutzen kann.
https://download.opensuse.org/repositories/home:/Sauerland/openSUSE_Leap_15.2/src/portaudio-190700_20210406-lp152.4.1.src.rpm

Möglickeit 2:
Diese rpms herunterladen und installieren:
https://download.opensuse.org/repositories/home:/Sauerland/openSUSE_Leap_15.2/x86_64/libportaudio2-190700_20210406-lp152.4.1.x86_64.rpm
https://download.opensuse.org/repositories/home:/Sauerland/openSUSE_Leap_15.2/x86_64/libportaudiocpp0-190700_20210406-lp152.4.1.x86_64.rpm

Ich habe mal “Möglichkeit 2” benutzt, da ich nicht weiß wie ich “Möglichkeit 1” verwenden muss…

Aber WOW!
Mixxx läuft jetzt stabil! Ich will den Tag nicht vor dem Abend loben, aber zumindest hätte es in der Zeit schon zig mal abstürzen müssen.
Sowohl mein selbstgebautes Mixxx als auch das aus einem Community-Paket installierte laufen nach der Aktualisierung von portaudio.

Ich habe mir noch das zugehörige portaudio-devel von home:Sauerland installiert und werde Mixxx in den nächsten Tagen nochmal bauen um zu sehen was passiert.

Vielen Dank!!!

Frage:
Wie hätte ich bei Möglichkeit 1 vorgehen müssen? Mit welchen Kommandos baue ich das? Was sind die Artefakte? rpm-files “ohne .src.”? Und wo werden die abgelegt? Hab was von /usr/src/… gelesen, aber da hätte ich es jetzt nicht erwartet.

Alles als User:

rpm-build-Umgebung aufsetzen, nur die 2 Schritte aus “Development Umgebung aufsetzen”:
https://dokuwiki.nausch.org/doku.php/centos:rpmbuild
Den 1. Schritt überspringen, dafür in Yast die Schemata (pattern)
Development----rpm-Bauumgebung sowie grundlegende Entwicklungsumgebeung installieren.

Signieren ist auch nicht unbedingt notwendig, dann meckert nur zypper, kann man aber trotzdem installieren.

src.rpm (nicht devel) herunterladen und in ~/rpmbuild/SRPMS speichern.
In das Verzeichnis ~/rpmbuild/SRPMS mit dem Dateimanager wechseln und dort ein Terminal öffnen:
In Dolphin: Extras----Terminal öffnen
in Krusader: Extras----Terminal im aktuellen Ordner starten

Im Terminal eingeben:

rpmbuild --rebuild XXXXXX.src.rpm

Falls irgendwelche Fehler wegen Abghängigkeiten auftauchen, es sind meist die entsprechenden -devel Pakete, diese nachinstallieren und wieder den Befehl absetzen.

Falls rpmbuild erfolgreich durchläuft, liegen die fertig installierbaren rpms in ~/rpmbuild/RPMS.
Dies Verzeichnis einfach als Installationsverzeichnis in Yast----Reposityverwaltung einfügen und schon kann man selbstgebaute rpms per zypper/Yast installieren.

Wichtig:
alle Schritte als User ausführen, nur für die Installation des fertigen rpms braucht es root Rechte.