Running into System upde error becaise of VLC pluin conflict

I’m running onto a system update error, it seems a VLC plugin conflict is keeping me from updating it fully, its a rinse and repeat process. I tried using an LLM to help but what it suggests isn’t working and I keep running into the exact same error. I can’t seem to resolve, or even ignore VLC to do the upgrade.

❯ sudo pacman -Syu
:: Synchronizing package databases…
cachyos-v3 is up to date
cachyos-core-v3 is up to date
cachyos-extra-v3 is up to date
cachyos is up to date
core is up to date
extra is up to date
multilib is up to date
:: Starting full system upgrade…
:: Replace vlc-plugin-kwallet with cachyos-extra-v3/vlc-plugin-libsecret? [Y/n] y
:: Replace vlc-plugin-quicksync with cachyos-extra-v3/vlc-plugins-extra? [Y/n] y
resolving dependencies…
:: There are 128 providers available for tessdata:
:: Repository extra

    tesseract-data-afr 2) tesseract-data-amh 3) tesseract-data-ara 4) tesseract-data-asm
    tesseract-data-aze 6) tesseract-data-aze_cyrl 7) tesseract-data-bel 8) tesseract-data-ben
    tesseract-data-bod 10) tesseract-data-bos 11) tesseract-data-bre 12) tesseract-data-bul
    tesseract-data-cat 14) tesseract-data-ceb 15) tesseract-data-ces 16) tesseract-data-chi_sim
    tesseract-data-chi_sim_vert 18) tesseract-data-chi_tra 19) tesseract-data-chi_tra_vert
    tesseract-data-chr 21) tesseract-data-cos 22) tesseract-data-cym 23) tesseract-data-dan
    tesseract-data-dan_frak 25) tesseract-data-deu 26) tesseract-data-deu_frak 27) tesseract-data-div
    tesseract-data-dzo 29) tesseract-data-ell 30) tesseract-data-eng 31) tesseract-data-enm
    tesseract-data-epo 33) tesseract-data-equ 34) tesseract-data-est 35) tesseract-data-eus
    tesseract-data-fao 37) tesseract-data-fas 38) tesseract-data-fil 39) tesseract-data-fin
    tesseract-data-fra 41) tesseract-data-frk 42) tesseract-data-frm 43) tesseract-data-fry
    tesseract-data-gla 45) tesseract-data-gle 46) tesseract-data-glg 47) tesseract-data-grc
    tesseract-data-guj 49) tesseract-data-hat 50) tesseract-data-heb 51) tesseract-data-hin
    tesseract-data-hrv 53) tesseract-data-hun 54) tesseract-data-hye 55) tesseract-data-iku
    tesseract-data-ind 57) tesseract-data-isl 58) tesseract-data-ita 59) tesseract-data-ita_old
    tesseract-data-jav 61) tesseract-data-jpn 62) tesseract-data-jpn_vert 63) tesseract-data-kan
    tesseract-data-kat 65) tesseract-data-kat_old 66) tesseract-data-kaz 67) tesseract-data-khm
    tesseract-data-kir 69) tesseract-data-kmr 70) tesseract-data-kor 71) tesseract-data-kor_vert
    tesseract-data-lao 73) tesseract-data-lat 74) tesseract-data-lav 75) tesseract-data-lit
    tesseract-data-ltz 77) tesseract-data-mal 78) tesseract-data-mar 79) tesseract-data-mkd
    tesseract-data-mlt 81) tesseract-data-mon 82) tesseract-data-mri 83) tesseract-data-msa
    tesseract-data-mya 85) tesseract-data-nep 86) tesseract-data-nld 87) tesseract-data-nor
    tesseract-data-oci 89) tesseract-data-ori 90) tesseract-data-pan 91) tesseract-data-pol
    tesseract-data-por 93) tesseract-data-pus 94) tesseract-data-que 95) tesseract-data-ron
    tesseract-data-rus 97) tesseract-data-san 98) tesseract-data-sin 99) tesseract-data-slk
    tesseract-data-slk_frak 101) tesseract-data-slv 102) tesseract-data-snd 103) tesseract-data-spa
    tesseract-data-spa_old 105) tesseract-data-sqi 106) tesseract-data-srp 107) tesseract-data-srp_latn
    tesseract-data-sun 109) tesseract-data-swa 110) tesseract-data-swe 111) tesseract-data-syr
    tesseract-data-tam 113) tesseract-data-tat 114) tesseract-data-tel 115) tesseract-data-tgk
    tesseract-data-tgl 117) tesseract-data-tha 118) tesseract-data-tir 119) tesseract-data-ton
    tesseract-data-tur 121) tesseract-data-uig 122) tesseract-data-ukr 123) tesseract-data-urd
    tesseract-data-uzb 125) tesseract-data-uzb_cyrl 126) tesseract-data-vie 127) tesseract-data-yid
    tesseract-data-yor

Enter a number (default=1): 30
looking for conflicting packages…
:: vlc-plugin-lua-3.0.23_2-7.1 and vlc-plugin-luajit-3.0.22-26 are in conflict. Remove vlc-plugin-luajit? [y/N] y

error: failed to prepare transaction (could not satisfy dependencies)
:: removing vlc-plugin-luajit breaks dependency ‘vlc-plugin-luajit’ required by vlc-luajit

:: vlc-plugin-lua-3.0.23_2-7.1 and vlc-plugin-luajit-3.0.22-26 are in conflict. Remove vlc-plugin-luajit? [y/N] n
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
:: vlc-plugin-lua-3.0.23_2-7.1 and vlc-plugin-luajit-3.0.22-26 are in conflict

I keep getting this, can’t seem to get it to resolved, its just going in circles.

