[Bug 2036761] [NEW] [mantic] ppa-purge no longer purges what add-apt-repository adds

Launchpad Bug Tracker 2036761 at bugs.launchpad.net
Tue Apr 30 07:01:43 UTC 2024


You have been subscribed to a public bug by Ghadi Rahme (ghadi-rahme):

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

** Affects: ppa-purge (Ubuntu)
     Importance: High
     Assignee: Ghadi Rahme (ghadi-rahme)
         Status: Fix Released

** Affects: software-properties (Ubuntu)
     Importance: Undecided
         Status: Confirmed

** Affects: ppa-purge (Ubuntu Mantic)
     Importance: High
     Assignee: Ghadi Rahme (ghadi-rahme)
         Status: Fix Committed

** Affects: software-properties (Ubuntu Mantic)
     Importance: Undecided
         Status: Confirmed

** Affects: ppa-purge (Ubuntu Noble)
     Importance: High
     Assignee: Ghadi Rahme (ghadi-rahme)
         Status: Fix Released

** Affects: software-properties (Ubuntu Noble)
     Importance: Undecided
         Status: Confirmed


** Tags: foundations-todo mantic noble patch verification-needed verification-needed-mantic
-- 
[mantic] ppa-purge no longer purges what add-apt-repository adds
https://bugs.launchpad.net/bugs/2036761
You received this bug notification because you are a member of Ubuntu Sponsors, which is subscribed to the bug report.



More information about the Ubuntu-sponsors mailing list