Enabled 'particle-install' option breaks upgrade

Bug #1071000 reported by Lukasz Kies on 2012-10-24
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
poldek
Undecided
Unassigned
PLD Linux
Undecided
Unassigned

Bug Description

Enabled 'particle-install', which is on by default on Th, breaks upgrade using current main, ready and test repository.
Using '--test' shows that everything is ok and there will be no errors.

poldek:/all-avail> upgrade * --test
Processing dependencies...
SysVinit-tools-2.88-7.x86_64 obsoleted by SysVinit-tools-2.88-9.x86_64
coreutils-8.16-1.x86_64 obsoleted by coreutils-8.19-1.x86_64
libuuid-2.21.2-3.x86_64 obsoleted by libuuid-2.22.1-1.x86_64
libblkid-2.21.2-3.x86_64 obsoleted by libblkid-2.22.1-1.x86_64
util-linux-2.21.2-3.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
eject-2.1.5-4.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
libmount-2.21.2-3.x86_64 obsoleted by libmount-2.22.1-1.x86_64
mount-2.21.2-3.x86_64 obsoleted by mount-2.22.1-1.x86_64
fsck-2.21.2-3.x86_64 obsoleted by fsck-2.22.1-1.x86_64
There are 8 packages to install, 9 to remove:
I SysVinit-tools-2.88-9.x86_64 coreutils-8.19-1.x86_64 fsck-2.22.1-1.x86_64 libblkid-2.22.1-1.x86_64 libmount-2.22.1-1.x86_64 libuuid-2.22.1-1.x86_64
I mount-2.22.1-1.x86_64 util-linux-2.22.1-1.x86_64
R SysVinit-tools-2.88-7.x86_64 coreutils-8.16-1.x86_64 eject-2.1.5-4.x86_64 fsck-2.21.2-3.x86_64 libblkid-2.21.2-3.x86_64 libmount-2.21.2-3.x86_64
R libuuid-2.21.2-3.x86_64 mount-2.21.2-3.x86_64 util-linux-2.21.2-3.x86_64
This operation will use 2.0MB of disk space.
Need to get 5.8MB of archives (231.6KB to download).

poldek:/all-avail> upgrade *
Processing dependencies...
SysVinit-tools-2.88-7.x86_64 obsoleted by SysVinit-tools-2.88-9.x86_64
util-linux-2.21.2-3.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
coreutils-8.16-1.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
eject-2.1.5-4.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
error: fileutils is required by installed rc-scripts-0.4.5.4-2.x86_64, give up
Installing set #2
Processing dependencies...
coreutils-8.16-1.x86_64 obsoleted by coreutils-8.19-1.x86_64
  orphaned gksu-2.0.2-2.x86_64 marks util-linux-2.22.1-1.x86_64 (cap /bin/su)
   util-linux-2.21.2-3.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
   eject-2.1.5-4.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
libblkid-2.21.2-3.x86_64 obsoleted by libblkid-2.22.1-1.x86_64
libmount-2.21.2-3.x86_64 obsoleted by libmount-2.22.1-1.x86_64
fsck-2.21.2-3.x86_64 obsoleted by fsck-2.22.1-1.x86_64
libuuid-2.21.2-3.x86_64 obsoleted by libuuid-2.22.1-1.x86_64
   util-linux-2.22.1-1.x86_64 marks SysVinit-tools-2.88-9.x86_64 (cap SysVinit-tools >= 2.88-9)
    SysVinit-tools-2.88-7.x86_64 obsoleted by SysVinit-tools-2.88-9.x86_64
There are 7 packages to install (2 marked by dependencies), 8 to remove:
I coreutils-8.19-1.x86_64 fsck-2.22.1-1.x86_64 libblkid-2.22.1-1.x86_64 libmount-2.22.1-1.x86_64 libuuid-2.22.1-1.x86_64
D SysVinit-tools-2.88-9.x86_64 util-linux-2.22.1-1.x86_64
R SysVinit-tools-2.88-7.x86_64 coreutils-8.16-1.x86_64 eject-2.1.5-4.x86_64 fsck-2.21.2-3.x86_64 libblkid-2.21.2-3.x86_64 libmount-2.21.2-3.x86_64
R libuuid-2.21.2-3.x86_64 util-linux-2.21.2-3.x86_64
This operation will use 2.0MB of disk space.
Need to get 5.5MB of archives.
Proceed? [Y/n] y
Executing sudo /bin/rpm --upgrade -vh --root /...
error: Failed dependencies:
 libmount = 2.21.2-3 is needed by (installed) mount-2.21.2-3.x86_64
