[Bug 2036195] [NEW] Any packages installed in binary hooks are marked as manually installed - even dependencies

Philip Roche 2036195 at bugs.launchpad.net
Fri Sep 15 10:51:40 UTC 2023


Public bug reported:

After much debugging trying to understand why `apt-get autoremove` was
not working in a binary hook I realised that all packages installed in a
binary hook are marked as manually installed - even the dependencies of
packages. This is a bug.

Another side affect of this is that any dependency of a package in the
base chroot that is removed in a binary hook is not autoremovable in the
binary hook.

It is autoremovable once the image is created and launched though.

This is due to how the `setup_mountpoint` function works (see
https://git.launchpad.net/livecd-rootfs/tree/live-build/functions#n123)
specifically

```
mount -t tmpfs none "$mountpoint/var/lib/apt"
```

Which means that inside the chroot that the binary hook works on, the
`/var/lib/apt` directory is empty... including the
`/var/lib/apt/extended_states` file which is used to store whether a
package was auto installed or not.

The same goes the other way - any changes to the
`/var/lib/apt/extended_states`  file inside chroot that the binary hook
is changing are not reflected in the final image due to the
`teardown_mountpoint` (see https://git.launchpad.net/livecd-
rootfs/tree/live-build/functions#n152) not persisting any of those
changes.

The end result being.

* If a package is removed in the binary hook then the resulting image will likely have autoremovable packages at first launch
* Any package and their dependencies installed in a binary hook will all be marked as manually installed.

** Affects: livecd-rootfs (Ubuntu)
     Importance: Undecided
         Status: New

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

Title:
  Any packages installed in binary hooks are marked as manually
  installed - even dependencies

Status in livecd-rootfs package in Ubuntu:
  New

Bug description:
  After much debugging trying to understand why `apt-get autoremove` was
  not working in a binary hook I realised that all packages installed in
  a binary hook are marked as manually installed - even the dependencies
  of packages. This is a bug.

  Another side affect of this is that any dependency of a package in the
  base chroot that is removed in a binary hook is not autoremovable in
  the binary hook.

  It is autoremovable once the image is created and launched though.

  This is due to how the `setup_mountpoint` function works (see
  https://git.launchpad.net/livecd-rootfs/tree/live-
  build/functions#n123) specifically

  ```
  mount -t tmpfs none "$mountpoint/var/lib/apt"
  ```

  Which means that inside the chroot that the binary hook works on, the
  `/var/lib/apt` directory is empty... including the
  `/var/lib/apt/extended_states` file which is used to store whether a
  package was auto installed or not.

  The same goes the other way - any changes to the
  `/var/lib/apt/extended_states`  file inside chroot that the binary
  hook is changing are not reflected in the final image due to the
  `teardown_mountpoint` (see https://git.launchpad.net/livecd-
  rootfs/tree/live-build/functions#n152) not persisting any of those
  changes.

  The end result being.

  * If a package is removed in the binary hook then the resulting image will likely have autoremovable packages at first launch
  * Any package and their dependencies installed in a binary hook will all be marked as manually installed.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/livecd-rootfs/+bug/2036195/+subscriptions




More information about the foundations-bugs mailing list