MichaIng / DietPi

Lightweight justice for your single-board computer!
https://dietpi.com/
GNU General Public License v2.0
4.88k stars 497 forks source link

Raspberry Pi 64-bit | Error: cannot remove architecture 'armhf' #4338

Closed MTenbult closed 3 years ago

MTenbult commented 3 years ago

Details:

MichaIng commented 3 years ago

Many thanks for your report.

I just learned that a foreign architecture cannot be removed, if any package of that architecture is currently installed. Can you please paste the result of:

dpkg --get-selections '*:armhf' | mawk '{print $1}'
MichaIng commented 3 years ago

This fixes it for DietPi v7.2: https://github.com/MichaIng/DietPi/commit/af3270a804fede0b75644a2985bdebd517e50c27 Would still be interesting which 32-bit package has actually been installed.

MTenbult commented 3 years ago

Sorry for the late response! Running dpkg --get-selections '*:armhf' | mawk '{print $1}' returns: gcc-8-base:armhf libc6:armhf libgcc1:armhf wiringpi:armhf

Seems like most 32-bit package where installed with wiringPi. By purging wiringPi (I don't need it anymore) only leaves libc6:armhf

After purging wiringPi the update runs without problems

MichaIng commented 3 years ago

Great! For next release we updated our WiringPi install option to use a new maintained Git branch, support for new hardware etc: https://github.com/MichaIng/DietPi/pull/4324 It's compiled on your system, so would be arm64 in your case.

C0D3-M4513R commented 3 years ago

I can reproduce this. Have the exact same issue, with the exact same packages. Purging wiringpi removes all armhf packages:


root@DietPi:/tmp/DietPi-Patch# apt purge wiringpi
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gcc-8-base:armhf libc6:armhf libgcc1:armhf
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  wiringpi:armhf*
Joulinar commented 3 years ago

did you install wiringpi yourself before (without dietpi-software)?

MichaIng commented 3 years ago

Good and about time to remove armhf then, to prevent users from potentially installing a parallel 32-bit system 😄. There are still a few other larger armhf-only packages in the RPi repo, e.g. Wolfram Alpha, Kodi and Chromium we already know about: https://archive.raspberrypi.org/debian/pool/main/w/wolfram-engine/

Installing those pulls a smaller or later amount of armhf dependencies, in cases conflicting with the arm64 ones (not all have multi-arch support), so that the option would be then to replace those and potentially remove other arm64 dependants with it. I mean on interactive installs all info and warnings are shown and confirmation required, but I think this should be done well known by the admin, including adding foreign architectures intentionally, when required, not having this as a default.

C0D3-M4513R commented 3 years ago

did you install wiringpi yourself before (without dietpi-software)?

Don't know. I did a dev project, which in I needed the dev files. Shouldn't there then also be a dev wiringpi package? https://github.com/C0D3-M4513R/CD74HCT299

MichaIng commented 3 years ago

Shouldn't there then also be a dev wiringpi package?

WiringPi itself is basically a development library. Installing it with their build script as well as the RPi APT package both contain the gpio tool, the libwiringPi + libwiringPiDev (Dev for Device, not Development 😉) libraries and all development headers. Our install option also leaves the source files in place, which contain docs and a few additional examples/libraries one might want to compile or use as a starting point.