[Bug 2036761] Re: [mantic] ppa-purge no longer purges what add-apt-repository adds
Ghadi Rahme
2036761 at bugs.launchpad.net
Mon Apr 8 09:25:27 UTC 2024
Hello Norbert, thank you for your testing and results.
This issue is caused by the fact that Ubuntu server and Ubuntu desktop use different types of awk. Ubuntu server uses gawk (GNU awk) by default while Ubuntu desktop ships with mawk which has less features than gawk and does not have support for the -i argument hence the error "awk: not an option: -i".
If your workflow depends on ppa-purge I recommend installing gawk (apt install gawk) and this will fix the issue temporarily while I get a permanent fix for ppa-purge.
side note: I am not sure why there is a difference in the default awk
installed/used between Ubuntu desktop and server maybe it is an
oversight and should be labeled as a bug? or maybe there is another
reason that someone could clarify? To my knowledge gawk is the default
version of awk on most linux distros and has all the features of mawk.
I will add gawk as a dependency to ppa-purge but I still believe that
someone should look into why different versions of awk are shipped
between server and desktop since this means shell scripts are not
compatible between server and desktop by default.
** Changed in: ppa-purge (Ubuntu Mantic)
Status: Fix Committed => In Progress
** Changed in: ppa-purge (Ubuntu Noble)
Status: Fix Released => In Progress
** Tags removed: verification-needed verification-needed-mantic
** Tags added: verification-failed verification-failed-mantic
--
You received this bug notification because you are a member of Ubuntu
Sponsors, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2036761
Title:
[mantic] ppa-purge no longer purges what add-apt-repository adds
Status in ppa-purge package in Ubuntu:
In Progress
Status in software-properties package in Ubuntu:
Confirmed
Status in ppa-purge source package in Mantic:
In Progress
Status in software-properties source package in Mantic:
Confirmed
Status in ppa-purge source package in Noble:
In Progress
Status in software-properties source package in Noble:
Confirmed
Bug description:
Thank you @jbicha for the original bug report!
[ Impact ]
Currently ppa-purge fails to purge packages on distribution using the deb822 source format. Currently mantic and noble make use of this format and are affected by this issue.
When running ppa-purge to remove a custom PPA, ppa-purge fails to disable the custom PPA since it cannot disable deb822 sources and leads to apt still querying the ppa when running:
$ apt update
In older versions of ubuntu, PPAs used the ".list" format which could be disabled by simply commenting out the "deb" line with a "#". This was the method that ppa-purge used to disable PPAs.
This new patch allows ppa-purge to detect and disable deb822 source files by adding an "Enabled: no" field in each component section of the deb822 file. It also removes any line that starts with "Enabled:"
to make sure the resulting file is clean.
[ Test Plan ]
The changes were tested on both mantic and noble in a lxc container using the oibaf mesa PPA (https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers) as the test PPA.
The following steps were recorded in a noble lxc container.
- First make sure that mesa-utils is installed in your environment:
$ sudo apt update && sudo apt install mesa-utils
- Add the oibaf PPA to your system using the following command:
$ sudo add-apt-repository ppa:oibaf/graphics-drivers
- Make sure that the mesa-utils packages were upgraded after adding the PPA:
$ sudo apt update && sudo apt upgrade
$ dpkg - l | grep mesa
- output should be similar to the following:
ii libegl-mesa0:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the EGL API -- Mesa vendor library
ii libgl1-mesa-dri:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the OpenGL API -- DRI modules
ii libglapi-mesa:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the GL API -- shared library
ii libglx-mesa0:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the OpenGL API -- GLX vendor library
ii mesa-utils 9.0.0-2 amd64 Miscellaneous Mesa utilities -- symlinks
ii mesa-utils-bin:amd64 9.0.0-2 amd64 Miscellaneous Mesa utilities -- native applications
ii mesa-vulkan-drivers:amd64 24.1~git2402280600.41722c~oibaf~n amd64 Mesa Vulkan graphics drivers
- Install and run ppa-purge:
$ sudo apt install ppa-purge
$ sudo ppa-purge ppa:oibaf/graphics-drivers
- ppa-purge will report at the end that none of the oibaf packages
need to be downgraded/removed:
....
libglapi-mesa is already the newest version (24.1~git2402280600.41722c~oibaf~n).
libglapi-mesa set to manually installed.
libglx-mesa0 is already the newest version (24.1~git2402280600.41722c~oibaf~n).
libglx-mesa0 set to manually installed.
mesa-vulkan-drivers is already the newest version (24.1~git2402280600.41722c~oibaf~n).
mesa-vulkan-drivers set to manually installed.
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libdrm-amdgpu1'
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [all]) for 'libdrm-common'
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libdrm-intel1'
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libdrm-nouveau2'
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libdrm-radeon1'
Selected version '2.4.120+git2402271331.1b4e04~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libdrm2'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libegl-mesa0'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libgbm1'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libgl1-mesa-dri'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libglapi-mesa'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'libglx-mesa0'
Selected version '24.1~git2402280600.41722c~oibaf~n' (Updated Open Graphics Drivers - since 2011!:24.04/noble [amd64]) for 'mesa-vulkan-drivers'
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
PPA purged successfully
- And indeed none got modified:
$ dpkg -l | grep mesa
ii libegl-mesa0:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the EGL API -- Mesa vendor library
ii libgl1-mesa-dri:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the OpenGL API -- DRI modules
ii libglapi-mesa:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the GL API -- shared library
ii libglx-mesa0:amd64 24.1~git2402280600.41722c~oibaf~n amd64 free implementation of the OpenGL API -- GLX vendor library
ii mesa-utils 9.0.0-2 amd64 Miscellaneous Mesa utilities -- symlinks
ii mesa-utils-bin:amd64 9.0.0-2 amd64 Miscellaneous Mesa utilities -- native applications
ii mesa-vulkan-drivers:amd64 24.1~git2402280600.41722c~oibaf~n amd64 Mesa Vulkan graphics drivers
- After installing the new ppa-purge deb:
$ dpkg -l | grep ppa-purge
ii ppa-purge 0.2.8+bzr63-0ubuntu2 all disables a PPA and reverts to official packages
- Runnin ppa-purge again
$ sudo ppa-purge ppa:oibaf/graphics-drivers
- We can see the following output:
Updating packages lists
PPA to be removed: oibaf graphics-drivers
Package revert list generated:
libdrm-amdgpu1:amd64/noble libdrm-common/noble libdrm-intel1:amd64/noble libdrm-nouveau2:amd64/noble libdrm-radeon1:amd64/noble libdrm2:amd64/noble
libegl-mesa0:amd64/noble libgbm1:amd64/noble libgl1-mesa-dri:amd64/noble libglapi-mesa:amd64/noble libglx-mesa0:amd64/noble mesa-vulkan-drivers:amd64/noble
Updating packages lists
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Selected version '2.4.120-2' (Ubuntu:24.04/noble [amd64]) for 'libdrm-amdgpu1'
Selected version '2.4.120-2' (Ubuntu:24.04/noble [all]) for 'libdrm-common'
Selected version '2.4.120-2' (Ubuntu:24.04/noble [amd64]) for 'libdrm-intel1'
Selected version '2.4.120-2' (Ubuntu:24.04/noble [amd64]) for 'libdrm-nouveau2'
Selected version '2.4.120-2' (Ubuntu:24.04/noble [amd64]) for 'libdrm-radeon1'
Selected version '2.4.120-2' (Ubuntu:24.04/noble [amd64]) for 'libdrm2'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'libegl-mesa0'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'libgbm1'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'libgl1-mesa-dri'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'libglapi-mesa'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'libglx-mesa0'
Selected version '24.0.1-1ubuntu1' (Ubuntu:24.04/noble [amd64]) for 'mesa-vulkan-drivers'
The following packages will be DOWNGRADED:
libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libegl-mesa0 libgbm1 libgl1-mesa-dri libglapi-mesa libglx-mesa0
mesa-vulkan-drivers
0 upgraded, 0 newly installed, 12 downgraded, 0 to remove and 0 not upgraded.
Need to get 0 B/20.5 MB of archives.
After this operation, 36.1 MB disk space will be freed.
Do you want to continue? [Y/n]
- After downgrading the packages:
$ dpkg -l | grep mesa
ii libegl-mesa0:amd64 24.0.1-1ubuntu1 amd64 free implementation of the EGL API -- Mesa vendor library
ii libgl1-mesa-dri:amd64 24.0.1-1ubuntu1 amd64 free implementation of the OpenGL API -- DRI modules
ii libglapi-mesa:amd64 24.0.1-1ubuntu1 amd64 free implementation of the GL API -- shared library
ii libglx-mesa0:amd64 24.0.1-1ubuntu1 amd64 free implementation of the OpenGL API -- GLX vendor library
ii mesa-utils 9.0.0-2 amd64 Miscellaneous Mesa utilities -- symlinks
ii mesa-utils-bin:amd64 9.0.0-2 amd64 Miscellaneous Mesa utilities -- native applications
ii mesa-vulkan-drivers:amd64 24.0.1-1ubuntu1 amd64 Mesa Vulkan graphics drivers
- This confirms that the packages were indeed downgraded. We can also check from the sources file that it was indeed disabled with "Enabled: no":
$ cat /etc/apt/sources.list.d/oibaf-ubuntu-graphics-drivers-noble.sources
Types: deb
URIs: https://ppa.launchpadcontent.net/oibaf/graphics-drivers/ubuntu/
Suites: noble
Components: main
Enabled: no
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
- Running sudo apt update also shows that the oibaf PPA URL is not
being queried:
root at build-noble:~# sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
[ Where problems could occur ]
- Patch could fail to disable the PPA if an "Enabled: yes" entry was not detected and removed or if no Components line was found. This would cause ppa-purge to fails again in the same manner it is currently failing.
- The patch could also fail to detect the file in its entirety if the file name does not end with ".sources" or if its name does not follow the pattern $PPAOWNER/$PPANAME
[Original Description]
Test Case
---------
From Ubuntu 23.10:
sudo apt install hello
sudo add-apt-repository ppa:jbicha/temp
sudo apt upgrade
apt policy hello
sudo ppa-purge ppa:jbicha/temp
apt policy hello
reveals that the PPA version of hello is still installed
Also /etc/apt/sources.list.d/jbicha-ubuntu-temp-mantic.sources
is still present and active
What Should Happen
------------------
ppa-purge should disable the PPA and reinstall any PPA packages with the version apt currently sees.
Background
----------
add-apt-repository creates deb822 sources lists, starting in Ubuntu 23.10
https://discourse.ubuntu.com/t/spec-apt-deb822-sources-by-
default/29333
Other Info
----------
add-apt-repository has a --remove option
But it does not do the reinstall part which is important
Honestly, that feature is so important, I suggest that add-apt-repository take over the functionality of ppa-purge so that we always get the ppa-purge behavior
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ppa-purge/+bug/2036761/+subscriptions
More information about the Ubuntu-sponsors
mailing list