Forcing upstream for core package in KDE Neon (pipewire)

I think I know the answer to this question (no. go away), but I will ask anyway. I have a lab of computers to update prior to January. These machines run the latest version of KDE Neon. They also require a working pipewire installation for music production. The current version available (from Ubuntu 22.04) is 0.3.48 which is massively out of date and has fatal bugs to our workflow. Is there any way to update the pipewire technosystem without hosing everything else? I have tried using the debian/pipewire-upstream which seemed hopeful, but eventually, after potentially removing the old pipewire packages, it starts to break core KDE dependencies for applications like kwin. Any and all ideas welcome. Thanks in advance.

Perhaps give TUXEDO OS a try (https://os.tuxedocomputers.com/)?
It is quite similar to KDE neon, but uses pipewire version 1.0.0-1tux1 for example.

I am currently using the Debian/pipewire-upstream PPA here, and have been for some time. I needed to use OBS and screen recording under Wayland, so I needed this plus wireplumber. I have had zero issues, though I have not needed to attempt to remove any packages.

What were you attempting to remove? I don’t immediately see any pipewire packages on my system that aren’t from the PPA, and are all at the 1.0.0 version.

KDE neon uses the 22.04 LTS core, and don’t touch anything beyond the desktop side of things, so an upgrade here is well out of their scope, unless it becomes more of a mandatory component for Plasma.

This is probably worth communicating to the Neon team. PipeWire is quite important for Plasma and KWin (and Spectacle, and KRDC, and…) so it may be worth it for Neon to upgrade if the new version is a drop-in replacement and can be QAd properly.

So I get a cascading series of broken dependencies like the following:

 kwin-wayland : Depends: libpipewire-0.3-0 (>= 0.3.1) but it is not going to be installed
 libkpipewire5 : Depends: libpipewire-0.3-0 (>= 0.3.1) but it is not going to be installed
 libwireplumber-0.4-0 : Depends: libpipewire-0.3-0 (>= 0.3.45) but it is not going to be installed
 pipewire : Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu3) but it is not going to be installed
 pipewire-bin : Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu3) but it is not going to be installed
                Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but it is not going to be installed
 pipewire-tests : Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but it is not going to be installed
 wireplumber : Depends: libpipewire-0.3-0 (>= 0.3.45) but it is not going to be installed
 xdg-desktop-portal : Depends: libpipewire-0.3-0 (>= 0.3.10) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

I haven’t looked at this closely, but there are packages and, specifically, the pipewire meta package that have a number of dependencies for 0.3.48 versions. When attempting to obliterate all of pipewire to start fresh with the 1.0 versions, you start to see the desktop/Plasma environment get pulled down because there are pipewire dependencies for Kwin, for example.

Note that these are existing installs with existing configurations and not fresh installs. Maybe I start there and see what differences exist.

Can you recommend how to best do this? THe problems we see with old pipewire as reported to other, up-to-date applications (Ardour 8.1 for example) result in “that’s a known bug in older pipewire” kinds of messages back. Indeed, even 0.3.84 fixes some stuff and might be livable. But being that 1.0 just dropped, it would be really helpful to have everything that has been fixed in the intervening year.

I can ping @jriddell and @sitter who are the primary Neon devs.

1 Like

When doing what, exactly?
I am not seeing it here, and my setup is definitely not a fresh install, and I have done this more recently on my laptop as well.

Which is weird, since the meta-package wouldn’t depend on the old, existing Ubuntu versions:

$ apt policy pipewire
pipewire:
  Installed: 1.0.0-1~ubuntu22.04
  Candidate: 1.0.0-1~ubuntu22.04
  Version table:
 *** 1.0.0-1~ubuntu22.04 500
        500 https://ppa.launchpadcontent.net/pipewire-debian/pipewire-upstream/ubuntu jammy/main amd64 Packages
        100 /var/lib/dpkg/status
     0.3.48-1ubuntu3 500
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
     0.3.48-1ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages

I already poked them on Matrix, as well.

1 Like

It begins by running pkcon update to install the new pipewire packages available through the repo. The error returned is this:

Fatal error: Error while installing package: trying to overwrite '/usr/share/man/man1/pipewire-pulse.1.gz', which is also in package pipewire-pulse 0.3.48-1ubuntu3

Then I try to manually remove that file and it fails (for obvious reasons) and attempts to remove pipewire-pulse starts the cascading dependency problem.

Normally, I might suggest using dpkg to ‘force’ it to overwrite that file - a manpage entry for the command. But with the mix of old and new stuff, it probably won’t fix the overall issue, at least not without seeing more information.

