regression: ?garbage does not work correctly in install commands

Bug #1995790 reported by Mekaniserad Apelsin
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
apt (Ubuntu)
Status tracked in Noble
Jammy
Fix Released
Undecided
Unassigned
Lunar
Won't Fix
Undecided
Unassigned
Mantic
Fix Released
High
Julian Andres Klode
Noble
Fix Released
High
Julian Andres Klode

Bug Description

[Impact]
The '?garbage' pattern doesn't work with install/remove commands which is confusing, and the fix for it is trivial.

[Test plan]
Successful autopkgtest. The comprehensive test suite run as an autopkgtest has been updated in test/integration/test-apt-get-autoremove to test for the correct behavior of '?garbage' with install and remove.

[Where problems could occur]
You can see we had to tweak the test suite in a bunch of places because it relies on exact debug output format and because we now call "markandsweep" there's additional mark flags in the debug output. It's unlikely that this is a problem for others.

We have not seen regressions in noble in the past 2 weeks or noble-proposed since 2023-11-23 (it was stuck for other reasons there), hence other places the code change may affect have been thoroughly exercised in the builders and autopkgtest runners.

[Original bug report]
The awesome apt has a some wonderful tips on their EXAMPLES section (printed below). The choice of name to "garbage" might not have been the best but the function is extremely useful.

$ man apt-patterns | sed '/EXAMPLES/,/^[^ ]/!d;/^[^ ]/d'
       apt remove ?garbage
           Remove all packages that are automatically installed and no longer needed -
           same as apt autoremove

       apt purge ?config-files
           Purge all packages that only have configuration files left

       apt list '~i !~M (~slibs|~sperl|~spython)'
           List all manually-installed packages in sections matching libs, perl, or
           python.

Lets mark a package as automatically installed, and use the examples.

$ sudo apt-mark auto shotwell
shotwell set to automatically installed.

$ sudo apt remove ?garbage
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libraw20 shotwell shotwell-common
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

$ sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  libraw20 shotwell shotwell-common
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
After this operation, 9.806 kB disk space will be freed.
Do you want to continue? [Y/n] N
Abort.

Apt-patterns works as it should everywhere else, as far as I can see, it works wonders with ie `apt list '~g|~c'` and many other applications. I used `apt purge '~g|~c'` successfully in Ubuntu 20.04 for years, so I feel this is a regression.

ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: apt 2.4.8
ProcVersionSignature: Ubuntu 5.15.0-52.58-generic 5.15.60
Uname: Linux 5.15.0-52-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu82.1
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Sun Nov 6 10:57:52 2022
SourcePackage: apt
UpgradeStatus: Upgraded to jammy on 2022-03-26 (224 days ago)

Revision history for this message
Mekaniserad Apelsin (blippe) wrote :
Revision history for this message
Mekaniserad Apelsin (blippe) wrote :

Just tested on bullseye and both commands below works as expected|indented, packages marked as automatically installed (and no longer needed) and packages with configuration files left are removed, as per apt subcommand.

$ sudo apt purge '~g|~c'
$ sudo apt remove '~g|~c'

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in apt (Ubuntu):
status: New → Confirmed
Revision history for this message
Julian Andres Klode (juliank) wrote (last edit ): Re: ?garbage does not work correctly in install commands

I can confirm that ?garbage does not work correctly in install commands (install, remove, purge, etc). Presumably the pattern is evaluated while an action group is preventing the cache from updating the garbage state and hence it evaluates to nothing.

I can confirm that this works in focal but not in jammy, with those test cases:

podman run --rm -it ubuntu:focal bash -c "apt update && apt install hello && apt-mark auto hello && apt remove ?garbage -y"
podman run --rm -it ubuntu:jammy bash -c "apt update && apt install hello && apt-mark auto hello && apt remove ?garbage -y"

Not sure when it regressed

summary: - apt-patterns does not work as described in man pages
+ ?garbage does not work correctly in install commands
Changed in apt (Ubuntu):
importance: Undecided → High
assignee: nobody → Julian Andres Klode (juliank)
tags: added: foundations-todo
summary: - ?garbage does not work correctly in install commands
+ regression: ?garbage does not work correctly in install commands
Changed in apt (Ubuntu Jammy):
status: New → Confirmed
Changed in apt (Ubuntu Lunar):
status: New → Confirmed
Changed in apt (Ubuntu Mantic):
status: Confirmed → Triaged
Revision history for this message
Julian Andres Klode (juliank) wrote :

I think this is a regression of "Call MarkAndSweep only manually in apt-get for autoremove"

