#!/bin/sh set -e catdir=/var/cache/man ensure_catdir () { if [ ! -d $catdir ]; then # Make sure the cat directory exists. install -d -o man -g man -m 0755 $catdir fi } run_mandb () { if [ ! -e /var/lib/man-db/auto-update ]; then return 0 fi # shellcheck disable=SC3043 local message="$1" shift [ "$message" ] && echo "$message" >&2 # start-stop-daemon isn't available when running from debootstrap. if command -v setpriv >/dev/null; then setpriv --reuid man --regid man --init-groups -- /usr/bin/mandb "$@" || true else # runuser isn't ideal here, because it starts a PAM session. # However, setpriv is only available on Linux. runuser -u man -- /usr/bin/mandb "$@" || true fi } if [ "$1" = triggered ]; then ensure_catdir # We don't print a status message here, as dpkg already said # "Processing triggers for man-db ...". run_mandb "" -pq exit 0 fi # shellcheck disable=SC1091 . /usr/share/debconf/confmodule db_version 2.0 [ "$1" = configure ] || exit 0 maybesetuid='man mandb' db_get man-db/install-setuid if [ "$RET" = true ]; then # man and mandb are to be installed setuid man. owner=man:man mode=6755 else # man and mandb are not to be installed setuid. owner=root:root mode=0755 fi for x in $maybesetuid; do # No statoverrides available or none exist for us ... if ! dpkg-statoverride --list "/usr/bin/$x" >/dev/null; then chown $owner "/usr/bin/$x" || true chmod $mode "/usr/bin/$x" fi done ensure_catdir # debconf forms the interface used to suppress man-db updates during # automatic package builds (see https://bugs.debian.org/554914), but we # cache that value in the file system to avoid having to use debconf when # processing triggers. db_get man-db/auto-update if [ "$RET" = true ]; then touch /var/lib/man-db/auto-update else rm -f /var/lib/man-db/auto-update fi build_db=0 if [ ! -f $catdir/index.db ]; then # Build the database from scratch on fresh installs. build_db=1 fi if [ $build_db -eq 1 ]; then # Chances are we're being run from debootstrap, which will have problems # if mandb runs backgrounded for too long (bug #100616). run_mandb "Building database of manual pages ..." -cq else # Otherwise, just update the database in the foreground. It's unlikely # to take very long, and configuration needs to cover everything that # happens when we're triggered. run_mandb "Updating database of manual pages ..." -pq fi #DEBHELPER# exit 0