Why are a ton of lib32 libraries installed upon update?

I noticed that upon system update pacman -Syyu there seems to be a lot of lib32 libraries being downloaded and installed. I’m a bit confused as to why is that happening since I’m on a 64bit system. Is that for backwards compatibility?

 lib32-atk-2.36.0-1  lib32-brotli-1.0.9-1  lib32-cairo-1.17.4-3  lib32-colord-1.4.5-1  lib32-curl-7.74.0-1  lib32-dbus-1.12.20-1
               lib32-dconf-0.38.0-1  lib32-fontconfig-2:2.13.91+48+gfcb0420-2  lib32-fribidi-1.0.10-1  lib32-gcc-libs-10.2.0-4  lib32-gdk-pixbuf2-2.42.2-1
               lib32-glib-networking-2.66.0-1  lib32-glib2-2.66.4-1  lib32-gmp-6.2.0-1  lib32-gnutls-3.7.0-1  lib32-gstreamer-1.18.2-1  lib32-gtk3-3.24.24-1
               lib32-json-glib-1.6.0-1  lib32-lcms2-2.11-1  lib32-libcups-2.3.3-1  lib32-libdatrie-0.2.12-1  lib32-libepoxy-1.5.4-1
               lib32-libgpg-error-1.39-1  lib32-libgudev-234-1  lib32-libgusb-0.3.5-1  lib32-libldap-2.4.56-1  lib32-libproxy-0.4.16-1
               lib32-librsvg-2.50.2-1  lib32-libsoup-2.72.0-1  lib32-libtasn1-4.16.0-1  lib32-libthai-0.1.28-1  lib32-libtiff-4.1.0-1  lib32-libtirpc-1.3.1-1
               lib32-libusb-1.0.23-2  lib32-libxcomposite-0.4.5-1  lib32-libxft-2.3.3-1  lib32-libxinerama-1.1.4-1  lib32-libxkbcommon-1.0.3-1
               lib32-libxrandr-1.5.2-1  lib32-libxtst-1.2.3-2  lib32-llvm-libs-11.0.0-2  lib32-mesa-20.3.1-1  lib32-nettle-3.6-1  lib32-openssl-1:1.1.1.i-1
               lib32-p11-kit-0.23.22-1  lib32-pango-1:1.48.0-1  lib32-pixman-0.40.0-1  lib32-polkit-0.118-1  lib32-readline-8.1.0-2  lib32-rest-0.8.1-2
               lib32-sqlite-3.33.0-1  lib32-systemd-247.1-1  libarchive-3.5.0-1  libblockdev-2.24-3  libbytesize-2.4-3  
1 Like

Hi @kirk :wink:

In short: yes

It also depends on what apps you have installed.

1 Like

You can see the list where being required by using the command

LANG=C pacman -Qi $(pacman -Qsq lib32) | grep -i required
1 Like

Thanks! It seems that the list is pretty large and don’t know if they are all needed in the first place?

Required By     : lib32-alsa-oss  lib32-alsa-plugins  lib32-libcanberra  lib32-libsndfile  manjaro-alsa
Required By     : manjaro-alsa
Required By     : manjaro-alsa
Required By     : None
Required By     : lib32-freetype2  lib32-libelf
Required By     : lib32-libelf
Required By     : lib32-jack
Required By     : lib32-krb5
Required By     : lib32-wayland
Required By     : lib32-libsndfile
Required By     : lib32-harfbuzz
Required By     : lib32-db  lib32-flac  lib32-icu  lib32-libunwind  lib32-llvm-libs  lib32-pcre
Required By     : lib32-gstreamer  lib32-harfbuzz
Required By     : lib32-alsa-lib  lib32-alsa-oss  lib32-alsa-plugins  lib32-attr  lib32-bzip2  lib32-expat  lib32-gcc-libs  lib32-jack  lib32-keyutils  lib32-libcap  lib32-libffi  lib32-libgpg-error  lib32-libice  lib32-libidn2  lib32-libjpeg-turbo  lib32-libltdl  lib32-libogg  lib32-libpciaccess  lib32-libpsl  lib32-libsamplerate  lib32-libunistring  lib32-libxau  lib32-libxcrypt  lib32-libxdmcp  lib32-libxshmfence  lib32-lm_sensors  lib32-lz4  lib32-ncurses  lib32-openssl  lib32-readline  lib32-tdb  lib32-util-linux  lib32-wayland  lib32-xz  lib32-zlib
Required By     : lib32-libcanberra-gstreamer
Required By     : lib32-freetype2
Required By     : lib32-libxml2
Required By     : None
Required By     : lib32-krb5
Required By     : lib32-curl  lib32-keyutils  lib32-libtirpc
Required By     : lib32-libcanberra-gstreamer
Required By     : None
Required By     : None
Required By     : lib32-mesa
Required By     : lib32-gstreamer  lib32-mesa
Required By     : lib32-glib2  lib32-llvm-libs  lib32-wayland
Required By     : None
Required By     : lib32-mesa
Required By     : lib32-libgcrypt
Required By     : lib32-libsm
Required By     : lib32-curl  lib32-libpsl
Required By     : None
Required By     : lib32-krb5
Required By     : lib32-libcanberra
Required By     : lib32-pam
Required By     : lib32-flac  lib32-libvorbis
Required By     : lib32-libdrm
Required By     : lib32-freetype2
Required By     : lib32-curl
Required By     : None
Required By     : lib32-libxt
Required By     : None
Required By     : lib32-curl
Required By     : lib32-libnsl  lib32-pam
Required By     : lib32-libidn2  lib32-libpsl
Required By     : lib32-gstreamer  lib32-mesa
Required By     : lib32-libcanberra  lib32-libsndfile
Required By     : lib32-libxext  lib32-libxfixes  lib32-libxrender  lib32-libxt
Required By     : lib32-libxcb
Required By     : lib32-libx11
Required By     : lib32-libldap  lib32-pam  lib32-util-linux
Required By     : None
Required By     : lib32-mesa
Required By     : lib32-libxcb
Required By     : lib32-libglvnd  lib32-libxi  lib32-libxxf86vm
Required By     : lib32-libxcursor  lib32-libxdamage  lib32-libxi
Required By     : None
Required By     : lib32-gstreamer  lib32-llvm-libs  lib32-wayland
Required By     : lib32-libxcursor
Required By     : lib32-mesa
Required By     : None
Required By     : lib32-mesa
Required By     : lib32-mesa
Required By     : lib32-mesa
Required By     : lib32-zstd
Required By     : lib32-libglvnd
Required By     : lib32-libxml2  lib32-llvm-libs  lib32-readline
Required By     : lib32-curl  lib32-libldap  lib32-libssh2
Required By     : lib32-libcap
Required By     : lib32-glib2
Required By     : lib32-libxml2
Required By     : lib32-libcanberra
Required By     : lib32-e2fsprogs  lib32-glib2  lib32-libsm
Required By     : lib32-mesa
Required By     : lib32-libelf  lib32-libunwind  lib32-libxml2  lib32-zstd
Required By     : lib32-curl  lib32-freetype2  lib32-glib2  lib32-libelf  lib32-libpng  lib32-libssh2  lib32-libxml2  lib32-llvm-libs  lib32-zstd
Required By     : lib32-curl  lib32-mesa

If you want the full picture use:

LANG=C pacman -Qi $(pacman -Qsq lib32)

I only wanted to show you that these packages are highly integrated into your system, I have a similar result. In your case manjaro-alsa is one of the head packages requiring many lib32 packages as dependencies.

Thanks for clarifying!

Great question. I wanted to know too :slight_smile:

I used pacman -Fx lib32 and took a look. Grabbed an installed 32-bit library and used pactree -r X, where X was that library (I did a couple), and found steam, wine and manjaro-pulse depend on 32-bit libraries.

The question was asked in November and confirms wine and steam.

The archived forum had a couple hits too:

It’s not that I have an answer but I wonder, too. Tons of lib32 packages were installed on the update I ran today.

However, I do not have any app installed of which I am aware of that it is using 32 bit libraries, like Wine or Steam does.

Also, I am even more confused by their reverse dependencies: Their 64-bit equivalents depend on them:

$ LC_ALL=C pacman -Si lib32-gcc-libs | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
lib32-glibc
$ LC_ALL=C pacman -Si lib32-glibc | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
glibc
$ LC_ALL=C pacman -Si lib32-systemd | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
lib32-gcc-libs
lib32-libcap
lib32-libgcrypt
lib32-libxcrypt
lib32-xz
lib32-zstd
systemd

So, just because there is systemd (64bit) installed, the package lib32-systemd is pulled in. IMHO, this looks like a packaging mistake.

unlikely.

Face the fact that lib32 packages are integral part of Arch based Linux distros. If you would have installed a minimal Arch you probably have not many less lib32 packages. If you are looking for real orphanes use

pacman -Qdt

No, that is not what your little command shows. The package lib32-systemd depends on the systemd package. But the systemd package does not depend or require the lib32-systemd package.

In other words, you can only install lib32-systemd if systemd is already installed or systemd will be installed with lib32-systemd. But it does not mean systemd depends on lib32-systemd.

@xabbu, You are right, I should not write such answers when I am in hurry.

Is there a recipe to avoid multilib packages? Especially, these were quite a lot new ones upon the last update.

$ grep '^\[2021-01-02T.*lib32' /var/log/pacman.log 
[2021-01-02T18:17:37+0100] [ALPM] removed lib32-attr (2.4.48-1)
[2021-01-02T18:30:47+0100] [ALPM] upgraded lib32-openssl (1:1.1.1.h-1 -> 1:1.1.1.i-1)
[2021-01-02T18:30:47+0100] [ALPM] upgraded lib32-libldap (2.4.54-1 -> 2.4.56-1)
[2021-01-02T18:30:47+0100] [ALPM] upgraded lib32-curl (7.73.0-1 -> 7.74.0-1)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-gcc-libs (10.2.0-3 -> 10.2.0-4)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-glib2 (2.66.2-1 -> 2.66.4-1)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-libtirpc (1.2.6-1 -> 1.3.1-1)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-libgpg-error (1.38-1 -> 1.39-1)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-systemd (246.6-1 -> 247.1-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-at-spi2-core (2.38.0-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-atk (2.36.0-1)
[2021-01-02T18:30:48+0100] [ALPM] upgraded lib32-readline (8.0.0-1 -> 8.1.0-2)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-at-spi2-atk (2.38.0-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-dconf (0.38.0-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-libgudev (234-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-libusb (1.0.23-2)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-libgusb (0.3.5-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-libjpeg-turbo (2.0.6-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-libtiff (4.1.0-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-lcms2 (2.11-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-polkit (0.118-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-sqlite (3.33.0-1)
[2021-01-02T18:30:48+0100] [ALPM] installed lib32-colord (1.4.5-1)
[2021-01-02T18:30:50+0100] [ALPM] upgraded lib32-llvm-libs (11.0.0-1 -> 11.0.0-2)
[2021-01-02T18:30:51+0100] [ALPM] upgraded lib32-mesa (20.2.3-1 -> 20.3.1-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-gdk-pixbuf2 (2.42.2-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-json-glib (1.6.0-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-gmp (6.2.0-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-nettle (3.6-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-libtasn1 (4.16.0-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-p11-kit (0.23.22-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-gnutls (3.7.0-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-libcups (2.3.3-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-libepoxy (1.5.4-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-libdatrie (0.2.12-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-libthai (0.1.28-1)
[2021-01-02T18:30:51+0100] [ALPM] installed lib32-fontconfig (2:2.13.91+48+gfcb0420-2)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-pixman (0.40.0-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-cairo (1.17.4-3)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libxft (2.3.3-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-fribidi (1.0.10-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-pango (1:1.48.0-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-librsvg (2.50.2-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libxcomposite (0.4.5-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libxinerama (1.1.4-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libxkbcommon (1.0.3-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libxrandr (1.5.2-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-brotli (1.0.9-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libproxy (0.4.16-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-glib-networking (2.66.0-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-libsoup (2.72.0-1)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-rest (0.8.1-2)
[2021-01-02T18:30:55+0100] [ALPM] installed lib32-gtk3 (3.24.24-1)
[2021-01-02T18:30:55+0100] [ALPM] upgraded lib32-gstreamer (1.16.2-1 -> 1.18.2-1)
[2021-01-02T18:30:56+0100] [ALPM] upgraded lib32-mesa-vdpau (20.2.3-1 -> 20.3.1-1)
[2021-01-02T18:30:56+0100] [ALPM] upgraded lib32-vulkan-intel (20.2.3-1 -> 20.3.1-1)
[2021-01-02T18:30:56+0100] [ALPM] upgraded lib32-vulkan-radeon (20.2.3-1 -> 20.3.1-1)

No problem.

If you think you don’t need them remove the packages. If you don’t want to run 32bit software you probably don’t need these packages.

You might want to use pacman -Rs ... . It lists all packages that will be removed. Read the list carefully. If you see only lib32 stuff, go for it. You probably need to do it multiple times, I would start with lib32-systemd or lib32-gstreamer . You might get an dependency error, add this package to the list you want to remove.

And then remove multilib from the config?

When trying to untangle all this, it tracks down to the package manjaro-pulse which pulls in lib32-libpulse, and then the avalanche is running.

Sounds like a meta package. Try to find out what it does and what it provides. After that, you can decide if you want to keep it with all the lib32 or get rid of it.

It seems that manjaro-alsa is using the following files:

error: failed to prepare transaction (could not satisfy dependencies)
:: removing lib32-alsa-lib breaks dependency 'lib32-alsa-lib' required by manjaro-alsa
:: removing lib32-alsa-oss breaks dependency 'lib32-alsa-oss' required by manjaro-alsa
:: removing lib32-alsa-plugins breaks dependency 'lib32-alsa-plugins' required by manjaro-als

My question is if manjaro-alsa is necessary for audio and are other alternatives that don’t require lib32 libraries?

I’ll answer my own question, it seems that removing manjaro-alsa & manjaro-pulse and all lib32 libs, & disabling multilib doesn’t affect audio, at least on my side

Thanks, @kirk for diving into this. I removed all the lib32-stuff too now, after removing manjaro-pulse and manjaro-alsa. The question remains especially to the package maintainer @Ste74, if it is really intented or necessary to pull in tons of 32-bit libraries. Also, the intented purpose of these meta packages is not clear.

Thank you very much for bringing this up. On my system, manjaro-pulse wasn’t even installed, and the sound, including volume control and mixer apps, still works.

Plus, it was possible to remove the lib32 packages using

sudo pacman -Rsc $(pacman -Qq | grep lib32-*)

and so far, I did not notice any unexpected behavior.
Looks like it might make sense to think about not installing those packages by default, at least not on computers with a 64-bit CPU.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.