Bug #323
[chcleanup] Fails when a foreign version of a package has depends the repo version doesn't.
100%
Description
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.
History
Updated by lukeshu almost 11 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 almost 11 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 almost 11 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 almost 11 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 almost 11 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 almost 11 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 10 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].