Bug #323

[chcleanup] Fails when a foreign version of a package has depends the repo version doesn't.

lukeshu - over 9 years ago - . Updated over 8 years ago.

% Done:



For example:

In my chroot, I have a libretools from [libre-testing], installed via `librechroot install-file libretools-*`, rather than enabling [libre-testing]. However, the following would still happen if I enabled [libre-testing] to install, but then disabled it.

So, I run `libremakepkg`, which runs `chcleanup`.

`chcleanup` querys the repos to find a list of all packages needed for `base-devel`.

What's interesting about this is that libretools on [libre] is not in base-devel, but the [libre-testing]/foreign version is in base-devel. It knows about the foreign version being in base-devel, so it keeps it installed, but it wants to downgrade to the version on [libre], so itonly includes the dependencies of the [libre] version. So, when it tries to remove "arch-install-scripts", "subversion", and "tokyocabinet", it fails because the installed version of libretools depends on them.

The "fix" for this might be to have `librechroot install-file` add the packages to the local repo, but I think it would be good for chcleanup to handle foreign packages properly.



Updated by lukeshu over 9 years ago

fixed in 20130514


Updated by lukeshu about 9 years ago

Actually not fixed as of 20130528. Thanks to alfplayer for providing a breaking case:

Enable [libre-testing]. Install libretools. Disable [libre-testing]. chcleanup will now fail because it will try to remove the deps that the [libre-testing] version of libretools has that the [libre] version doesn't.


Updated by lukeshu about 9 years ago

I'm still not sure what to do about this. Perhaps run `pacman -Qm`, and look for the related files in /var/cache/pacman/pkg, and add those to repo.db?


Updated by alfplayer about 9 years ago

I don't know if this is relevant, but just to clarify, about comment #3, libre-testing is disabled by default after librechoot make, so I couldn't have disabled it.


Updated by lukeshu about 9 years ago

alfplayer, about #5: It defaults to what your actual /etc/pacman.conf does. If it is disabled in /etc/pacman.conf, librechroot make will disable it by default. If it's enabled in /etc/pacman.conf, librechroot will enable it by default.

But if you didn't disable it, then why is the libre-testing version of libretools in your chroot?


Updated by alfplayer about 9 years ago

[libre-testing] has been enabled in the host's pacman.conf in the past weeks, so I guess it's unintended.


Updated by lukeshu about 9 years ago

I was mistaken. What I said is what it used to do, but now (unless the -C flag is used) it uses the pacman.conf from the pacman package.


Updated by lukeshu over 8 years ago

  • Status changed from open to fixed
  • Assignee set to lukeshu

I'm content with the solution of "there should be no foreign packages", and having everything be in [repo].

Also available in: Atom PDF