You need to remove vlc-luajit.

( It is a foreign package. It may be OK with an update to it. But for now it is blocking the regular system upgrade. )

ex;

sudo pacman -Rns vlc-luajit

my first guess is we seems have big update now since i notice plasma been updated to 6.7 as well, to avoid conflict like this, and pottentially major breaking like few months ago, i advice wait for couple days, because the probability of our mirror repo is not fully sync, so maybe try it again in few days? unless you have an urgency to upgrade specific package .. you can remove the vlc-luajit first

I tried removing it but I always get a dependency error

❯ sudo pacman -Rns vlc-luajit
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing vlc-luajit breaks dependency 'vlc-luajit' required by obs-studio-browser

I got this above, then AI suggested this and it actually worked, after about 3 hours of working with ti

#!/bin/bash
echo “:red_circle: COMPLETE VLC FINAL CLEANUP”
echo “”
STEP 1: Remove vlc-plugin-luajit plugin (conflict source)

echo “=== Step 1: Removing conflicting LuaJIT plugin ===”
sudo pacman -Rns vlc-plugin-luajit || true
STEP 2: Clean orphaned dependencies

echo “”
echo “=== Step 2: Cleaning orphaned packages ===”
sudo pacman -Rcs $(pacman -Qdtq) || true
STEP 3: Remove version-locked package blocker

echo “”
echo “=== Step 3: Removing vlc-gui-qt (version-locked) ===”
sudo pacman -Rns vlc-gui-qt || true
STEP 4: Clean orphaned again after removal

echo “”
echo “=== Step 4: Cleaning remaining orphans ===”
sudo pacman -Rcs $(pacman -Qdtq) || true
STEP 5: Verify state BEFORE install

echo “”
echo “=== Step 5: Current VLC state ===”
pacman -Q | grep “^vlc” || echo “(No VLC core packages found)”
STEP 6: Sync repositories properly (no repo name listing needed!)

echo “”
echo “=== Step 6: Syncing all repositories ===”
sudo pacman -Syu
&& echo “:white_check_mark: Repositories synced!”
STEP 7: Install standard VLC with Lua plugin

echo “”
echo “=== Step 7: Installing standard VLC with Lua ===”
sudo pacman -S --needed vlc-plugin-lua
&& sudo pacman -S vlc
&& sudo pacman -S vlc-plugins-all
&& echo “:white_check_mark: Standard VLC installed!”
STEP 8: Final verification

echo “”
echo “=== Step 8: Verification ===”
pacman -Q | grep “^vlc” || echo “(No VLC found yet)”

pactree vlc-plugin-lua 2>/dev/null && echo “:white_check_mark: Standard Lua plugin working!” || true

echo “”
echo “=== Step 9: Conflict status ===”
pacman -Qtdq | grep lua || echo “:white_check_mark: No Lua conflicts detected!”

echo “”
echo “:tada: VLC CONFLICT RESOLVED — SYSTEM READY FOR FULL UPGRADE!”

I ran a system upgrade after this and it actually worked. I’m not a fan of AI in any way, but its great for this.

The current obs-studio-browser has no such dependency.
It does rely on luajit and vlc-plugin-lua.

Uhh..

You might want to check on what exactly was performed..

We almost never want to combine recursive and cascade and doing so can easily nab a huge amount of packages including critical ones.

..

You may or may not have gotten to an OK point but it would have been better to actually follow the line of dependencies instead of just pressing ‘go’ on an unknown-to-you but destructive sequence of commands output by a chatbot.

Really .. you should go looking in /var/log/pacman.log to make sure you didnt delete your desktop etc.

Looking for errors - I see some errors here and there

[2026-06-18T19:40:52-0700] [ALPM] warning: /etc/pacman.d/mirrorlist installed as /etc/pacman.d/mirrorlist.pacnew

[2026-01-28T19:45:45-0700] [ALPM] installed perl-error (0.17030-3)

[2026-01-29T19:01:38-0700] [ALPM] installed lib32-libgpg-error (1.58-1)

[2026-04-20T22:22:59-0700] [ALPM] reinstalled perl-error (0.17030-3)

[2026-01-28T19:41:44-0700] [ALPM] warning: directory permissions differ on /tmp/calamares-root-n4oir8hu/boot/, filesystem: 700  package: 755

Its not so much to look for ‘errors’ as it would not technically be one - the command was intentionally executed and ostensibly finished successfully.

You want to look for the time those commands were executed and look for which packages were all removed.

Of course we knew we needed to handle some old blocking packages (or some other method) for the upgrade to go through.

But the command suggested by the chatbot is not reliable and would have automatically selected groups of depending packages, recursively, up the chain, however far as necessary, while being greedy for optionals, to make the removal succeed. So if it needed to include wayland in that it would have. And so on. Because this was pointed at ‘orphans’ it may have ended up fine but combining cascade (c) and recursive (s) can have unexpected outcomes.

As for pacnew and permissions differences .. those are also things you may wish to handle but are separate from this thread.

May we please uncheck the Solution checkbox from this potentially system- breaking AI Slop code?

Because another AI might grab just that piece of info and regurgitate it to the next newbie who might just accidentally uninstall half their desktop with this.

The screenshot utility, Spectacle, now requires tesseract-data-(insert-language). I am not sure but have heard that the new KDE Plasma update added the requirement. I am not a fan of OCR being installed into my screenshot utility without some warning, I do get that it is likely intended as an feature enhancement, but it would have been nice to see a warning.

I added the following in /etc/pacman.conf:

IgnorePkg = spectacle

and everything was roses.

Was there some sort of warning or communication I missed… or do most people just not notice these things?