Changed in apt (Ubuntu Lunar):
status: Confirmed → Won't Fix
Changed in apt (Ubuntu):
status: Triaged → Fix Committed
Revision history for this message
Julian Andres Klode (juliank) wrote :

Fixes are committed to jammy, mantic, noble branches. Will cut a noble release, waiting for a more substantial bug to actually include this for SRU.

Changed in apt (Ubuntu Jammy):
status: Confirmed → Triaged
Changed in apt (Ubuntu Mantic):
status: Triaged → In Progress
status: In Progress → Triaged
Revision history for this message
Julian Andres Klode (juliank) wrote :

Actually I have one followup fix for the test suite to commit to fix up some asserted debug output :D

Revision history for this message
Julian Andres Klode (juliank) wrote :

I'm releasing 2.7.7 now which includes the fix.

Still waiting for an important bug (or feature) to appear to drag the fix alongside with in an SRU. All branches are green though :)

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 2.7.10

---------------
apt (2.7.10) unstable; urgency=medium

  * pkgcachegen: Use placement new to construct header to make
    valgrind happy when we hash/write out padding bytes
  * Add Conflicts: apt-verify.
    The APT team is very concerned about the encroachement of its
    namespace and the impact on security of its file verification
    process. We have expressed those concerns in the ITP bug, but
    the package was nonetheless uploaded and accepted, so we have
    to take this extraordinary step to protect our users.

 -- Julian Andres Klode <email address hidden> Fri, 19 Jan 2024 09:31:13 +0100

Changed in apt (Ubuntu Noble):
status: Fix Committed → Fix Released
tags: removed: foundations-todo
Changed in apt (Ubuntu Mantic):
status: Triaged → In Progress
Changed in apt (Ubuntu Jammy):
status: Triaged → In Progress
description: updated
description: updated
Revision history for this message
Robie Basak (racb) wrote : Please test proposed package

Hello Mekaniserad, or anyone else affected,

Accepted apt into mantic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apt/2.7.3ubuntu0.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-mantic to verification-done-mantic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-mantic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in apt (Ubuntu Mantic):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-mantic
Changed in apt (Ubuntu Jammy):
status: In Progress → Fix Committed
tags: added: verification-needed-jammy
Revision history for this message
Robie Basak (racb) wrote :

Hello Mekaniserad, or anyone else affected,

Accepted apt into jammy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apt/2.4.12 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-jammy to verification-done-jammy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-jammy. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (apt/2.4.12)

All autopkgtests for the newly accepted apt (2.4.12) for jammy have finished running.
The following regressions have been reported in tests triggered by the package:

livecd-rootfs/2.765.38 (amd64, arm64)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/jammy/update_excuses.html#apt

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (apt/2.7.3ubuntu0.1)

All autopkgtests for the newly accepted apt (2.7.3ubuntu0.1) for mantic have finished running.
The following regressions have been reported in tests triggered by the package:

apport/2.27.0-0ubuntu5 (amd64)
apt/2.7.3ubuntu0.1 (armhf)
auto-apt-proxy/14.1 (arm64)
livecd-rootfs/23.10.57 (ppc64el)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/mantic/update_excuses.html#apt

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Julian Andres Klode (juliank) wrote :

The regressions on mantic have cleared up and the tests of apt have passed so this is verified there.

Still clearing out a regression from update-manager:i386 on jammy-

tags: added: verification-done-mantic
removed: verification-needed-mantic
Revision history for this message
Julian Andres Klode (juliank) wrote :

jammy is green too now

tags: added: verification-done-jammy
removed: verification-needed-jammy
tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 2.7.3ubuntu0.1

---------------
apt (2.7.3ubuntu0.1) mantic; urgency=medium

  * Restore ?garbage by calling MarkAndSweep before parsing (LP: #1995790)
  * For phasing, check if current version is a security update, not just previous ones
    (LP: #2051181)
  * Point gitlab-ci and gbp at mantic branch
  * CI: Do not require UID 1000 for our test user

 -- Julian Andres Klode <email address hidden> Tue, 13 Feb 2024 18:22:07 +0100

Changed in apt (Ubuntu Mantic):
status: Fix Committed → Fix Released
Revision history for this message
Andreas Hasenack (ahasenack) wrote : Update Released

The verification of the Stable Release Update for apt has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apt - 2.4.12

---------------
apt (2.4.12) jammy; urgency=medium

  * Restore ?garbage by calling MarkAndSweep before parsing (LP: #1995790)
  * For phasing, check if current version is a security update, not just previous ones
    (LP: #2051181)

 -- Julian Andres Klode <email address hidden> Tue, 13 Feb 2024 16:39:04 +0100

Changed in apt (Ubuntu Jammy):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.