[rock-devel] RFC: postinstall scripts
stefan.fiedler at students.jku.at
Sat Apr 16 20:09:42 CEST 2005
Am Donnerstag 14 April 2005 21:15 schrieb Clifford Wolf:
> I can't find the proposal on the list - so here it is (again, or the first
> time - I'm not sure... ;-)
> Whenever 'mine' runs, it writes a logfile in
> where <id> is a automatically generated unique id. The logfile has the same
> format as the flist files and so contains the package name and filename of
> every file touched (removed, added or modified) by mine.
> The shell-script 'postinstall' (installed in /usr/sbin) sets some shell
> functions and then sources all files in the /etc/postinstall.d directory.
> The shell functions defined by 'postinstall' can be used to check if files
> matching a pattern are contained in the liggering postinstall logfiles.
> That way e.g. glibc can install a postinstall which runs ldconfig whenever
> files matching '.*\.so' are removed, added or modified. After all
> postinstall scripts are executed, the files in /var/adm/postinstall are
> When the option -a is passed to 'postinstall', the check function always
> returns true and so forces all the postinstall scripts to do everything
> they can do. This is e.g. usefull when packages are installed manually.
> The files in /var/adm/postinstall aren't touched in this mode.
> The 'rocket' script would run 'postinstall' automatically after installing
> or removing packages. The 'mine' command itself wouldn't run 'postinstall'.
> "You can now flame me, I am full of love" ;-)
> - clifford
I think it's a good idea.
As you mentioned packages can't simply have postremove scripts, because they
would be removed together with each package.
'postinstall' could check for postremove scripts in the /var/adm/postinstall/*
logfiles, and copy installed or modified postremove scripts to a separate
directory. If a package and its postremove script are removed 'postinstall'
would run the copy of this script and (without the -a option) remove the
copy. With the -a option given 'postinstall' would have to check if a
postremove script was really removed before it runs the copy.
Hope that helps,
More information about the rock-devel