preinst is in dash 0.5.7-2ubuntu2.
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 | #!/bin/bash
set -e
divert() {
dfile=$1
ltarget=$2
div=$(dpkg-divert --list $dfile)
distrib=${3:-$dfile.distrib}
temp=$dfile.tmp
if [ -z "$div" ]; then
# This differs from dpkg-divert's --rename because we
# first make a copy of $dfile (the file being diverted)
# in $distrib. Then, a symlink to $ltarget is forcibly created
# from $dfile; this is performed in two stages with an
# intermediate temporary file as ln -sf is not atomic.
# dpkg-divert's --rename direct equivalent would be:
# mv $dfile $distrib -- but we could end up without a symlink
if [ -e $dfile ]; then
cp -dp $dfile $distrib
fi
ln -sf $ltarget $temp
mv -f $temp $dfile
dpkg-divert --package dash --divert $distrib --add $dfile
fi
}
# Divert the following files if no diversion exists already
# It is currently used to prevent the files collision between bash and
# dash: they both provide the files in the package.
divert /bin/sh dash
divert /usr/share/man/man1/sh.1.gz dash.1.gz \
/usr/share/man/man1/sh.distrib.1.gz
|