====== Running ldconfig in RPM %post scripts ====== I tripped over this today. I had a RPM file that included a run of ''/sbin/ldconfig'' in its ''%post'' section. This has been fine for months. And then it wasn't fine any more. Someone did a downgrade. The trouble here is that ''%post'' is run **before** the now unused files from the outgoing package are removed. To illustrate the trouble this can cause, consider this scenario. Package ''foo-1.2'' includes ''libfoo.so.1.2.''. This is referenced as ''libfoo.so.1''. All fine and normal so far. But in ''foo-1.3'', the library is updated to ''libfoo.so.1.3''. Install foo-1.3, and the library is updated and everything works. Now downgrade back to ''foo-1.2''. ''foo-1.2'' is installed, its contents unpacked, and its ''%post'' runs ''ldconfig''. Because the old files are not removed, ''ldconfig'' creates ''libfoo.so.1'' as pointing to the latest actual library, which at this stage is still ''libfoo.so.1.3''. ''%post'' completes, and the outgoing package files are then deleted and its ''%postun'' run. Suddenly that ''libfoo.so.1'' link is dangling. The only solution I've found so far is to also run ''ldconfig'' in the outgoing package ''%postun'' section.