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

Re: Packages with documentation only in /usr/share/doc

>>"Ben" == Ben Collins <bcollins@debian.org> writes:

 Ben> You know you caould avoid all of the problems by moving all of /usr/doc/*
 Ben> to /usr/share/doc/* then "rmdir /usr/doc; ln -s share/doc /usr/doc".

        Actually. no. See below why that is a bad idea.

        I think one can indeed make the transition without dangling
 links; I am enclosing a postinst below this message; please point out
 errors and how it may fail.

 Ben> Note, the latest dpkg in potato/woody works with this setup flawlessly, I
 Ben> have 10 systems setup like this right now. This all thanks to the patch
 Ben> that avoids the problems that brought about the whole symlink solution
 Ben> (which should be dropped for woody, IMNHO).

        And all package that move old contents of /usr/doc/$package_name/
 to /usr/share/doc/$package_name/; and remove /usr/doc/$package_name/
 would chew up your /usr/share/doc directory. Those packages would be
 in strict conformace with policy.

        There is a reason we have a policy.

 tired of seeing the spectre of the old remove /usr/doc argument
 rising in mid freeze.
 When the government bureau's remedies don't match your problem, you
 modify the problem, not the remedy.
Manoj Srivastava   <srivasta@debian.org>  <http://www.debian.org/%7Esrivasta/>
1024R/C7261095 print CB D9 F4 12 68 07 E4 05  CC 2D 27 12 1D F5 E8 6E
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C

#! /bin/sh

# Abort if any command returns an error value 
set -e 

# This script is called as the last step of the installation of the 
# package.  All the package's files are in place, dpkg has already
# done its automatic conffile handling, and all the packages we depend
# of are already fully installed and configured.

# The following idempotent stuff doesn't generally need protecting 
# against being run in the abort-* cases.


# Ensure the menu system is updated
[ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus

case "$1" in
    # Configure this package.  If the package must prompt the user for
    # information, do it here.

    if [ -d /usr/doc -a ! -h /usr/doc ]; then
	# Well, we still need to handle this, at least for the time being
	if [   -d /usr/share/doc/$package_name ]; then
	    # So the new doc dir exists, goody
	    if [ -d /usr/doc/$package_name ]; then
		echo "Yikes! The old directory, /usr/doc/$package_name,"
		echo "has not ben removed! This is an error; attempting"
		echo "repairs."
		if [ -f /usr/doc/$package_name/.dhelp ]; then
		    rm -f /usr/doc/$package_name/.dhelp
		    rmdir --ignore-fail-on-non-empty /usr/doc/$package_name/
		if [ -f /usr/doc/$package_name/html/.dhelp ]; then
		    rm -f /usr/doc/$package_name/html/.dhelp
		    rmdir --ignore-fail-on-non-empty /usr/doc/$package_name/html/
		    rmdir --ignore-fail-on-non-empty /usr/doc/$package_name/
		if [ -d /usr/doc/$package_name ]; then
		    cat <<EOF 
Failed repairs. There are old files in /usr/doc/$package_name/ created
by you or another script. I can copy them over to the new location
/usr/share/doc/$package_name, if you wish, preserving your versions of
the files.  No files shall be over written, instead, backup versions
shall be created in /usr/share/doc/$package_name as needed.

Shall I copy the files over [Yn]?
		    read answer;
		    case answer in
			    echo "Not copying over, aborting";
			    exit 1;
			     cp -ab --backup=t \
				/usr/doc/$package_name  \
				    /usr/share/doc/$package_name/.. ;
			    rm -rf /usr/doc/$package_name;
            if [ -e /usr/doc/$package_name ]; then
                echo "/usr/doc/$package_name exists, but is not a directory"
                if [ -L /usr/doc/$package_name ]; then
                    echo "it is a symbolic link, overwriting"
                    ln -sf ../share/doc/$package_name /usr/doc/$package_name
                    echo "This is an error. Aborting"
                    exit 1
            # File unexists. Free to go ahead and create link
	    ln -sf ../share/doc/$package_name /usr/doc/$package_name
    # create the icons that the web server sues to serve pages
    ( cd /var/www/usr/share/$package_name/icons;
      cp -pf /usr/share/$package_name/icons/* . )

    # the former shall exist if teTeX does, if the ls-R file does not
    # exist, then probably teTeX is being installed too, and will run
    # texhash
    if [ -x /usr/bin/texhash -a -e /usr/share/texmf/ls-R ]; then

    # There are three sub-cases:
    if test "${2+set}" != set; then
      # We're being installed by an ancient dpkg which doesn't remember
      # which version was most recently configured, or even whether
      # there is a most recently configured version.

    elif test -z "$2" -o "$2" = "<unknown>"; then
      # The package has not ever been configured on this system, or was
      # purged since it was last configured.

      # Version $2 is the most recently configured version of this
      # package.

    fi ;;
    # Back out of an attempt to upgrade this package FROM THIS VERSION
    # to version $2.  Undo the effects of "prerm upgrade $2".

    if test "$2" != in-favour; then
      echo "$0: undocumented call to \`postinst $*'" 1>&2
      exit 0
    # Back out of an attempt to remove this package, which was due to
    # a conflict with package $3 (version $4).  Undo the effects of
    # "prerm remove in-favour $3 $4".

    if test "$2" != in-favour -o "$5" != removing; then
      echo "$0: undocumented call to \`postinst $*'" 1>&2
      exit 0
    # Back out of an attempt to deconfigure this package, which was
    # due to package $6 (version $7) which we depend on being removed
    # to make way for package $3 (version $4).  Undo the effects of
    # "prerm deconfigure in-favour $3 $4 removing $6 $7".

  *) echo "$0: didn't understand being called with \`$1'" 1>&2
     exit 0;;

if command -v install-docs >/dev/null 2>&1; then
  install-docs -i /usr/share/doc-base/latex2html

exit 0

Reply to: