-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
graceful handling of library upgrades #142
Comments
Good idea. I'm for it. |
I agree, it is really annoying. Your proposal could actually work. I think we should put them in /usr/lib/lunar/OBSOLETE to follow the lunar way of handling namespaces. I can create a branch and begin doing the changes required. |
Just a quick proof-of-concept. Working on the cleanup code now.
|
The new feature KEEP_OBSOLETE_LIBS is on by default. Libs with changed soname's will be automatically copied to /usr/lib/lunar/OBSOLETE. This makes it safe to lin modules again, or update modules that have not changed the lib version without ending up with duplicated libs in OBSOLETE. `lunar fix` will cleanup the OBSOLETE folder, but only if _ALL_ integrity checks pass. And only if `lunar fix` is executed without module arguments, e.g. `lunar fix module` will not clean OBSOLETE even if that module is fixed. The reason is that multiple modules may still depend on the OBSOLETE libs. TODO: fix so that only the LDD_CHECK need to pass for the cleanup function to execute.
The new feature KEEP_OBSOLETE_LIBS is on by default. Libs with changed soname's will be automatically copied to /usr/lib/lunar/OBSOLETE. This makes it safe to lin modules again, or update modules that have not changed the lib version without ending up with duplicated libs in OBSOLETE. `lunar fix` will cleanup the OBSOLETE folder, but only if _ALL_ integrity checks pass. And only if `lunar fix` is executed without module arguments, e.g. `lunar fix module` will not clean OBSOLETE even if that module is fixed. The reason is that multiple modules may still depend on the OBSOLETE libs. TODO: fix so that only the LDD_CHECK need to pass for the cleanup function to execute.
Wow! I didn't expect anyone to spring into action like that! 🚀 |
So the committed features do work as expected over here with a few known issues:
|
I just hit another issue with the patch that can send Going from xz 5.2.4 to xz 5.2.5:
Was the missing path in the |
This has gotten on my nerves dozen of times by now every time I do not manage to update for a while and end up with 30-100 packages to be updated.
Lunar does not preserve libraries, just because they are still used.
If a package is updated, libraries get overwritten and the old ones get removed, leaving downstream dependencies dangling with broken links.
Of course,
lunar fix
scans installed libraries for unresolved library dependencies and rebuilds affected packages.Still, I do not really see a problem if we handle this in a more graceful way.
I would propose to
/usr/lib*/OBSOLETE/
and add this folder to/etc/ld.so.conf
lunar fix
scan for libraries that resolve to this subfolder and treat them the same way we treatNot found
lunar fix
orlunar prune
could clean them.What do you think @Ratler @florin65 @dagbrown ?
The text was updated successfully, but these errors were encountered: