Switch from stable to testing - my computer is now very confused about repo contents

Today I swapped from the most recent stable to testing. Some of my packages updated just fine, however curiously there were missing dependencies for lib32-libsndfile and lib32-nvidia-utils that Pamac and Pacman were unable to resolve (specifically, missing libsndfile=1.2.0 and nvidia-utils=525.78.01, which are both higher versions on testing than stable). Even more curiously, updates for some packages like plasma-desktop were also missing. This occurs in both Pamac and Pacman.

After much tearing my hair out (read: refreshing caches, mirrors, etc. and rebooting many times), I managed to get Pacman to recognize the missing updates, though they vanished into the ether soon after. From that I was able to deduce that the issue probably stems back to the introduction of liblc3, which is a new dependency for the updates and has not made its way to stable yet.

I tried installing liblc3, but my computer does not believe it to be in the official repos. I tried building it from the AUR, but got the following compile error:

FAILED: tools/liblc3toolslib.a.p/lc3bin.c.o 
cc -Itools/liblc3toolslib.a.p -Itools -I../tools -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -ffast-math -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fPIC -MD -MQ tools/liblc3toolslib.a.p/lc3bin.c.o -MF tools/liblc3toolslib.a.p/lc3bin.c.o.d -o tools/liblc3toolslib.a.p/lc3bin.c.o -c ../tools/lc3bin.c
In file included from ../tools/lc3bin.c:20:
../tools/lc3bin.h:24:10: fatal error: lc3.h: No such file or directory
   24 | #include <lc3.h>

What is happening?

Switching branch works OOB - but some rules must be obeyed.

When you switch branch - ALWAYS run a full system sync - with a forced download of databases.

sudo pacman -Syyu

ONLY install packages using only the -S if you are certain your system is fully up-to-date.

Packages may have been removed from the repo - that happens when e.g. python2 depending packages is removed from repo.

Your issue may also come custom packages which you have not rebuilt to match the newer upstream libraries.

List your custom (foreign) packages - pipe the result into a text file for reference

pacman -Qqm > ~/custom-pkgs.txt

Then remove them

sudo pacman -Rns - < custom-pkgs.txt

Then run a full system sync

sudo pacman -Syyu

Then you rebuild your custom packages

pamac build $(cat custom-pkgs.txt)

If you have a hard to solve dependency issue you may need to use a live ISO, mount your root and use pacman -S <missing-pkg> --root /mnt/broken to install missing packages to the broken system.

Ensure you are using same branch on the ISO as your current system

Example

sudo mkdir /mnt/broken
sudo mount /dev/sdxY /mnt/broken
BROKEN_SYS_BRANCH=$(cat /mnt/broken/etc/pacman-mirrors.conf | grep -i "Branch =" | sed -E "s/(# )*Branch = //g")
sudo pacman-mirrors -aS $BROKEN_SYS_BRANCH
sudo pacman -Syy
sudo pacman -S <missing-pkg> --root /mnt/broken
sudo manjaro-chroot /mnt/broken /bin/bash
pacman-mirrors -c Global
pacman -Syyu
2 Likes

Running -Syyu instead of -Syu fixed it in this case. Thanks!

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