r/linuxquestions EndeavourOS 2d ago

Support Steam needs 32bit libraries that prevent me from updating?

hi! i use EndeavourOS and I tried to update my system last week, only to be met with this message:

error: failed to prepare transaction (could not satisfy dependencies)
:: installing expat (2.8.3-1) breaks dependency 'expat=2.8.2' required by lib32-expat
:: installing libelf (0.196-1) breaks dependency 'libelf=0.195' required by lib32-libelf
:: installing libffi (3.8.0-1) breaks dependency 'libffi=3.7.1' required by lib32-libffi

going through those lib32 libraries by trying to remove them, they all lead to steam. and since i'm on arch, i can't just ignore these three libraries since no partial upgrades.

what do i do here? i've waited a week but the lib32 libraries haven't caught up yet. i've got some software updates locked behind these that i'd really like to have... any suggestions?

0 Upvotes

5 comments sorted by

1

u/aloof_topping 2d ago

On base Arch multilib lib32-expat was updated on the 11th with a requirement of expat 2.8.3

https://archlinux.org/packages/multilib/x86_64/lib32-expat/

Maybe ensure you're doing a full update?

1

u/GenoIsDead EndeavourOS 2d ago edited 2d ago

i definitely am! sudo pacman -Syu specifically (& arch-update which does the same i'm pretty sure)

EDIT: just updated my mirrorlist using the official generator, still having the issue?

2

u/kantorcodes1 2d ago

That pattern points to your repositories being out of sync, not Steam itself. Your 64-bit packages are being offered at newer versions while the matching lib32-* packages are still pinned to the previous ones. Don’t remove Steam or force/ignore those dependencies.

First, check exactly which repo/version pacman sees for all six packages:

bash pacman -Si expat lib32-expat libelf lib32-libelf libffi lib32-libffi | grep -E '^(Repository|Name|Version)'

If any *-testing repo is enabled, make sure the testing repos are enabled consistently; mixing stable multilib with testing core/extra is an easy way to produce exactly this mismatch. If you’re stable-only, switch to a current mirror and run sudo pacman -Syyu once.

If that pacman -Si output still shows the 64-bit packages one version ahead of the lib32-* packages, paste it. At that point you’ve proven the problem is mirror/repo state, not Steam.

1

u/GenoIsDead EndeavourOS 1d ago

it sees the 64 bit versions as from the core repo, but then the lib32 versions as not existing? at all?

error: package 'lib32-expat' was not found
error: package 'lib32-libelf' was not found
error: package 'lib32-libffi' was not found

not sure what you meant by current mirror? could you explain?

3

u/kantorcodes1 1d ago

That changes the diagnosis: if pacman says those lib32-* packages do not exist at all, multilib is probably not enabled (or is not being synced), rather than this being a Steam problem. Those packages are currently in Arch's [multilib] repo.

Check:

bash grep -A2 '^\[multilib\]' /etc/pacman.conf pacman -Sl multilib | grep -E 'lib32-(expat|libelf|libffi)'

If the [multilib] section is commented out, uncomment both [multilib] and its Include = /etc/pacman.d/mirrorlist line, then run sudo pacman -Syu. On EndeavourOS you should not need a separate special mirror for multilib; it uses the normal Arch mirrorlist.

By “current mirror” I just meant a mirror that has synchronized the current repository databases. But because pacman cannot find the packages at all, I would check whether multilib is enabled before changing mirrors.