[Bug 1978125] Re: apt ignoring pin/block/hold files in preferences.d for snapd

Julian Andres Klode 1978125 at bugs.launchpad.net
Mon Jul 11 13:47:44 UTC 2022


Verified. I hacked around the Packages files locally to simulate the
situation:

0. Pinned snapd to -1 and removed it
1. Modified packages file to add Depends: snapd to an update in proposed (netplan.io), and set
   Phased-Update-Percentage: 0 on snapd

Before:

root at jammy:~# apt policy snapd
snapd:
  Installed: (none)
  Candidate: 2.55.5+22.04
  Version table:
     2.55.5+22.04 1 (phased 0%)
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
     2.55.3+22.04 -1
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
root at jammy:~# apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  libfreetype6
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
  snapd
The following packages will be upgraded:
  apt libapt-pkg6.0 libgstreamer1.0-0 libicu70 libnetplan0 libnss3 netplan.io python3-gi
8 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 standard security update
Need to get 34.8 MB/37.1 MB of archives.
After this operation, 89.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] ^C
root at jammy:~# apt install snapd -s                                                                                                            
Reading package lists... Done                                                                                                                 
Building dependency tree... Done                                                                                                              
Reading state information... Done                                                                                                             
The following package was automatically installed and is no longer required:                                                                  
  libfreetype6                                                                                                                                
Use 'apt autoremove' to remove it.                                                                                                            
Suggested packages:                                                                                                                           
  zenity | kdialog                                                                                                                            
The following NEW packages will be installed:                                                                                                 
  snapd                                                                                                                                       
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.                                                                                
Inst snapd (2.55.5+22.04 Ubuntu:22.04/jammy-updates [amd64])                                                                                  
Conf snapd (2.55.5+22.04 Ubuntu:22.04/jammy-updates [amd64])  


After upgrading apt to 2.4.6:

root at jammy:~# apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  libfreetype6 squashfs-tools
Use 'apt autoremove' to remove them.
The following packages have been kept back:
  libnetplan0 netplan.io
The following packages will be upgraded:
  libgstreamer1.0-0 libicu70 libnss3 python3-gi
4 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
1 standard security update
Need to get 13.1 MB of archives.
After this operation, 2048 B of additional disk space will be used.
Do you want to continue? [Y/n] 
root at jammy:~# apt install snapd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package snapd is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'snapd' has no installation candidate


** Tags removed: verification-needed verification-needed-impish verification-needed-jammy
** Tags added: verification-done verification-done-jammy verification-failed-impish

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1978125

Title:
  apt ignoring pin/block/hold files in preferences.d for snapd

Status in apt package in Ubuntu:
  Fix Released
Status in apt source package in Impish:
  Fix Committed
Status in apt source package in Jammy:
  Fix Committed
Status in apt source package in Kinetic:
  Fix Released

Bug description:
  [Impact]
  Negative pins are overridden by a pin of 1 if the package is phasing and "not for us", which suddenly makes packages installable that were effectively blocklisted by the negative pin, overriding user settings

  [Test plan]
  Integration tests covers the fix for this. The fix is not enabled by default as the implementation was changed for bug 1979244, however the new implementation also tests that.

  These tests are run during autopkgtest.

  To test with the new implementation, create an update that pulls in a
  phasing package that is pinned -1 and make sure it's not being
  installed. I did not add a test for that case as the new
  implementation only works by keeping back packages, so it by
  definition can't suddenly cause a package to be allowed.

  [Where problems could occur]
  This specific bit is not enabled anymore, but for the sake of it, it is implemented as a ceiling for the pin, so any other pin will be limited to 1 if the package is considered a "not-for-us" phasing package. So problems could occur there.

  For the new phasing implementation, see bug 1979244.

  [Original bug report]
  Did some upgrades on a new box on 22.04, and had previously removed snapd and BLOCKED via a file in /etc/apt/preferences.d/

  And this upgrade cycle REINSTALLED snapd! and the stupid FF snap! Had
  to repurge it again!

  I had done this previously, and it appears that apt or something is
  IGNORING any pin/holds of snapd

  I use preferences.d files as using:
  sudo apt-mark hold snapd

  This has never worked on any package, ever...

  I have:
  /etc/apt/preferences.d$ cat snapd

  Package: snapd
  Pin: origin *
  Pin-Priority: -1

  And that previously resulted in an error on apt in any attempt to
  install snapd, including using -s... NOW it will still attempt to
  install snapd!

  I've tried several variants of this as well, which other 22.04 and
  20.04 boxes have, same on 22.04, it will allow snapd install!

  Did sudo apt-get update, apt update several times, rebooted several
  times, had various levels of the Pin-Priority from -1 to -9999, still
  will attempt to install snapd, versus the expected error

  sudo apt-get -s install snapd

  Expected error: Reading package lists... Done Building dependency tree
  Reading state information... Done Package snapd is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

  E: Package 'snapd' has no installation candidate

  20.04 boxes still seem to fail correctly with this pin file,.....

  Checking my BASE VM IMAGE of 22.04 and this still works there, as its
  not been touched, this pin file blocks snapd from installing as
  expected... this is apt 2.3.15, updated one is 2.4.5....

  If I pick ANY OTHER RANDOM PACKAGE out and use the same pin/block
  file, and change the name to that package, it blocks it from
  installing! Anything but snapd this works for!

  1)$ lsb_release -rd
  Description:    Ubuntu 22.04 LTS
  Release:        22.04

  2)  sudo apt-cache policy apt
  apt:
    Installed: 2.4.5
    Candidate: 2.4.5
    Version table:
   *** 2.4.5 500
          500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
          100 /var/lib/dpkg/status

  What I expect to happen? HONOR MY BLOCK on snapd! It works for any
  random package chosen, EXCEPT snadp!

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1978125/+subscriptions




More information about the foundations-bugs mailing list