Installing set #3
Processing dependencies...
mount-2.21.2-3.x86_64 obsoleted by mount-2.22.1-1.x86_64
mount-2.22.1-1.x86_64 marks libmount-2.22.1-1.x86_64 (cap libmount = 2.22.1-1)
 libmount-2.21.2-3.x86_64 obsoleted by libmount-2.22.1-1.x86_64
 libmount-2.22.1-1.x86_64 marks libblkid-2.22.1-1.x86_64 (cap libblkid = 2.22.1-1)
  libblkid-2.21.2-3.x86_64 obsoleted by libblkid-2.22.1-1.x86_64
    greedy upgrade util-linux-2.21.2-3.x86_64 to 2.22.1-1.x86_64 (unresolved libblkid = 2.21.2-3)
     util-linux-2.21.2-3.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
     coreutils-8.16-1.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
     eject-2.1.5-4.x86_64 obsoleted by util-linux-2.22.1-1.x86_64
error: fileutils is required by installed rc-scripts-0.4.5.4-2.x86_64, give up
error: libmount-2.22.1-1.x86_64: req libblkid.so.1()(64bit) not found
error: libmount-2.22.1-1.x86_64: req libblkid.so.1(BLKID_1.0)(64bit) not found
error: libmount-2.22.1-1.x86_64: req libblkid.so.1(BLKID_2.15)(64bit) not found
error: libmount-2.22.1-1.x86_64: req libblkid.so.1(BLKID_2.17)(64bit) not found
error: mount-2.22.1-1.x86_64: req libmount.so.1(MOUNT_2.22)(64bit) not found
There were errors

Lukasz Kies (kiesiu) wrote :
Marcin Banasiak (megabajt) wrote :

Could you reproduce it and attach log from running "POLDEK_TRACE=1 poldek"?

Lukasz Kies (kiesiu) wrote :

Attached log with POLDEK_TRACE=1
Cut off loading packages list.

Cactus (uzi18) wrote :

in function: int i3_do_poldek_ts_install(struct poldek_ts *ts) (install.c)

...
    /* tests make sense on whole set only */
    else if (ts->getop_v(ts, POLDEK_OP_TEST, POLDEK_OP_RPMTEST, 0))
        ts->setop(ts, POLDEK_OP_PARTICLE, 0);
...

So what is best? To add option for install command --at-once or to change behavior of test? ;)

Paweł Sikora (pluto-pld-linux) wrote :

i'm expecting the same behaviour of 'install' and 'install --test' and this what we currently see is a bug in particle-install-split-algorithm.

Cactus (uzi18) wrote :

Megabajt: what do You think about it?

Marcin Banasiak (megabajt) wrote :

I think that it's not a problem with --test mode, but with depsolver.

In set #1 poldek should mark coreutils-8.19-1.x86_64,

In set #2 it doesn't mark mount for upgrade whereas it should. Unfortunately, I can't reproduce this locally, but I see in trace output that poldek claims that libmount is satisfied by db:

PROCESS mount-2.21.2-3.x86_64 as ORPHAN
: i3_process_orphan_requirements() mount-2.21.2-3.x86_64 as ORPHAN (nreqs=1)
: process_orphan_req() mount-2.21.2-3.x86_64, req: libmount = 2.21.2-3 (libmount = 2.21.2-3)
: i3_find_req() libmount = 2.21.2-3 not found (0 candidate(s), best=none)
: - satisfied by db
  libmount = 2.21.2-3: satisfied by db
: i3_process_orphan() END PROCESSING mount-2.21.2-3.x86_64 as ORPHAN

whereas it shouldn't according to i3_pkgdb_match_req() ("libmount = 2.21.2-3" is in ictx->unset and should be excluded from results). Below is shown how correct trace should look like:

PROCESS mount-2.21.2-3.x86_64 as ORPHAN
: i3_process_orphan_requirements() mount-2.21.2-3.x86_64 as ORPHAN (nreqs=1)
: process_orphan_req() mount-2.21.2-3.x86_64, req: libmount = 2.21.2-3 (libmount = 2.21.2-3)
: try_to_upgrade_orphan() mount-2.21.2-3.i686 req: libmount = 2.21.2-3 (satisfied=no)
: select_successor() mount-2.21.2-3.x86_64 (c=1)
: - 0. mount-2.22.1-1.x86_64 -> color 2, score 110
: select_successor() RET mount-2.22.1-1.x86_64 (for mount-2.21.2-3.x86_64)
: find_successor() successor of mount-2.21.2-3.x86_64 is mount-2.22.1-1.x86_64, marked=no
: try_to_upgrade_orphan() - mount-2.22.1-1.x86_64: upgrading orphan (upgrade resolves req)

Cactus (uzi18) wrote :

kiesiu : could You provide us rpm database folder with this problem to reproduce?

Lukasz Kies (kiesiu) wrote :
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers