* Reinhard Tartler <siret...@gmail.com> [2025-07-29 06:31]:
I did a slight variation: First I started with:

PKG=golang-github-denverdino-aliyungo-dev; mmdebstrap \
  --chrooted-customize-hook="set -x ; apt -y install $PKG && sed -e
s/bookworm/trixie/ -i /etc/apt/sources.list && apt update" \
       --chrooted-customize-hook=bash bookworm /dev/null


Then I copied the resulting deb files into /tmp/mmdebstrap.*/packages

And added the following to /tmp/mmdebstrap.*/etc/apt/sources.list:

deb [trusted=true] file:///packages ./


Also, inside the chroot I created the necessary index files with:

apt-ftparchive packages . > Packages
apt-ftparchive release . > Release

Then, after an `apt-get update && apt-get dist-upgrade`, I didn't end up
with held back packages:

root@x1:/packages# apt update
Get:1 file:/packages ./ InRelease
Ign:1 file:/packages ./ InRelease
Get:2 file:/packages ./ Release [816 B]
Get:2 file:/packages ./ Release [816 B]
Get:3 file:/packages ./ Release.gpg
Ign:3 file:/packages ./ Release.gpg
Get:4 file:/packages ./ Packages [3385 B]
Hit:5 http://security.debian.org/debian-security trixie-security InRelease
Hit:6 http://deb.debian.org/debian trixie InRelease
Hit:7 http://deb.debian.org/debian trixie-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
159 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@x1:/packages# apt dist-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:
 libapt-pkg6.0 libargon2-1 libc-dev-bin libc6-dev libcrypt-dev libgnutls30
libnsl-dev libnsl2
 libprotobuf-dev libprotobuf-lite32t64 libprotobuf32t64 libprotoc32t64
libtasn1-6 libtirpc-dev libunistring2
 linux-libc-dev protobuf-compiler protoc-gen-go-1-3 rpcsvc-proto zlib1g-dev
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
 golang-github-golang-protobuf-1-3-dev golang-goprotobuf-dev libdb5.3
libelf1 libext2fs2 libgdbm-compat4
 libgdbm6 libhogweed6 libnettle8 libprotobuf-lite32 libprotobuf32
libprotoc32 libreadline8 libssl3 libtirpc3
The following NEW packages will be installed:
 gcc-14-base golang-github-golang-protobuf-1-5-dev
golang-github-google-go-cmp-dev
 golang-google-protobuf-dev libapt-pkg7.0 libdb5.3t64 libelf1t64
libext2fs2t64 libgdbm-compat4t64
 libgdbm6t64 libhogweed6t64 liblastlog2-2 libnettle8t64 libperl5.40
libprotobuf-lite32t64 libprotobuf32t64
 libprotoc32t64 libreadline8t64 libsqlite3-0 libssl3t64 libtirpc3t64
libunistring5 login.defs
 openssl-provider-legacy perl-modules-5.40 sqv
The following packages will be upgraded:
 adduser apt apt-utils base-files base-passwd bash bsdutils coreutils cpio
cron cron-daemon-common dash
 debconf debconf-i18n debian-archive-keyring debianutils diffutils
dmidecode dmsetup dpkg e2fsprogs fdisk
 findutils gcc-12-base golang-github-denverdino-aliyungo-dev gpgv grep
gzip hostname ifupdown init
 init-system-helpers iproute2 iputils-ping isc-dhcp-client isc-dhcp-common
kmod less libacl1 libapparmor1
 libargon2-1 libattr1 libaudit-common libaudit1 libblkid1 libbpf1 libbsd0
libbz2-1.0 libc-bin libc-dev-bin
 libc6 libc6-dev libcap-ng0 libcap2 libcap2-bin libcom-err2 libcrypt-dev
libcrypt1 libcryptsetup12
 libdebconfclient0 libdevmapper1.02.1 libedit2 libfdisk1 libffi8
libfile-find-rule-perl libgcc-s1
 libgcrypt20 libgmp10 libgpg-error0 libgssapi-krb5-2 libidn2-0 libip4tc2
libjansson4 libjson-c5 libk5crypto3
 libkeyutils1 libkmod2 libkrb5-3 libkrb5support0 liblocale-gettext-perl
liblz4-1 liblzma5 libmd0 libmnl0
 libmount1 libncursesw6 libnewt0.52 libnftables1 libnftnl11 libnsl-dev
libnsl2 libp11-kit0 libpam-modules
 libpam-modules-bin libpam-runtime libpam0g libpcre2-8-0 libpopt0
libproc2-0 libprotobuf-dev libseccomp2
 libselinux1 libsemanage-common libsemanage2 libsepol2 libslang2
libsmartcols1 libss2 libstdc++6
 libsystemd-shared libsystemd0 libtasn1-6 libtext-charwidth-perl
libtext-iconv-perl libtinfo6
 libtirpc-common libtirpc-dev libudev1 libuuid1 libxtables12 libxxhash0
libzstd1 linux-libc-dev login
 logrotate logsave mawk mount nano ncurses-base ncurses-bin netbase
nftables passwd perl perl-base procps
 protobuf-compiler protoc-gen-go-1-3 readline-common sed sensible-utils
systemd systemd-sysv sysvinit-utils
 tar tasksel tasksel-data tzdata udev usrmerge util-linux util-linux-extra
vim-common vim-tiny whiptail
 zlib1g zlib1g-dev
158 upgraded, 26 newly installed, 15 to remove and 0 not upgraded.
Need to get 73.1 MB/73.3 MB of archives.
After this operation, 89.1 MB of additional disk space will be used.
Do you want to continue? [Y/n]

I believe this is a more realistic test than patching the apt internal
files, as I don't
claim to be an expert on apt internals at all

I failed to reproduce this. I did:

gbp clone vcsgit:golang-github-golang-protobuf-1-5
cd golang-github-golang-protobuf-1-5/
dch -i '' -D unstable
git deborig
sbuild
cd ..
mmdebstrap --customize-hook='copy-in \
  golang-github-golang-protobuf-1-5-dev_1.5.4-1.1_all.deb \
        protoc-gen-go-1-5_1.5.4-1.1_amd64.deb /opt' \
        --chrooted-customize-hook="set -x ; apt -y install \
          golang-github-denverdino-aliyungo-dev apt-utils && cd /opt && \
                apt-ftparchive packages . > Packages && \
                apt-ftparchive release . > Release && \
                echo 'deb [trusted=true] file:///opt ./' >> /etc/apt/sources.list 
&& \
                sed -e s/bookworm/trixie/ -i /etc/apt/sources.list && \
                apt update && apt dist-upgrade" bookworm /dev/null

And I still get:

The following packages have been kept back:
  golang-github-denverdino-aliyungo-dev

Can you please verify?

Cheers Jochen

Attachment: signature.asc
Description: PGP signature

Reply via email to