[Wiki] What To Do When You Can't Update With Pacman

I cannot update — What should I do?

An example of how the first method in the video has fixed issues can be found here: Error during pacman update. How to solve? - #4 by dalto


This wiki is a work-in-progress. Only proceed to the second method if you know what you are doing. Otherwise ask questions.


First Method (Recommended)

Is it an AUR/foreign package? It probably is.

Run “checkrebuild”. If you don’t have it installed, run

sudo pacman -S rebuild-detector

This should also set up an automatic hook which runs every time you do a system update.

Once the packages are shown, rebuild them from scratch.

Note: Rebuild Detector may not be needed because issues like these are usually caused by foreign/AUR packages. Running “pacman -Qm” is usually enough to locate the offending packages.


Second Method (For Foreign Pacakges)

Based on the video, you would remove the package stopping you from updating, do your update, then reinstall the package, if necessary.

Before doing this, please make note of Dalto’s warning (edited for clarity):

This warning is not said in the same exact way in the video, but it is there when he says, “if you are really really sure” at about 1 min 50 sec.

I will pretty much just write out the important parts in the video, because it technically covers everything you need to do and be aware of. As with everything, exercise caution and ask questions if you are unsure.


Ways to tell if a package is needed by others:

  1. You installed it explicitly — meaning you looked for and knowingly installed it yourself
  2. In a terminal run: pacman -Qi packageName OR yay -Qi packageName or, as mentioned in the comments, yay -Sii packageName

Example:

yay -Sii qt5-webkit
Repository                    : aur
Name                          : qt5-webkit
Version                       : 5.212.0alpha4-23
Description                   : Classes for a WebKit2 based implementation and a new QML API
URL                           : https://github.com/qtwebkit/qtwebkit
Licenses                      : LGPL2.1
Groups                        : None
Provides                      : None
Depends On                    : qt5-location  qt5-sensors  qt5-webchannel  libwebp  libxcomposite
                                gst-plugins-base  hyphen  woff2  glibc  gcc-libs  glib2  zlib
                                libx11  sqlite  gst-plugins-base-libs  libjpeg-turbo  icu  libpng
                                gstreamer  libxml2  qt5-base  qt5-declarative  libicuuc.so
                                libicui18n.so
Optional Deps                 : gst-plugins-good
Make Deps                     : cmake  ruby  gperf  python  qt5-doc  qt5-tools
Check Deps                    : None
Conflicts With                : None
Replaces                      : None
AUR URL                       : https://aur.archlinux.org/packages/qt5-webkit
First Submitted               : Mon 21 Nov 2022 02:42:49 AM EST
Keywords                      : None
Last Modified                 : Fri 17 May 2024 01:56:30 PM EST
Maintainer                    : FabioLolix
Popularity                    : 2.119204
Votes                         : 38
Out-of-date                   : No
ID                            : 1472175
Package Base ID               : 187878
Package Base                  : qt5-webkit
Snapshot URL                  : https://aur.archlinux.org/cgit/aur.git/snapshot/qt5-webkit.tar.gz

If I had this package installed, I would look for a line that says

Required By     : packageName

You may also want to look for whether the package was explicitly installed or installed as a dependency by checking for the line below:

Install Reason  : Installed as a dependency for another package

That said, this method may not be practical for everyone, because uninstalling all the packages then reinstalling them can take some time, especially if your internet is not so fast (and you don’t have the package in your cache or need to rebuild it).

Furthermore, as mentioned in the comments below, it should be avoided if the package comes from the official Arch repos, especially since official packages are unlikely to have such conflicts.
These are usually resolved by pacman anyway by asking you which package to keep/replace.

Note: A package can still be marked as explicitly installed if it is part of your distro’s installation, or in some other cases.

4 Likes

You should really only do this for AUR packages. With repo packages, this is probably an indication of something else being wrong and should address that issue before proceeding. If you uninstall things and force the update through, you could put your self in a worse position than when you started.

3 Likes

I get what you mean, though I don’t see it as an AUR-only thing. It’s why I said it’s not practical to do for everyone, because I started to think about users who may have a “million packages” installed, and how difficult or even impossible it would be.

Anyway, what amendments do you think I should make to the original post, to ensure people take the right steps?

Gonna turn it into a Wiki, so others with the knowledge can just edit it.

Unless you have added 3rd party repos, packages from the repos shouldn’t block one another. If they do, that it is often an indicator that the repos are in an inconsistent state. Hacking away at your packages to get an update working in that state isn’t a good general practice. Instead, you should identify the cause of the issue or get help from someone who can.

I would only remove packages that are in AUR or a 3rd party repo. Otherwise, only if you are sure that removing the package is the right thing to do and you understand why that is the case.

4 Likes

I agree with Dalto - I know, surprise.

As Dalto said official packages should never clash in that way. Either something is wrong with the local installation, or it is a general issue and will be addressed by the Arch maintainers. Just waiting for an hour might “fix it”.

Uninstalling a package isn’t sound advice. The first check should be Installed From - i.e. is an official package. Also don’t trust the state of your local installation, ask upstream with Sii instead of Qi too.

And with that information the decision tree may go into different directions. Maybe the package doesn’t exist anymore, was replaced, changed dependencies for a different package, …

Usually pacman/yay/paru/… provide all the information necessary to navigate through those issues, and uninstalling the offending package could be the conclusion for several reasons, but that should only be done after consideration and understanding the particular situation. I don’t think it can be generalized into a good wiki advice.

2 Likes

Nice explanation of why I should use -Sii instead of -Qi because though the output is different, the only thing I noticed was that it showed packages that aren’t installed as well, rather than only my installed packages.

But this part can be particularly useful to know when making a decision.

Now, gotta figure out how to re-word things to make it clear that removing a package, especially one from the official repos, is a last resort. Will obviously need to add the other troubleshooting steps before that. :thinking:

Care to add some initial steps? I think you can edit it, if that’s how wikis work.