Use apt to get better error messaging here. Pkcon isn’t showing the name/version of the specific package that wants to overwrite the file.

sudo apt update 
sudo apt full-upgrade

Also, if this is an older install, look in /etc/apt/preferences.d/ and see if you have any apt preferences files that begin with “98”. I have seen a few instances of these older files not getting removed when the newer “99” version was added. This causes weird dependency issues.

Thanks for the ideas and your ongoing help. When I try the update/upgrade with apt I get the following output.

$ sudo apt full-upgrade 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 pipewire : Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is installed
 pipewire-audio-client-libraries : Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is installed
 pipewire-bin : Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is installed
                Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is installed
 pipewire-tests : Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

My apt preferences.d folder looks like this:

nodenoise@nodelap:/etc/apt/preferences.d$ ls
50-neon-ubuntu-release-upgrader  99-neon-base-files           99-pulseaudio-qt
99-jammy-overrides               99-neon-software-properties  org-kde-neon-net-launchpad-ppa-mozillateam-pin

When I run apt policy pipewire I get:

~$ apt policy pipewire
pipewire:
  Installed: 0.3.48-1ubuntu3
  Candidate: 1.0.0-1~ubuntu22.04
  Version table:
     1.0.0-1~ubuntu22.04 500
        500 https://ppa.launchpadcontent.net/pipewire-debian/pipewire-upstream/ubuntu jammy/main amd64 Packages
 *** 0.3.48-1ubuntu3 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     0.3.48-1ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

I wish I grokked this better. That pipewire meta-package is acting a fool here.
What does running the suggested apt --fix-broken install show?

Maybe trying to just install the new meta-package by itself, since all the others are already updated to 1.0.0?
sudo apt install pipewire=1.0.0-1~ubuntu22.04

All result in the same error(s) and/or dependency Hell cycle.

$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies...Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
 Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following packages were automatically installed and are no longer required:
  acl colord-data gimp-data gstreamer1.0-plugins-base:i386 gutenprint-locales hplip-data i965-va-driver:i386
  intel-media-va-driver:i386 lib2geom1.1.0 libapparmor1:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libbabl-0.1-0
  libcdparanoia0:i386 libcdr-0.1-1 libcolorhug2 libcups2:i386 libcurl3-gnutls:i386 libcurl4:i386 libdatrie1:i386
  libdbus-1-3:i386 libdecor-0-0:i386 libdecor-0-plugin-1-cairo:i386 libdw1:i386 libexif12:i386 libflac8:i386
  libfribidi0:i386 libgbm1:i386 libgd3:i386 libgdbm-compat4:i386 libgdbm6:i386 libgegl-common libglu1-mesa:i386
  libgnutls30:i386 libgphoto2-6:i386 libgphoto2-port12:i386 libgraphite2-3:i386 libgspell-1-2 libgspell-1-common
  libgstreamer-plugins-base1.0-0:i386 libgstreamer1.0-0:i386 libgutenprint-common libgutenprint9
  libgutenprintui2-2 libharfbuzz0b:i386 libhogweed6:i386 libhpmud0 libieee1284-3:i386 libigdgmm12:i386
  libimage-magick-perl libimage-magick-q16-perl libjack-jackd2-0:i386 libldap-2.5-0:i386 libltdl7:i386 liblua5.1-0
  libmypaint-1.5-1 libmypaint-common libnettle8:i386 libnghttp2-14:i386 libodbc1:i386 libodbc2:i386
  libodbccr2:i386 libogg0:i386 libopengl0:i386 libopus0:i386 liborc-0.4-0:i386 libosmesa6 libosmesa6:i386
  libp11-kit0:i386 libpango-1.0-0:i386 libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpcap0.8:i386
  libpci3:i386 libpcsclite1:i386 libperl5.34:i386 libpotrace0 libpsl5:i386 libpulse0:i386 librevenge-0.0-0
  librtmp1:i386 libsamplerate0:i386 libsane-common libsane-hpaio libsane1:i386 libsasl2-2:i386
  libsasl2-modules:i386 libsasl2-modules-db:i386 libsdl2-2.0-0:i386 libsndfile1:i386 libsnmp-base libsnmp40
  libsnmp40:i386 libssh-4:i386 libtasn1-6:i386 libthai0:i386 libtheora0:i386 libtiff-tools libunwind8:i386
  libusb-1.0-0:i386 libv4l-0:i386 libv4lconvert0:i386 libva-drm2:i386 libva-x11-2:i386 libva2:i386 libvisio-0.1-1
  libvisual-0.4-0:i386 libvorbis0a:i386 libvorbisenc2:i386 libwayland-client0:i386 libwayland-cursor0:i386
  libwayland-egl1:i386 libwayland-server0:i386 libwpd-0.10-10 libwpg-0.3-3 libwrap0:i386 libxcomposite1:i386
  libxcursor1:i386 libxi6:i386 libxinerama1:i386 libxkbcommon0:i386 libxpm4:i386 libxrandr2:i386 libxss1:i386
  mesa-va-drivers:i386 ocl-icd-libopencl1:i386 pipewire-alsa pipewire-audio-client-libraries pipewire-jack
  printer-driver-hpcups printer-driver-postscript-hp va-driver-all:i386 wine-staging-i386:i386
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  pipewire pipewire-alsa pipewire-audio-client-libraries pipewire-bin pipewire-jack pipewire-pulse pipewire-tests
Suggested packages:
  pipewire-locales
