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.
manoj
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.
package_name=latex2html
# Ensure the menu system is updated
[ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus
case "$1" in
configure)
# 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/
fi
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/
fi
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]?
EOF
read answer;
case answer in
[Nn]*)
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;
esac
fi
fi
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
else
echo "This is an error. Aborting"
exit 1
fi
fi
# File unexists. Free to go ahead and create link
ln -sf ../share/doc/$package_name /usr/doc/$package_name
fi
fi
# 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
texhash
fi
# 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.
:
else
# Version $2 is the most recently configured version of this
# package.
:
fi ;;
abort-upgrade)
# Back out of an attempt to upgrade this package FROM THIS VERSION
# to version $2. Undo the effects of "prerm upgrade $2".
:
;;
abort-remove)
if test "$2" != in-favour; then
echo "$0: undocumented call to \`postinst $*'" 1>&2
exit 0
fi
# 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".
:
;;
abort-deconfigure)
if test "$2" != in-favour -o "$5" != removing; then
echo "$0: undocumented call to \`postinst $*'" 1>&2
exit 0
fi
# 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;;
esac
if command -v install-docs >/dev/null 2>&1; then
install-docs -i /usr/share/doc-base/latex2html
fi
exit 0
Reply to: