Installing pacman breaks dependency replaced by yay

Even though I’ve been using Arch Linux for a few years now, from time to time, I
do run into small issues that are unique to Arch.

One such issue happened when I was trying to upgrade my system, only to be
blocked immediately with some sort of dependency mis-match between pacman and
my favorite Arch User Repository installer of the moment, yay.

Incidentally, I ran into this a while back, resolved it, and then forgot to
write a post about it. Fortunately, when I went to upgrade my old laptop, that
was over 700 packages behind, I ran into the same thing.

The full error message I was receiving when running yay -Syu was:

error: failed to prepare transaction (could not satisfy dependencies)
:: installing pacman (5.2.1-1) breaks dependency 'pacman<5.1.3' required by yay

As mentioned, this is a weird chicken and egg scenario where yay requires a
certain version of pacman and the system wants to upgrade pacman to a newer
version. Thus, yay blocks the upgrade because it would break it’s own
dependency.

I found some unique solutions out there to try to work around this, but since
it’s not very frequent of an issue, seeing as I only ran into it once in many
years, it seemed like the best solution would be to simply remove yay,
upgrade, then install yay again.

So that’s what I did.

Except this time around, I also ran into a similar issue with some other
packages:

error: failed to prepare transaction (could not satisfy dependencies)
:: installing xorgproto (2019.2-2) breaks dependency 'dmxproto' required by libdmx
:: installing xorgproto (2019.2-2) breaks dependency 'xfdgaproto' required by liblibxxf86dga

Before I could worry about getting pacman and yay playing nicely again, I
had to correct the aforementioned issues, by doing the following, which was
posted in the latest news on archlinux.org:

su -c 'pacman -Rdd libdmx libxxf86dga'

After running that, I was able to run the following to remove yay, upgrade the
system and then re-install yay manually from the Arch User Repository:

  1. Remove yay by running pacman -R yay.
  2. Upgrade the system using pacman by running su -c 'pacman -Syu'.
  3. Grab the latest PKGBUILD for yay by running curl -OJ 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=yay'.
  4. Build the package and install it by running makepkg -si.

Not much to it, and more than likely the last two commands are probably in your
shell history since they are the same steps to install yay on a system without
a wrapper for the Arch User Repository already installed.

Worth noting, there was a clever solution where you install yay-bin which gets
you a pre-compiled version of yay. Nothing wrong with that solution, but I
didn’t want to introduce another package when I didn’t have to.

Josh Sherman - The Man, The Myth, The Avatar

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.


If you found this article helpful, please consider buying me a coffee.