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
Touch seeded packages, which is subscribed to software-properties in
Ubuntu.
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@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


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to