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

Reply via email to