base-files/basefiles/debian/postinst.in
2023-02-23 22:00:49 +02:00

132 lines
4.1 KiB
Bash

#!/bin/sh
set -e
ensure_file_owner_mode() {
if [ ! -f "$DPKG_ROOT$1" ]; then
: > "$DPKG_ROOT$1"
fi
chown "$2" "$DPKG_ROOT$1"
chmod "$3" "$DPKG_ROOT$1"
}
install_local_dir() {
if [ ! -d "$DPKG_ROOT$1" ]; then
mkdir -p "$DPKG_ROOT$1"
fi
}
install_from_default() {
if [ ! -f "$DPKG_ROOT$2" ]; then
cp -p "$DPKG_ROOT/usr/share/base-files/$1" "$DPKG_ROOT$2"
fi
}
install_directory() {
if [ ! -d "$DPKG_ROOT/$1" ]; then
mkdir "$DPKG_ROOT/$1"
chown "root:$3" "$DPKG_ROOT/$1"
chmod "$2" "$DPKG_ROOT/$1"
fi
}
migrate_directory() {
if [ ! -L "$DPKG_ROOT$1" ]; then
rmdir "$DPKG_ROOT$1"
ln -s "$2" "$DPKG_ROOT$1"
fi
}
update_to_current_default() {
if [ -f "$2" ]; then
md5=$(md5sum "$2" | cut -f 1 -d " ")
if grep -q "$md5" "/usr/share/base-files/$1.md5sums"; then
if ! cmp -s "/usr/share/base-files/$1" "$2"; then
cp -p "/usr/share/base-files/$1" "$2"
echo Updating $2 to current default.
fi
fi
fi
}
if [ ! -e "$DPKG_ROOT/etc/dpkg/origins/default" ]; then
if [ -e "$DPKG_ROOT/etc/dpkg/origins/#VENDORFILE#" ]; then
ln -sf #VENDORFILE# "$DPKG_ROOT/etc/dpkg/origins/default"
fi
fi
if [ "$1" = "configure" ] && [ "$2" = "" ]; then
install_from_default dot.profile /root/.profile
install_from_default dot.bashrc /root/.bashrc
install_from_default profile /etc/profile
install_from_default networks /etc/networks
install_directory mnt 755 root
install_directory srv 755 root
install_directory opt 755 root
install_directory etc/opt 755 root
install_directory var/opt 755 root
install_directory media 755 root
install_directory var/mail 2775 mail
if [ ! -L "$DPKG_ROOT/var/spool/mail" ]; then
ln -s ../mail "$DPKG_ROOT/var/spool/mail"
fi
install_directory run/lock 1777 root
migrate_directory /var/run /run
migrate_directory /var/lock /run/lock
install_local_dir /usr/local
install_local_dir /usr/local/share
install_local_dir /usr/local/share/man
install_local_dir /usr/local/bin
install_local_dir /usr/local/games
install_local_dir /usr/local/lib
install_local_dir /usr/local/include
install_local_dir /usr/local/sbin
install_local_dir /usr/local/src
install_local_dir /usr/local/etc
ln -sf share/man "$DPKG_ROOT/usr/local/man"
ensure_file_owner_mode /var/log/wtmp root:utmp 664
ensure_file_owner_mode /var/log/btmp root:utmp 660
ensure_file_owner_mode /var/log/lastlog root:utmp 664
fi
if [ -d "$DPKG_ROOT/usr/share/info" ] && [ ! -f "$DPKG_ROOT/usr/info/dir" ] && [ ! -f "$DPKG_ROOT/usr/share/info/dir" ]; then
install_from_default info.dir /usr/share/info/dir
chmod 644 $DPKG_ROOT/usr/share/info/dir
fi
if [ "$1" = "configure" ] && [ "$2" != "" ]; then
# If we're upgrading base-files, remove the upgrade-available flag
# maintained by update-manager, and rerun the release-upgrade check
# immediately (in the background) to update the flag.
rm -f $DPKG_ROOT/var/lib/update-notifier/release-upgrade-available
if [ -x $DPKG_ROOT/usr/lib/update-manager/check-new-release ]; then
$DPKG_ROOT/usr/lib/update-manager/check-new-release -q > $DPKG_ROOT/var/lib/update-notifier/release-upgrade-available &
fi
update_to_current_default profile /etc/profile
update_to_current_default dot.profile /root/.profile
if dpkg --compare-versions "$2" lt-nl "7.7"; then
install_directory mnt 755 root
fi
fi
# special case of having /etc/default/motd-news removed by hand
# signal the motd-news-config package that this happened, so that
# it does not put back the file with default contents which would
# re-enable motd-news
motd_news_config="$DPKG_ROOT/etc/default/motd-news"
# only in upgrades, never fresh installs like in debootstrap
if [ "$2" != "" ] && \
[ ! -e ${motd_news_config} ] && \
[ ! -e ${motd_news_config}.dpkg-remove ] && \
[ ! -e ${motd_news_config}.dpkg-backup ]; then
# The .wasremoved file only matters if ubuntu-server is installed,
# because that's what will pull in motd-news-config
if dpkg -l ubuntu-server 2>/dev/null | grep -q ^i; then
touch ${motd_news_config}.wasremoved
fi
fi
#DEBHELPER#