Bug 215445

Summary: skipping unreachable packages does not work
Product: [openSUSE] openSUSE 10.2 Reporter: Olaf Hering <ohering>
Component: InstallationAssignee: Duncan Mac-Vicar <dmacvicar>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Blocker    
Priority: P5 - None CC: andreas.hanke
Version: Beta 1   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Found By: Development Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: bug215445.tar.bz2
YaST2 logfiles
Testing material

Description Olaf Hering 2006-10-26 19:30:12 UTC
I copied 10.2b1 CD1 to a nfs share to test some installer bugfixes. CD2+ are not available.
Once yast tried to access cd2, it offered OK, Abort and Skip. I tried skip a few times to finish the install anyway. Maybe I accidently clicked on abort, but after a few packages yast disappeared without finalizing the install. A bootloader was not configured etc etc.
Comment 1 Olaf Hering 2006-10-26 19:32:31 UTC
Created attachment 102762 [details]
bug215445.tar.bz2
Comment 2 Andreas Hanke 2006-10-27 01:25:00 UTC
Indeed, it doesn't work. Tested with:

yast2-packager-2.13.157-2
yast2-pkg-bindings-2.13.100-4

Bug 181658 claims to have this fixed in yast2-pkg-bindings-2.13.100 and yast2-packager-2.13.155, but it's obviously not true.

I simulated a broken repository, and this is the result - exactly the same as before the fix:

2006-10-27 03:08:27 <5> linux-lebr(21194) [base] Exception.cc(log):94 PackageProvider.cc(providePackage):91 RETHROW:  SourceProvideFile.cc(provideFile):135: File /usr/src/packages/RPMS/i586/C-1-1.i586.rpm fails integrity check. Expected: [sha1-ca840e86b95bee699e38928e28a20761389b97e2] Got: [sha1-da39a3ee5e6b4b0d3255bfef95601890afd80709]
2006-10-27 03:08:27 <3> linux-lebr(21194) [wfm] Package.cc(PkgCommit):2153 Pkg::Commit has failed: ZYpp::commit has failed
2006-10-27 03:08:27 <3> linux-lebr(21194) [YCP] PackageInstallation.ycp:154 Bad media number 0

It stops at that point and omits all the dependent packages.

I _really_ hope that this is not a feature, because it will break installations as it did with 10.1.

(And no, I did not click "abort", not even "maybe")
Comment 3 Olaf Hering 2006-10-27 06:10:45 UTC
after the first 'skip' yast shows a popup 'finishing installation', then yast quits.
Comment 4 Lukas Ocilka 2006-10-27 10:43:33 UTC
clients/inst_rpmcopy.ycp:840 Called YaST client returned: `abort
clients/inst_system_analysis.ycp:457 Called YaST client returned: `finish
clients/installation_worker.ycp:432 ProductControl::Run() returned `next
clients/installation_worker.ycp:530 Pkg Builtin called: SourceFinishAll

Hmm, I seems that the installation was really aborted...
Comment 5 Andreas Hanke 2006-10-27 16:55:04 UTC
Raising to Blocker because I already know that this will - again - break installations as it did with 10.1 already.

It's reproducible in the following way:

- Create a YUM repo with A depending on B, B depending on C etc., until G
- Modify C after the metadata have been generated, to simulate a read error
- Use sw_single, select A for installation, it will pull in all dependencies
- Do the installation. It will install G, F, E, and D. As soon as it tries to install C, it will inform you about the read error.
- Select IGNORE. But what it will actually do is: ABORT.

Expected result: IGNORE means IGNORE, so it should go on with B and A.

Actual result: IGNORE is taken as ABORT, the installation is still completely cancelled because of one failed package, and it does not even run SuSEconfig afterwards. During a "real" system installation or upgrade, it would probably even leave the hard disk in a mess etc.

It seems that the fix of bug 181658 just doesn't work. This is unfixable after the release because it breaks initial installation => Blocker
Comment 6 Andreas Hanke 2006-10-27 16:56:07 UTC
Created attachment 102863 [details]
YaST2 logfiles
Comment 7 Andreas Hanke 2006-10-27 16:59:58 UTC
Created attachment 102864 [details]
Testing material

Install "A" from here to reproduce (or even use it as an AddOn-source during installation to see how it breaks the entire installation)
Comment 8 Duncan Mac-Vicar 2006-11-02 15:20:00 UTC
We sat down with Michael to track down this bug. It is not easy to fix due to some broken provideFile semantics.

provideFile, offers the user to abort, retry and ignore, without having any semantics for those actions.

Anyway, we found a bug where the context information was lost in a exception catch, fixing this makes commit finish the installation.

Note, inmediately after skiping a package the rest fail due to dependencies, so they are retried with --nodeps. There is no progress bar anymore, and you have to wait till commit tries to do whatever it can, with no guarantees of a broken system.

As Michael said, never expect things to finish if you skip glibc.
Fix in zypp r4469.

Thanks Andreas for the quality of the bugreport, especially your testing material.