preinst is in pcp 3.10.8build1.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | #!/bin/sh -e
#
# The goal here is to collect PCP configuration files from places
# they may have been stashed away in previous versions
#
# The new place ... this should match the setting in /etc/pcp.conf
#
PCP_SYSCONF_DIR=/etc/pcp
# and same here ...
#
PCP_LOG_DIR=/var/log/pcp
[ -d "$PCP_LOG_DIR" ] || mkdir "$PCP_LOG_DIR"
PCP_ETC_DIR=/etc
for crontab in pmlogger pmie
do
    test -f "$PCP_ETC_DIR/cron.d/$crontab" || continue
    mv -f "$PCP_ETC_DIR/cron.d/$crontab" "$PCP_ETC_DIR/cron.d/pcp-$crontab"
done
# Function to do all of the configuration file migration work
#
_clean_configs()
{
    #
    # Usage: _clean_configs [-v] new_dir old_dir ...
    #
    # Across all the files in the new_dir and old_dir args, match
    # names and pick the most recently modified version and leave
    # this (same mode and modification date) in new_dir
    #
    # -v option is verbose mode for debugging
    #
    _verbose=false
    if [ $# -gt 0 -a X"$1" = "X-v" ]
    then
	_verbose=true
	shift
    fi
    if [ $# -lt 2 ]
    then
	echo >&2 "Usage: _clean_configs [-v] new_dir old_dir ..."
	return
    fi
    _new="$1"
    if [ ! -d "$_new" ]
    then
	$verbose && echo >&2 + mkdir -p "$_new"
	mkdir -p "$_new"
    fi
    shift
    for _dir
    do
	[ "$_dir" = "$_new" ] && continue
	if [ -d "$_dir" ]
	then
	    ( cd "$_dir" ; find . -type f -print ) \
	    | sed -e 's/^\.\///' \
	    | while read _file
	    do
		_want=false
		if [ -f "$_new/$_file" ]
		then
		    # file exists in both directories, pick the more
		    # recently modified one
		    #
		    _try=`find "$_dir/$_file" -newer "$_new/$_file" -print`
		    [ -n "$_try" ] && _want=true
		else
		    _want=true
		fi
		if $_want
		then
		    _dest=`dirname $_new/$_file`
		    if [ ! -d "$_dest" ]
		    then
			$verbose && >&2 echo + mkdir "$_dest"
			mkdir "$_dest"
		    fi
		    $_verbose && echo >&2 + cp -p "$_dir/$_file" "$_new/$_file"
		    cp -p "$_dir/$_file" "$_new/$_file"
		fi
	    done
	fi
    done
}
_version_configs()
{
    # Use the supported conffile move method (no prompts)
    local FILE
    local NPMCD=/etc/pcp/pmcd
    local PMCD1=/etc/pmcd
    local PMCD2=/var/lib/pcp/config/pmcd
    for FILE in pmcd.conf pmcd.options rc.local; do
        dpkg-maintscript-helper mv_conffile $PMCD2/$FILE $NPMCD/$FILE 3.7.0~ pcp -- "$@"
        dpkg-maintscript-helper mv_conffile $PMCD1/$FILE $NPMCD/$FILE 3.6.1~ pcp -- "$@"
    done
    local NPMIE=/etc/pcp/pmie
    local PMIE1=/etc/pmie
    local PMIE2=/var/lib/pcp/config/pmie
    for FILE in control; do
        dpkg-maintscript-helper mv_conffile $PMIE2/$FILE $NPMIE/$FILE 3.7.0~ pcp -- "$@"
        dpkg-maintscript-helper mv_conffile $PMIE1/$FILE $NPMIE/$FILE 3.6.1~ pcp -- "$@"
    done
    local NPMPROXY=/etc/pcp/pmproxy
    local PMPROXY1=/etc/pmproxy
    local PMPROXY2=/var/lib/pcp/config/pmproxy
    for FILE in pmproxy.options; do
        dpkg-maintscript-helper mv_conffile $PMPROXY2/$FILE $NPMPROXY/$FILE 3.7.0~ pcp -- "$@"
        dpkg-maintscript-helper mv_conffile $PMPROXY1/$FILE $NPMPROXY/$FILE 3.6.1~ pcp -- "$@"
    done
    local NPMLOGGER=/etc/pcp/pmlogger
    local PMLOGGER1=/etc/pmlogger
    local PMLOGGER2=/var/lib/pcp/config/pmlogger
    for FILE in control; do
        dpkg-maintscript-helper mv_conffile $PMLOGGER2/control $NPMLOGGER/control 3.7.0~ pcp -- "$@"
        dpkg-maintscript-helper mv_conffile $PMLOGGER1/control $NPMLOGGER/control 3.6.1~ pcp -- "$@"
    done
}
# migrate and clean configs
if dpkg-maintscript-helper supports mv_conffile
then
    _version_configs "$@"
else
    # Fallback to our homebrew method (might prompt user)
    #echo >>$PCP_LOG_DIR/install.log
    #date >>$PCP_LOG_DIR/install.log
    for base in pmcd pmie pmlogger pmproxy
    do
	_clean_configs -v $PCP_SYSCONF_DIR/$base \
		/var/lib/pcp/config/$base \
		/etc/$base /etc/pcp/$base \
		/etc/sysconfig/$base \
	# 2>>$PCP_LOG_DIR/install.log
    done
fi
 |