Hi there, first of all thanks for this super useful action.
We of the LinuxCNC project use this action to verify our mesaflash debian package. Unfortunately, lately it's been failing due to a problem with apt's dependency resolver.
The problem is due to the current set of packages available in debian's package archive, in combination with the action's use of apt-get's "-t ${DISTRO}" argument. The problem is easily reproducible in a local docker container.
start a debian:bullseye container
$ docker run --tty --interactive debian:bullseye bash
Installing libtool from bullseye (like action-debian-package does) fails
root@9dc7d19b5bf7:/# apt-get install -t bullseye libtool
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libtool : Depends: libc6-dev but it is not installable or
libc-dev
E: Unable to correct problems, you have held broken packages.
It works with -t bullseye-updates
root@9dc7d19b5bf7:/# apt-get install -t bullseye-updates libtool
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 file
fontconfig-config fonts-dejavu-core gcc gcc-10 libasan6 libatomic1 libbinutils libbrotli1 libbsd0
libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libexpat1
libfontconfig1 libfreetype6 libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
libjbig0 libjpeg62-turbo liblsan0 libltdl-dev libltdl7 libmagic-mgc libmagic1 libmd0 libmpc3 libmpfr6
libnsl-dev libperl5.32 libpng16-16 libquadmath0 libsigsegv2 libtiff5 libtirpc-dev libtsan0 libubsan1
libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 linux-libc-dev m4 manpages
manpages-dev netbase perl perl-modules-5.32 sensible-utils ucf
Suggested packages:
autoconf-archive gnu-standards autoconf-doc gettext binutils-doc cpp-doc gcc-10-locales gcc-multilib
make flex bison gdb gcc-doc gcc-10-multilib gcc-10-doc glibc-doc libgd-tools gdbm-l10n libtool-doc
gfortran | fortran95-compiler gcj-jdk m4-doc man-browser perl-doc libterm-readline-gnu-perl
| libterm-readline-perl-perl libtap-harness-archive-perl
The following NEW packages will be installed:
autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 file
fontconfig-config fonts-dejavu-core gcc gcc-10 libasan6 libatomic1 libbinutils libbrotli1 libbsd0
libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libexpat1
libfontconfig1 libfreetype6 libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
libjbig0 libjpeg62-turbo liblsan0 libltdl-dev libltdl7 libmagic-mgc libmagic1 libmd0 libmpc3 libmpfr6
libnsl-dev libperl5.32 libpng16-16 libquadmath0 libsigsegv2 libtiff5 libtirpc-dev libtool libtsan0
libubsan1 libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 linux-libc-dev m4 manpages
manpages-dev netbase perl perl-modules-5.32 sensible-utils ucf
0 upgraded, 72 newly installed, 0 to remove and 1 not upgraded.
Need to get 65.5 MB of archives.
After this operation, 255 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
And it works if I omit -t entirely
root@9dc7d19b5bf7:/# apt-get install libtool
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 file
fontconfig-config fonts-dejavu-core gcc gcc-10 libasan6 libatomic1 libbinutils libbrotli1 libbsd0
libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libexpat1
libfontconfig1 libfreetype6 libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
libjbig0 libjpeg62-turbo liblsan0 libltdl-dev libltdl7 libmagic-mgc libmagic1 libmd0 libmpc3 libmpfr6
libnsl-dev libperl5.32 libpng16-16 libquadmath0 libsigsegv2 libtiff5 libtirpc-dev libtsan0 libubsan1
libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 linux-libc-dev m4 manpages
manpages-dev netbase perl perl-modules-5.32 sensible-utils ucf
Suggested packages:
autoconf-archive gnu-standards autoconf-doc gettext binutils-doc cpp-doc gcc-10-locales gcc-multilib
make flex bison gdb gcc-doc gcc-10-multilib gcc-10-doc glibc-doc libgd-tools gdbm-l10n libtool-doc
gfortran | fortran95-compiler gcj-jdk m4-doc man-browser perl-doc libterm-readline-gnu-perl
| libterm-readline-perl-perl libtap-harness-archive-perl
The following NEW packages will be installed:
autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-10 file
fontconfig-config fonts-dejavu-core gcc gcc-10 libasan6 libatomic1 libbinutils libbrotli1 libbsd0
libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libexpat1
libfontconfig1 libfreetype6 libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libisl23 libitm1
libjbig0 libjpeg62-turbo liblsan0 libltdl-dev libltdl7 libmagic-mgc libmagic1 libmd0 libmpc3 libmpfr6
libnsl-dev libperl5.32 libpng16-16 libquadmath0 libsigsegv2 libtiff5 libtirpc-dev libtool libtsan0
libubsan1 libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 linux-libc-dev m4 manpages
manpages-dev netbase perl perl-modules-5.32 sensible-utils ucf
0 upgraded, 72 newly installed, 0 to remove and 1 not upgraded.
Need to get 65.5 MB of archives.
After this operation, 255 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
What's going on here?
The problem is that the debian:bullseye container was built with bullseye-updates enabled, so the installed version of libc6 is the one from bullseye-updates:
All libc6-dev packages have a versioned dependency on the matching libc6, so the older libc6-dev in bullseye won't install with the newer libc6 from bullseye-updates:
My initial reaction is to simply remove -t from the apt-get command line and let the package dependency resolver pick the package versions it wants from among the available options (as determined by the apt sources lists).
I see that you added -t in commit e535e3a99c971b89f6e4f3b9330606e14aeba58d specifically to support backports. But is the -t really needed in that situation? Maybe I'm missing something about how the rest of the action is set up (I didn't look too closely), but it seems to me that as long as the apt sources are set up correctly, apt's package dependency resolver will pick the correct package version.
Hi there, first of all thanks for this super useful action.
We of the LinuxCNC project use this action to verify our mesaflash debian package. Unfortunately, lately it's been failing due to a problem with apt's dependency resolver.
The problem is due to the current set of packages available in debian's package archive, in combination with the action's use of apt-get's "-t ${DISTRO}" argument. The problem is easily reproducible in a local docker container.
start a debian:bullseye container
apt-get update
The state of libtool
Note that libtool depends on libc6-dev.
The state of libc6-dev
Note that there are two versions available, one in
bullseye
and one inbullseye-updates
.Installing libtool from bullseye (like action-debian-package does) fails
It works with
-t bullseye-updates
And it works if I omit
-t
entirelyWhat's going on here?
The problem is that the
debian:bullseye
container was built withbullseye-updates
enabled, so the installed version oflibc6
is the one frombullseye-updates
:All
libc6-dev
packages have a versioned dependency on the matchinglibc6
, so the olderlibc6-dev
inbullseye
won't install with the newerlibc6
frombullseye-updates
:What to do?
My initial reaction is to simply remove
-t
from the apt-get command line and let the package dependency resolver pick the package versions it wants from among the available options (as determined by the apt sources lists). I see that you added-t
in commit e535e3a99c971b89f6e4f3b9330606e14aeba58d specifically to support backports. But is the-t
really needed in that situation? Maybe I'm missing something about how the rest of the action is set up (I didn't look too closely), but it seems to me that as long as the apt sources are set up correctly, apt's package dependency resolver will pick the correct package version.