The following NEW packages will be installed:
  pipewire-alsa pipewire-jack
The following packages will be upgraded:
  pipewire pipewire-audio-client-libraries pipewire-bin pipewire-pulse pipewire-tests
5 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
7 not fully installed or removed.
Need to get 0 B/1,032 kB of archives.
After this operation, 1,038 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
(Reading database ... 602844 files and directories currently installed.)
Preparing to unpack .../pipewire-bin_1.0.0-1~ubuntu22.04_amd64.deb ...
Unpacking pipewire-bin (1.0.0-1~ubuntu22.04) over (0.3.48-1ubuntu3) ...
dpkg: error processing archive /var/cache/apt/archives/pipewire-bin_1.0.0-1~ubuntu22.04_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/pipewire-pulse.1.gz', which is also in package pipewire-pulse 0.3.48-1ubuntu3
Errors were encountered while processing:
 /var/cache/apt/archives/pipewire-bin_1.0.0-1~ubuntu22.04_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Here’s the output for the direct attempt:

$ sudo apt install pipewire=1.0.0-1~ubuntu22.04
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 pipewire : Depends: pipewire-bin (= 1.0.0-1~ubuntu22.04)
 pipewire-audio-client-libraries : Depends: pipewire (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
                                   Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
 pipewire-bin : Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
                Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
 pipewire-pulse : Depends: pipewire (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
 pipewire-tests : Depends: pipewire (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
                  Depends: libpipewire-0.3-0 (= 0.3.48-1ubuntu3) but 1.0.0-1~ubuntu22.04 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

The 32-bit removals being proposed adds to the confusion, but might also point to a reason - a dependency of a dependency, plus a few layers, has a 32-bit that isn’t provided. Which prevents the 64 bit from being installed, since both archs need to be at the same version. I sure don’t have any of those packages installed, but I also don’t use a system-installed Wine, which avoids this sort of thing. Steam, or Flatpaks for Lutris, Bottles and/or plain Wine.

Ok. If you are willing, you can try forcing the new pipewire-bin package to overwrite the manpage file. This would be essentially harmless, as you would want the more updated manual to begin with. Having the updated pipewire-bin package installed might clear out the logjam.

So: sudo dpkg -i --force-overwrite /var/cache/apt/archives/pipewire-bin_1.0.0-1~ubuntu22.04_amd64.deb

But really, you might test on a more recent install or virtual machine, or one without Wine. I suspect this may be the ultimate hangup here. Forcing the package may work, but it may also just reveal more things to be fixed, until we get to the bottom of the dependency tree and potentially the offending 32-bit low level dependency.

At this point, I had nothing to lose so…

Forced the install, then ran apt update and full-upgrade to install the remaining packages, which gave the same errors (barf), but decided to run --fix-broken install which, very much to my surprise actually completed. I was then able to check that the system has no other obvious problems and that audio actually works, which, again kind of to my surprise, does.

I really appreciate your help here. If anything, it gives me real hope for the fresh install systems.

Many thanks.

1 Like

Sweet! I am glad it was not the worst-case scenario!!

I hope this was just a random thing specific to your setup, I could not reproduce this in a VM here.

1 Like

pipewire-bin 1.0 has the pipewire-pulse manual but in 0.3.48 the manual is in the pipewire-pulse package. this makes apt wig out. forcing is the right thing to do and apt completes the install.
just tested on the latest neon-user docker image , added the debian-pipewire ppa and could upgrade pipewire to 1.0 without incident.

pretty confident that the ppa should serve your purposes, i’v been using it all year with no issues. it was the reason that plasma-pa neon-unstable was packaged to allow pipewire and wireplumber to provide pulseaudio compatability earlier this year.
@guss77 backported that to neon-user a couple of months back - allow full replacement of pulseaudio through pipewire-pulse (bdfd4dd4) · Commits · Neon / kde / plasma-pa · GitLab

3 Likes