Package: aptitude Version: 0.8.13-3 Severity: normal X-Debbugs-Cc: debbug.aptit...@sideload.33mail.com
Aptitude gives a quite extreme warning if it is tasked with removing packages from a foreign architecture. Packages for i386 were originally installed to support wine32. The following transcript shows an upgrade from Bullseye to Bookworm. ===8<---------------------------------------- $ aptitude full-upgrade --show-resolver-actions The following NEW packages will be installed: … The following packages will be REMOVED: … The following packages will be upgraded: … The following packages are RECOMMENDED but will NOT be installed: e2fsprogs-l10n exfatprogs laptop-detect libatm1 libnss-systemd libpam-cap os-prober thin-provisioning-tools 2130 packages upgraded, 384 newly installed, 451 to remove and 0 not upgraded. Need to get 0 B/5,556 MB of archives. After unpacking 1,720 MB will be used. The following packages have unmet dependencies: virtualbox : Depends: python3 (< 3.10) but 3.11.2-1+b1 is to be installed asymptote : Depends: libgsl27 (>= 2.7.1) but it is not going to be installed python3-virtualenv : Depends: python3-pip-whl but it is not going to be installed Depends: python3-setuptools-whl but it is not going to be installed filezilla : Depends: libfilezilla34 (>= 0.41.0) but it is not going to be installed libsemanage1 : Depends: libsemanage-common (= 3.1-1) but 3.4-1 is to be installed The following actions will resolve these dependencies: Remove the following packages: 1) libsemanage1 [3.1-1+b2 (now)] 2) virtualbox [6.1.26-dfsg-3 (now)] 3) virtualbox-ext-pack [6.1.26-1 (now)] 4) virtualbox-qt [6.1.26-dfsg-3 (now)] Install the following packages: 5) libfilezilla-common [0.41.0-2 (stable)] 6) libfilezilla34 [0.41.0-2 (stable)] 7) libgsl27 [2.7.1+dfsg-5 (stable)] 8) python3-pip-whl [23.0.1+dfsg-1 (stable)] 9) python3-setuptools-whl [66.1.1-1 (stable)] Upgrade the following packages: 10) libgslcblas0 [2.6+dfsg-2 (now) -> 2.7.1+dfsg-5 (stable)] Leave the following dependencies unresolved: 11) virtualbox-dkms recommends virtualbox (>= 6.1.26-dfsg-3) 12) virtualbox-guest-additions-iso recommends virtualbox (>= 6.1.22) Accept this solution? [Y/n/q/?] y The following NEW packages will be installed: … The following packages will be REMOVED: … The following packages will be upgraded: … The following packages are RECOMMENDED but will NOT be installed: e2fsprogs-l10n exfatprogs laptop-detect libatm1 libnss-systemd libpam-cap os-prober thin-provisioning-tools 2130 packages upgraded, 389 newly installed, 464 to remove and 0 not upgraded. Need to get 0 B/5,560 MB of archives. After unpacking 1,526 MB will be used. Do you want to continue? [Y/n/?] y The following ESSENTIAL packages will be REMOVED! libcrypt1:i386 libgcc-s1:i386 WARNING: Performing this action will probably cause your system to break! Do NOT continue unless you know EXACTLY what you are doing! To continue, type the phrase "I am aware that this is a very bad idea": yikes! $ aptitude remove wine32:i386; # I would have liked to keep this to manage a Garmin satnav but it’s apparently causing the extreme messaging $ aptitude full-upgrade --show-resolver-actions … WARNING: Performing this action will probably cause your system to break! Do NOT continue unless you know EXACTLY what you are doing! To continue, type the phrase "I am aware that this is a very bad idea": wtf $ aptitude why libcrypt1:i386 i A libcrypt1:i386 Depends libc6:i386 (>= 2.25) i A libc6:i386 Depends libgcc-s1:i386 $ aptitude why libgcc-s1:i386 i libwine:i386 Depends libc6:i386 (>= 2.29) i A libc6:i386 Depends libgcc-s1:i386 $ aptitude why libwine:i386 Manually installed, current version 5.0.3-3, priority optional No dependencies require to install libwine:i386 $ aptitude remove libwine:i386 $ aptitude why libcrypt1:i386 Automatically installed, current version 1:4.4.18-4, priority optional No dependencies require to install libcrypt1:i386 $ aptitude why libc6:i386 Automatically installed, current version 2.31-13+deb11u8, priority optional No dependencies require to install libc6:i386 $ aptitude why zlib1g:i386 Automatically installed, current version 1:1.2.11.dfsg-2+deb11u2, priority required No dependencies require to install zlib1g:i386 $ aptitude why libgcc-s1:i386 Automatically installed, current version 10.2.1-6, priority optional No dependencies require to install libgcc-s1:i386 $ aptitude remove libcrypt1:i386 libc6:i386 zlib1g:i386 libgcc-s1:i386 The following packages will be REMOVED: libc6:i386 libcom-err2:i386{u} libcrypt1:i386 libgcc-s1:i386{u} libgssapi-krb5-2:i386{u} libidn2-0:i386{u} libk5crypto3:i386{u} libkeyutils1:i386{u} libkrb5-3:i386{u} libkrb5support0:i386{u} libnsl2:i386{u} libnss-nis:i386{u} libnss-nisplus:i386{u} libssl1.1:i386{u} libtirpc3:i386{u} libunistring2:i386{u} zlib1g:i386 0 packages upgraded, 0 newly installed, 17 to remove and 2217 not upgraded. Need to get 0 B of archives. After unpacking 21.9 MB will be freed. Do you want to continue? [Y/n/?] y The following ESSENTIAL packages will be REMOVED! libcrypt1:i386 libgcc-s1:i386 WARNING: Performing this action will probably cause your system to break! Do NOT continue unless you know EXACTLY what you are doing! To continue, type the phrase "I am aware that this is a very bad idea": why are those packages “essential”? $ aptitude search '?essential'; # this demonstrates a 2nd bug i apt - commandline package manager i base-files - Debian base system miscellaneous files i base-passwd - Debian base system master password and group files i bash - GNU Bourne Again SHell i bsdutils - basic utilities from 4.4BSD-Lite i coreutils - GNU core utilities i dash - POSIX-compliant shell i debianutils - Miscellaneous utilities specific to Debian i diffutils - File comparison utilities i dpkg - Debian package management system i findutils - utilities for finding files--find, xargs i grep - GNU grep, egrep and fgrep i gzip - GNU compression utilities i hostname - utility to set/show the host name or domain name i init-system-helpers - helper tools for all init systems i libc-bin - GNU C Library: Binaries i login - system login tools i ncurses-base - basic terminal type definitions i ncurses-bin - terminal-related programs and man pages i perl-base - minimal Perl system i sed - GNU stream editor for filtering/transforming text i sysvinit-utils - System-V-like utilities i tar - GNU version of the tar archiving utility i util-linux - miscellaneous system utilities $ dpkg-query -Wf '${Package;-40}${Essential}\n' | grep yes base-files yes base-passwd yes bash yes bsdutils yes coreutils yes dash yes debianutils yes diffutils yes dpkg yes findutils yes grep yes gzip yes hostname yes init-system-helpers yes libc-bin yes login yes ncurses-base yes ncurses-bin yes perl-base yes sed yes sysvinit-utils yes tar yes util-linux yes ===8<---------------------------------------- The warning seemed misplaced. It did not make sense that i386 packages on an amd64 architecture would be “essential” and warrant forcing the user to type “I am aware that this is a very bad idea”. But this warning triggers enough terror to likely cause most people to doubt themselves: > WARNING: Performing this action will probably cause your system to break! > Do NOT continue unless you know EXACTLY what you are doing! > To continue, type the phrase "I am aware that this is a very bad idea": I was performing an offline dist upgrade. I could not consciously assert that I had enough confidence to say I knew exactly what I was doing. I did a search of essential packages to try to get to the bottom of why aptitude detects the packages libcrypt1:i386 and libgcc-s1:i386 are “essential”. It seemed important to gain more understanding of the situation given the gravity of this warning. As you can see from the search, those two packages are not even considered essential. Of course that just means there’s something further that I do not understand. So I had to shutdown and travel to where I could get online to look for answers. It turns out other people have encountered the same extreme warning over the same foreign arch packages. One accounting is here: https://web.archive.org/web/20240301234748/www.sobyte.net/post/2023-07/dpkg-i386/ Another post was in stackexchange. There are 3 bugs here: 1) Triggering an extreme yet false warning 2) Inconsistency between different functions of the same the tool. The “aptitude search '?essential'” command indicates no i386 packages are essential. If an essential package is not in that list, then the full-upgrade procedure should either not treat it as such, or it should tell users why it is essential. It does not supply enough information for users to investigate. 3) The packages libcrypt1:i386 and libgcc-s1:i386 were needed by wine32:i386. There was no apparent reason for aptitude to call for their removal. This is an earlier transcript excerpt that compelled me to remove it: ===8<---------------------------------------- The following packages have unmet dependencies: virtualbox : Depends: python3 (< 3.10) but 3.11.2-1+b1 is to be installed asymptote : Depends: libgsl27 (>= 2.7.1) but it is not going to be installed python3-virtualenv : Depends: python3-pip-whl but it is not going to be installed Depends: python3-setuptools-whl but it is not going to be installed sip-tester : Depends: libgsl27 (>= 2.7.1) but it is not going to be installed filezilla : Depends: libfilezilla34 (>= 0.41.0) but it is not going to be installed wine32:i386 : Depends: libc6:i386 (>= 2.28) but it is not going to be installed Depends: libwine:i386 (= 5.0.3-3) but it is not going to be installed libsemanage1 : Depends: libsemanage-common (= 3.1-1) but 3.4-1 is to be installed ===8<---------------------------------------- It probably needs to say why the wine32:i386 dependencies are not going to be installed. -- Package-specific info: Terminal: screen.xterm-256color $DISPLAY is set. which aptitude: /usr/bin/aptitude aptitude version information: aptitude 0.8.13 Compiler: g++ 12.1.0 Compiled against: apt version 6.0.0 NCurses version 6.3 libsigc++ version: 2.10.8 Gtk+ support disabled. Qt support disabled. Current library versions: NCurses version: ncurses 6.4.20221231 cwidget version: 0.5.18 Apt version: 6.0.0