[mantic] ppa-purge no longer purges what add-apt-repository adds
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ppa-purge (Ubuntu) |
Fix Released
|
High
|
Ghadi Rahme | ||
Mantic |
Fix Released
|
High
|
Ghadi Rahme | ||
Noble |
Fix Released
|
High
|
Ghadi Rahme | ||
software-properties (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Mantic |
Invalid
|
Undecided
|
Unassigned | ||
Noble |
Invalid
|
Undecided
|
Unassigned |
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:/
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/
- 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~git2402280
ii libgl1-
ii libglapi-mesa:amd64 24.1~git2402280
ii libglx-mesa0:amd64 24.1~git2402280
ii mesa-utils 9.0.0-2 amd64 Miscellaneous Mesa utilities -- symlinks
ii mesa-utils-
ii mesa-vulkan-
- Install and run ppa-purge:
$ sudo apt install ppa-purge
$ sudo ppa-purge ppa:oibaf/
- 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~git240228
libglapi-mesa set to manually installed.
libglx-mesa0 is already the newest version (24.1~git240228
libglx-mesa0 set to manually installed.
mesa-
mesa-
Selected version '2.4.120+
Selected version '2.4.120+
Selected version '2.4.120+
Selected version '2.4.120+
Selected version '2.4.120+
Selected version '2.4.120+
Selected version '24.1~git240228
Selected version '24.1~git240228
Selected version '24.1~git240228
Selected version '24.1~git240228
Selected version '24.1~git240228
Selected version '24.1~git240228
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~git2402280
ii libgl1-
ii libglapi-mesa:amd64 24.1~git2402280
ii libglx-mesa0:amd64 24.1~git2402280
ii mesa-utils 9.0.0-2 amd64 Miscellaneous Mesa utilities -- symlinks
ii mesa-utils-
ii mesa-vulkan-
- After installing the new ppa-purge deb:
$ dpkg -l | grep ppa-purge
ii ppa-purge 0.2.8+bzr63-
- Runnin ppa-purge again
$ sudo ppa-purge ppa:oibaf/
- We can see the following output:
Updating packages lists
PPA to be removed: oibaf graphics-drivers
Package revert list generated:
libdrm-
libegl-
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-
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-
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-
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-
ii mesa-vulkan-
- 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/
Types: deb
URIs: https:/
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@
Hit:1 http://
Hit:2 http://
Hit:3 http://
Hit:4 http://
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/
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:/
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
tags: |
added: foundations-todo removed: rls-mm-incoming |
tags: | added: noble |
description: | updated |
tags: |
added: verification-needed verification-needed-mantic removed: verification-failed verification-failed-mantic |
Changed in ppa-purge (Ubuntu Mantic): | |
status: | In Progress → Fix Released |
status: | Fix Released → Fix Committed |
Changed in ppa-purge (Ubuntu Noble): | |
status: | In Progress → Fix Released |
ppa-purge is a pretty dangerous script to run due to the downgrade functionality that we should be discouraging use of.
It can create systems that look like they have supported components only but had everything messed up by downgrading from some PPA.
If the PPA added packages not available in other sources, removing them is fine. But if downgrades are involved it should come with reasonably strong warnings.
Generally speaking people should probably reinstall from scratch if they added a PPA that replaced important system packages.