On 12/03/2018 13:22, Ken Brown wrote:
On 3/8/2018 4:59 PM, Ken Brown wrote:
On 3/8/2018 10:59 AM, Ken Brown wrote:
On 3/7/2018 4:52 PM, Ken Brown wrote:
On 3/6/2018 1:47 PM, Jon Turney wrote:
On 06/03/2018 15:18, Jon Turney wrote:
I've found another problem with local installs: If a package needs
upgrading, then the chooser will offer the upgraded version for
install, even if there's no archive available. As a result, the
current version will get uninstalled, and then setup will discover
that it doesn't have the archive to install the new version.
Thanks very much for finding this.
The problem occurs because packagedb::defaultTrust() is called
after ScanDownloadedFiles() has already done its work.
solution.update() and solution.trans2db() are called, and
pkg->desired is set equal to an inaccessible version pv (which has
been previously removed from pkg->versions).
I guess trans2db() should check that pv is in pkg->versions before
acting on an install transaction for pv. And then we also have to
make sure to ignore the erase transaction for the current version
of pkg.
Alternatively, can we just remove an inaccessible packageversion
from the libsolv pool, or at at least just tell libsolv that we
don't want to install it?
Attached is an attempt at that.
I think this is preferable, if it works correctly, as I think avoiding
solutions with these unavailable versions is better than trying to
massage the solution afterwards.