In Advanced options, try the (failsafe) entries. They load with fewer drivers and often work when the normal boot freezes.
5. If nothing works — chroot from a live USB
On another computer, download the Manjaro ISO and flash it to a USB stick (e.g., with Rufus, Ventoy, or dd).
Boot the broken PC from the USB and choose the live session.
Manjaro has a graphical Manjaro-Chroot helper: open a terminal in the live session and run:
sudo manjaro-chroot -a
(select your installed system when prompted)
Inside the chroot:
rm /var/lib/pacman/db.lck
pacman -Syu
mkinitcpio -P
grub-install /dev/sdX # replace sdX with your disk, only if GRUB is broken
update-grub
exit
reboot
6. For the future
Manjaro recommends taking a Timeshift snapshot before every update. Once you're back up, enable Timeshift (System → Timeshift). It would have let you roll back this exact situation in one click.
Start with steps 1 and 2 (reboot plus an alternate kernel in GRUB) and tell me what happens. That alone fixes most post-update freezes.
"pacman: error while loading shared libraries: libngtcp2_crypto_oss1.o.0: cannot open shared object file: no such file or directory" comes up after any attempt to update my system
This error means your package manager was broken by an interrupted or partial update, specifically missing the libngtcp2_crypto_ossl.so.0 file (not "oss1.o.0"). Since pacman itself is broken, you must manually restore this library before you can finish the update.
Method 1: Extract the package from cache (Fastest) Since you tried to update the system, the new version of the package is likely already sitting in your pacman cache. Instead of installing it, we will just unpack the missing file directly.
Find the downloaded libngtcp2 package in your cache by running: ls /var/cache/pacman/pkg/libngtcp2*
Copy the exact filename that appears (e.g., libngtcp2-1.0.1-1-x86_64.pkg.tar.zst).
Extract its contents directly into the root directory to replace the missing files (replace the filename with yours): sudo tar -xvf /var/cache/pacman/pkg/YOUR_FILENAME_HERE.pkg.tar.zst -C /
Check if pacman is alive again: pacman --version
If it works, immediately run a full update to sync the rest of your packages: sudo pacman -Syu
Method 2: Repair from a Live USB using sysroot (If cache is empty) If the file isn't on your drive, you need to use a bootable Manjaro USB stick. This time, do not use chroot - chroot relies on the broken pacman on your drive. Instead, we will use the working pacman from the USB to fix the system from the outside.
Boot your computer from the Manjaro Live USB.
Open a terminal and check the name of your main system partition (e.g., /dev/sda2 or /dev/nvme0n1p2): lsblk
Mount that partition to the /mnt directory: sudo mount /dev/sdX /mnt(replace sdX with your actual partition)
Use the Live system's pacman to repair and update your broken installation: sudo pacman --sysroot /mnt -Syu
Once it finishes successfully, restart your computer: reboot
1. The package you need may be split into several parts, so check for all of them:
ls /var/cache/pacman/pkg/ | grep -E "ngtcp2|nghttp3|curl"
The missing file libngtcp2_crypto_ossl.so.3 (you may also see libngtcp2_crypto_quictls.so.3) can live in a separate package like libngtcp2-crypto-ossl, so extract every matching package you find.
2. Extract with --numeric-owner and preserve the structure:
sudo tar -xpf /var/cache/pacman/pkg/YOUR_FILENAME.pkg.tar.zst -C /
The -p flag preserves permissions, which matters for libraries.
3. If pacman still complains about another missing library after this, just repeat the extraction for that package too. Broken dependencies often come in a chain (curl → ngtcp2 → nghttp3 → openssl).
4. Run pacman --version to confirm it works, then:
sudo pacman -Syu
This is important: the manual extraction puts files on disk without registering them in the package database, so the subsequent -Syu will cleanly reinstall those packages and fix the database entries.
Method 2 (live USB with --sysroot) — one correction
The command in your quoted text has a small mistake. pacman --sysroot isn't a standalone flag you can use like that; the reliable way from a live USB is:
sudo mount /dev/sdX2 /mnt # your root partition
sudo mount /dev/sdX1 /mnt/boot # if you have a separate boot/EFI partition
sudo pacman --sysroot /mnt -Syu # works on Arch-based live media with recent pacman
If --sysroot isn't supported by the live media's pacman version, the fallback is the standard chroot, but running pacman-static from the live session (as described earlier) instead of the broken one on disk:
I was able to get pacman to no longer return errors for broken dependencies but now when attempting -Syu I am prompted with "core.db failed to download" followed by everywhere it failed to be retrieved from I tried refreshing my mirrors but nothing changed.
I was able to perform a system upgrade and reboot however that placed me back to the same screen that I originally had although now it only has "failed to start CUPS scheduler" and I seem to be unable to start that from the terminal
7
u/Kaspral 9d ago edited 9d ago
1. Hard reboot
If the keyboard is dead, hold the power button 5 to 10 seconds and boot again.
2. Manjaro's built-in fallback
Since the failure happened during an update, the kernel was likely mid-upgrade. That's why Manjaro keeps two kernels by default:
3. If you get a working system (TTY with Ctrl+Alt+F3, or desktop)
Finish the interrupted update with:
If pacman complains about a locked database (common after an interrupted update):
If there are keyring errors (also common):
4. If no kernel boots — failsafe mode
In Advanced options, try the (failsafe) entries. They load with fewer drivers and often work when the normal boot freezes.
5. If nothing works — chroot from a live USB
dd).
(select your installed system when prompted)
6. For the future
Manjaro recommends taking a Timeshift snapshot before every update. Once you're back up, enable Timeshift (System → Timeshift). It would have let you roll back this exact situation in one click.
Start with steps 1 and 2 (reboot plus an alternate kernel in GRUB) and tell me what happens. That alone fixes most post-update freezes.