[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How to migrate from /usr/doc to /usr/share/doc



On Tue, Sep 14, 1999 at 07:58:28PM +0200, Stefan Gybas wrote:
> if [ -d /usr/doc/libapache-mod-jserv -a \
>      ! /usr/doc/libapache-mod-jserv -ef
>        /usr/share/doc/libapache-mod-jserv ]; then
> 
>     rm -f /usr/doc/libapache-mod-jserv/.dhelp
>     rmdir --ignore-fail-on-non-empty /usr/doc/libapache-mod-jserv
> 
>     if [ -e /usr/doc/libapache-mod-jserv ]; then
>         cp -ab /usr/doc/libapache-mod-jserv /usr/share/doc
>         rm -rf /usr/doc/libapache-mod-jserv
>     fi
> 
>     ln -s /usr/share/doc/libapache-mod-jserv /usr/doc
> fi

I'd like to propose several changes:

[1] Don't specifically look at whether /usr/doc is a directory,
that's equivalent to testing for its existence and falls out of
some of the more specific tests.

[2] Do specifically test whether /usr/doc/libapache-mod-jserv
is a directory and is not a symlink.  That's the only case where
you need to handle specially.

[3] Use variables to make the code more readable.

[4] be slightly paranoid about your assumptions -- some people run
postinst scripts manually, sometimes these scripts die part way through
(maybe a disk got full) and have to be restarted.  [You don't have to
do anything wonderful for these cases -- just not hose anything.]

Here's how I'd write the executable part of your sh script fragment:

pkg=libapache-mod-jserv

old=/usr/doc/$pkg
new=/usr/share/doc/$pkg

if [ -d $old -a ! -h $old -a ! $old -ef $new ]; then
	rm -f $old/.dhelp
	rmdir --ignore-fail-on-non-empty $old
	if [ -e $old ]; then
		VERSION_CONTROL=t cp -ab $old $new/..
		rm -rf $old
	fi
	ln -s $new/$pkg /usr/doc
fi


I just hope we don't stumble on any more failure modes...

-- 
Raul


Reply to: