This is somehow related to my previous posts about the moduledb as the idea also arose when playing with kernel modules.
When installing modules for a new kernel I noticed that Paludis treated them as any other package and removed the old installs leaving my old kernel without the modules. Nothing really surprising here, just different than the portage behaviour. Wanting to avoid this in the future my first thought was just to add
/lib64/modules
to the CONFIG_PROTECT
, but after a second I realised it wasn't the best idea as I didn't want to review modules' changes when upgrading, I just wanted them to be not removed when uninstalling. Hence that it wasn't long until making an Unmerger Hook came to my mind./etc/paludis/hooks/uninstall_protect.hook:
#!/bin/bash UNINSTALL_PROTECT="/lib64/modules/" hook_run_unmerger_unlink_file_pre() { for PROTECT in ${UNINSTALL_PROTECT}; do if [[ "${UNLINK_TARGET}" == "${PROTECT}"* ]]; then mv "${UNLINK_TARGET}" "${UNLINK_TARGET}.protect" fi done } hook_run_unmerger_unlink_file_post() { if [[ -e "${UNLINK_TARGET}.protect" ]]; then mv "${UNLINK_TARGET}.protect" "${UNLINK_TARGET}" echo "protected '${UNLINK_TARGET}'" fi }
And two symlinks pointing at it:
/etc/paludis/hooks/unmerger_unlink_file_pre/uninstall_protect.hook -> ../uninstall_protect.hook
/etc/paludis/hooks/unmerger_unlink_file_post/uninstall_protect.hook -> ../uninstall_protect.hook
Thanks Piotr, Very handy. :-)
ReplyDeleteJust noticed yout second solution, which seems much nicer
ReplyDeletehttp://blog.piotrj.org/2007/05/uninstallprotect-in-paludis-2.html
You should check either the python version or better bash version of this hook.
ReplyDeleteI will add notes to these two posts.
ReplyDelete