Bug 238770

Summary: linker errors on upgrade / provide libraries with different linker names for backward compatibility
Product: [openSUSE] SUSE Linux 10.1 Reporter: Elmar Stellnberger <estellnb>
Component: libzyppAssignee: Klaus Kämpf <kkaempf>
Status: RESOLVED WONTFIX QA Contact: Klaus Kämpf <kkaempf>
Severity: Major    
Priority: P5 - None    
Version: Final   
Target Milestone: ---   
Hardware: i686   
OS: SuSE Linux 10.1   
Whiteboard:
Found By: Customer Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: zmd logs of gnome update

Description Elmar Stellnberger 2007-01-25 15:15:45 UTC
It is a permanent problem that several applications will have to be removed on updates due to unresolved dependencies. This could be improved easily by providing different linker versions of the same library instantaneously. Update packages within the same distribution could carry along elder linker versions of the upgraded library. Otherwise I would suggest a 'reduced' installation mode for just installing the dynamic library binaries so that multiple linker versions of the same library can coexist as part of different rpms at the same time.

  Sometimes the package managment system does not recognize that a library update will break a dependency and refrains from removing dependent applications:
> gedit
gedit: error while loading shared libraries: libgailutil.so.17: cannot open shared object file: No such file or directory
elm:~> locate libgailutil.so
/opt/gnome/lib/libgailutil.so
/opt/gnome/lib/libgailutil.so.18
/opt/gnome/lib/libgailutil.so.18.0.1

  In such a case (good luck) I can manually unload libgailutil.so.17:
> cd /
> rpm2cpio /media/dvd/suse/i586/gail-1.8.8-15.i586.rpm|cpio -iv '*.so.*'
> ldconfig
'reduced' installation outside the rpm database

  Sometimes even worse the library interface becomes subject to incompatible changes without assigning a new linker name. So it happened to the set/longjmp functions of /lib/libc.so.6 between SuSE-10.0 and SuSE-10.1. As a consequence of this all Modula-3 related programs crash on startup under SuSE-10.1 instead of returning a linker error. 
example: cvsup-16.1h-175.i586.rpm
see also: Modula-3 Mailing list 11.01.2007
Why is it not called /lib/libc.so.7?
Comment 1 Elmar Stellnberger 2007-01-25 15:27:09 UTC
Created attachment 115109 [details]
zmd logs of gnome update
Comment 2 Elmar Stellnberger 2007-01-25 15:31:21 UTC
It would be a nice thing if it was possible to decide whether to keep or uninstall packages which have dependencies which conflict with the intended updates:
i.e. to find out about the packages causing the conflict and to automatically unselect them for the next update run if the user wishes this.
Comment 3 Elmar Stellnberger 2007-01-25 15:34:15 UTC
*** Bug 238767 has been marked as a duplicate of this bug. ***
Comment 5 Klaus Kämpf 2007-01-29 11:21:27 UTC
Older library versions are provided as '-compat' packages. However, we cannot do this generally because its a huge effort.

Keeping older library versions installed will break in most cases, since other (dependant) libraries have changed too.

If needed, the openSuSE build service could provide means to have older library packages.

In the above example (gedit), please run "rpm -V gedit" to check if the gedit package reports any broken depenencies.

The glibc package is controlled by upstream maintainers and the LSB project. You might report it as a separate bug, but there's not much we can do about it.

-> closing as 'cantfix' (regrettably, bugzilla only offers 'wontfix')