What | Removed | Added |
---|---|---|
CC | stefan.bruens@rwth-aachen.de |
It seems to be sufficient to install either kernel-devel or kernel-default-devel while having another version thereof installed: $> LANG=C zypper se -si kernel Loading repository data... Reading installed packages... S | Name | Type | Version | Arch | Repository --+----------------------+---------+--------------+--------+------------------ i | kernel-default | package | 4.8.4-1.2 | x86_64 | (System Packages) i | kernel-default | package | 4.8.3-1.1 | x86_64 | (System Packages) i | kernel-default | package | 4.8.6-1.1 | x86_64 | repo-oss i | kernel-default-devel | package | 4.8.4-1.2 | x86_64 | (System Packages) i | kernel-default-devel | package | 4.8.3-1.1 | x86_64 | (System Packages) i | kernel-default-devel | package | 4.8.6-1.1 | x86_64 | repo-oss i | kernel-devel | package | 4.8.4-1.2 | noarch | (System Packages) i | kernel-devel | package | 4.8.4-1.1 | noarch | (System Packages) i | kernel-devel | package | 4.8.3-1.1 | noarch | (System Packages) i | kernel-devel | package | 4.8.6-1.1 | noarch | repo-oss i | kernel-firmware | package | 20161005-1.1 | noarch | repo-oss i | kernel-macros | package | 4.8.6-1.1 | noarch | repo-oss i | kernel-source | package | 4.8.4-1.2 | noarch | (System Packages) i | kernel-source | package | 4.8.4-1.1 | noarch | (System Packages) i | kernel-source | package | 4.8.3-1.1 | noarch | (System Packages) i | kernel-source | package | 4.8.6-1.1 | noarch | repo-oss i | nfs-kernel-server | package | 1.3.4-3.1 | x86_64 | repo-oss for p in kernel-default kernel-default-devel ; do zypper in --force $p ; done $> sudo cat /var/log/zypper.log | egrep 'Checking for file|took [0-9]{3,9}|candidates now|\.rpm from' 2016-11-06 22:31:05 <1> pebbles.site(20719) [zypper] Summary.cc(readPool):281 package update candidates: 0 2016-11-06 22:31:05 <1> pebbles.site(20719) [zypper] Summary.cc(readPool):281 product update candidates: 0 2016-11-06 22:31:07 <1> pebbles.site(20719) [zypp++] MediaSetAccess.cc(provide):203 Going to try to provide file ./suse/x86_64/kernel-default-4.8.6-1.1.x86_64.rpm from media number 1 2016-11-06 22:31:54 <1> pebbles.site(20719) [zypp++] MediaSetAccess.cc(releaseFile):85 Going to release file ./suse/x86_64/kernel-default-4.8.6-1.1.x86_64.rpm from media number 1 2016-11-06 22:31:54 <1> pebbles.site(20719) [zypp] TargetImpl.commitFindFileConflicts.cc(commitFindFileConflicts):127 Checking for file conflicts in 1 new packages... 2016-11-06 22:31:55 <1> pebbles.site(20719) [libsolv++] PoolImpl.cc(logSat):119 filemap creation took 175 ms 2016-11-06 22:31:55 <1> pebbles.site(20719) [libsolv++] PoolImpl.cc(logSat):119 alias processing took 147 ms 2016-11-06 22:31:55 <1> pebbles.site(20719) [libsolv++] PoolImpl.cc(logSat):119 raw candidates: 15615, pruning 2016-11-06 22:31:55 <1> pebbles.site(20719) [libsolv++] PoolImpl.cc(logSat):119 candidates now: 26 2016-11-06 22:31:55 <1> pebbles.site(20719) [libsolv++] PoolImpl.cc(logSat):119 file conflict detection took 398 ms 2016-11-06 22:33:26 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 addfileprovides took 113 ms 2016-11-06 22:33:26 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 pkg rule creation took 139 ms 2016-11-06 22:33:26 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 solver_solve took 171 ms 2016-11-06 22:33:27 <1> pebbles.site(3976) [zypper] Summary.cc(readPool):281 package update candidates: 0 2016-11-06 22:33:27 <1> pebbles.site(3976) [zypper] Summary.cc(readPool):281 product update candidates: 0 2016-11-06 22:33:30 <1> pebbles.site(3976) [zypp++] MediaSetAccess.cc(provide):203 Going to try to provide file ./suse/x86_64/kernel-default-devel-4.8.6-1.1.x86_64.rpm from media number 1 2016-11-06 22:33:33 <1> pebbles.site(3976) [zypp++] MediaSetAccess.cc(releaseFile):85 Going to release file ./suse/x86_64/kernel-default-devel-4.8.6-1.1.x86_64.rpm from media number 1 2016-11-06 22:33:33 <1> pebbles.site(3976) [zypp] TargetImpl.commitFindFileConflicts.cc(commitFindFileConflicts):127 Checking for file conflicts in 1 new packages... 2016-11-06 22:33:34 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 filemap creation took 111 ms 2016-11-06 22:33:34 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 alias processing took 165 ms 2016-11-06 22:33:34 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 raw candidates: 51391, pruning 2016-11-06 22:33:34 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 candidates now: 12964 2016-11-06 22:33:56 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 file info fetching took 22310 ms 2016-11-06 22:33:56 <1> pebbles.site(3976) [libsolv++] PoolImpl.cc(logSat):119 file conflict detection took 22594 ms So after the "pruning" step (whatever that is), there are a lot of candidates left, each triggering a call to rpm_iterate_filelist. The calls to rpm_iterate_filelist are the actually expensive part. Maybe there should be an rpm_iterate_dirlist there, fetching directory names is significantly less expensive than fetching info for all files (assuming there are far less directories than files), and file conflicts can only happen if the sets of directories have a non-empty intersection. Another point that may be relevant here, at least the kernel-default-devel packages actually *have* a conflicting file - /usr/src/linux-obj/x86_64/default is a symlink to ./default, which gets modified in the postinstall scriptlet.