mirror of
https://abf.rosa.ru/djam/postgrespro-1c.git
synced 2025-02-23 21:42:47 +00:00
218 lines
6.1 KiB
Bash
218 lines
6.1 KiB
Bash
#!/bin/sh
|
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
|
NAME=`basename $0`
|
|
BINDIR=@BINDIR@
|
|
MANDIR=@MANDIR@
|
|
MANSUF=.gz
|
|
# List of possible names of man.config in the various distributions
|
|
MAN_CONFIGS="/etc/manpath.config /etc/man_db.conf /etc/man.config"
|
|
|
|
USAGE_STRING="Usage: $0 links (update|remove)"
|
|
|
|
make_ua_path() {
|
|
if [ -x /usr/sbin/update-alternatives ]; then
|
|
echo /usr/sbin/update-alternatives
|
|
else
|
|
if [ -x /usr/bin/update-alternatives ]; then
|
|
echo /usr/bin/update-alternatives
|
|
else
|
|
echo /sbin/update-alternatives
|
|
fi
|
|
fi
|
|
}
|
|
|
|
update_man_config() {
|
|
for config in $MAN_CONFIGS; do
|
|
[ -f "$config" ] || continue
|
|
if ! grep $MANDIR "$config" >/dev/null; then
|
|
echo "Updating $config"
|
|
if [ "$config" = "/etc/man.config" ]; then
|
|
echo "MANPATH $MANDIR" >> "$config"
|
|
else
|
|
echo "MANDATORY_MANPATH $MANDIR" >> "$config"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
cleanup_man_config() {
|
|
for config in $MAN_CONFIGS; do
|
|
[ -f "$config" ] || continue
|
|
if grep $MANDIR "$config" >/dev/null; then
|
|
echo "Updating $config"
|
|
MANDIR_PATTERN=`echo $MANDIR | sed -e 's,\/,\\\/,g'`
|
|
if [ "$config" = "/etc/man.config" ]; then
|
|
sed -i.bak "/MANPATH $MANDIR_PATTERN/d" "$config" && rm -f "${config}.bak"
|
|
else
|
|
sed -i.bak "/MANDATORY_MANPATH $MANDIR_PATTERN/d" "$config" && rm -f "${config}.bak"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
update_links() {
|
|
BINLIST=`ls $BINDIR`
|
|
MAN1LIST=`ls $MANDIR/man1`
|
|
MAN1RULIST=`ls $MANDIR/ru/man1`
|
|
UA=`make_ua_path`
|
|
if [ -x $UA ] && [ ! "`realpath $UA 2>/dev/null`" = "/bin/true" ]; then
|
|
man_installed=0
|
|
for name in $BINLIST; do
|
|
$UA --install /usr/bin/$name pgsql-${name} $BINDIR/pg-wrapper @VERSION@00
|
|
done
|
|
for name in $MAN1LIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
$UA --install /usr/share/man/man1/${name}.1${MANSUF} pgsql-${name}man $MANDIR/man1/${name}.1${MANSUF} @VERSION@00 && man_installed=1
|
|
done
|
|
|
|
if [ ! -d /usr/share/man/ru/man1 ]; then
|
|
mkdir -p /usr/share/man/ru/man1
|
|
fi
|
|
for name in $MAN1RULIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
$UA --install /usr/share/man/ru/man1/${name}.1${MANSUF} pgsql-${name}manru $MANDIR/ru/man1/${name}.1${MANSUF} @VERSION@00
|
|
done
|
|
|
|
if [ $man_installed -eq 1 ]; then
|
|
update_man_config
|
|
fi
|
|
else
|
|
bin_ready=1
|
|
man_ready=1
|
|
man_ru_ready=1
|
|
for name in $BINLIST; do
|
|
if [ -f /usr/bin/$name ] && [ ! -L /usr/bin/$name ]; then
|
|
echo "Warning: skipping binary link setup. Binary file already exists: /usr/bin/$name"
|
|
bin_ready=0
|
|
fi
|
|
done
|
|
for name in $MAN1LIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
if [ -f /usr/share/man/man1/${name}.1${MANSUF} ] && [ ! -L /usr/share/man/man1/${name}.1${MANSUF} ]; then
|
|
echo "Warning: skipping man page setup. Man page with the same name already exists: /usr/share/man/man1/${name}.1${MANSUF}"
|
|
man_ready=0
|
|
fi
|
|
done
|
|
for name in $MAN1RULIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
if [ -f /usr/share/man/ru/man1/${name}.1${MANSUF} ] && [ ! -L /usr/share/man/ru/man1/${name}.1${MANSUF} ]; then
|
|
echo "Warning: skipping man page setup. Man page with the same name already exists: /usr/share/man/ru/man1/${name}.1${MANSUF}"
|
|
man_ru_ready=0
|
|
fi
|
|
done
|
|
if [ $bin_ready -eq 1 ] && [ $man_ready -eq 1 ] && [ $man_ru_ready -eq 1 ]; then
|
|
for name in $BINLIST; do
|
|
echo "Creating link for /usr/bin/$name"
|
|
ln -snf $BINDIR/pg-wrapper /usr/bin/$name
|
|
done
|
|
for name in $MAN1LIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
echo "Creating link for /usr/share/man/man1/${name}.1${MANSUF}"
|
|
ln -snf $MANDIR/man1/${name}.1${MANSUF} /usr/share/man/man1/${name}.1${MANSUF}
|
|
done
|
|
if [ ! -d /usr/share/man/ru/man1 ]; then
|
|
mkdir -p /usr/share/man/ru/man1
|
|
fi
|
|
for name in $MAN1RULIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
echo "Creating link for /usr/share/man/ru/man1/${name}.1${MANSUF}"
|
|
ln -snf $MANDIR/ru/man1/${name}.1${MANSUF} /usr/share/man/ru/man1/${name}.1${MANSUF}
|
|
done
|
|
|
|
update_man_config
|
|
fi
|
|
fi
|
|
}
|
|
|
|
remove_links() {
|
|
BINLIST=`ls $BINDIR`
|
|
MAN1LIST=`ls $MANDIR/man1`
|
|
MAN1RULIST=`ls $MANDIR/ru/man1`
|
|
UA=`make_ua_path`
|
|
if [ -x $UA ] && [ ! "`realpath $UA`" = "/bin/true" ] 2>/dev/null; then
|
|
for name in $BINLIST; do
|
|
$UA --remove pgsql-$name $BINDIR/pg-wrapper
|
|
done
|
|
for name in $MAN1LIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
$UA --remove pgsql-${name}man $MANDIR/man1/${name}.1${MANSUF}
|
|
done
|
|
for name in $MAN1RULIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
$UA --remove pgsql-${name}manru $MANDIR/ru/man1/${name}.1${MANSUF}
|
|
done
|
|
else
|
|
PGHOME=`/usr/bin/dirname $BINDIR`
|
|
for name in $BINLIST; do
|
|
if [ -L /usr/bin/$name ] ; then
|
|
path=`readlink /usr/bin/$name`
|
|
if echo $path | grep $PGHOME >/dev/null; then
|
|
echo "Removing link for /usr/bin/$name"
|
|
rm -f /usr/bin/$name
|
|
fi
|
|
fi
|
|
done
|
|
for name in $MAN1LIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
if [ -L /usr/share/man/man1/${name}.1${MANSUF} ] ; then
|
|
path=`readlink /usr/share/man/man1/${name}.1${MANSUF}`
|
|
if echo $path | grep $PGHOME >/dev/null; then
|
|
echo "Removing link for /usr/share/man/man1/${name}.1${MANSUF}"
|
|
rm -f /usr/share/man/man1/${name}.1${MANSUF}
|
|
fi
|
|
fi
|
|
done
|
|
for name in $MAN1RULIST; do
|
|
name=`echo $name | sed -e 's/\.1.*//g'`
|
|
if [ -L /usr/share/man/ru/man1/${name}.1 ] ; then
|
|
path=`readlink /usr/share/man/ru/man1/${name}.1${MANSUF}`
|
|
if echo $path | grep $PGHOME >/dev/null; then
|
|
echo "Removing link for /usr/share/man/ru/man1/${name}.1${MANSUF}"
|
|
rm -f /usr/share/man/ru/man1/${name}.1${MANSUF}
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cleanup_man_config
|
|
|
|
}
|
|
|
|
links() {
|
|
case "$1" in
|
|
update)
|
|
shift
|
|
update_links $@
|
|
;;
|
|
remove)
|
|
shift
|
|
remove_links $@
|
|
;;
|
|
*)
|
|
echo >&2 "$USAGE_STRING"
|
|
exit 2
|
|
esac
|
|
}
|
|
|
|
if [ -z "$NAME" ]; then
|
|
echo "Error: failed to extract basename of $0"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$NAME" = "pg-wrapper" ]; then
|
|
case "$1" in
|
|
links)
|
|
shift
|
|
if [ $(id -u) -ne 0 ]; then
|
|
echo "Links management requires root privileges" >&2
|
|
exit 1;
|
|
fi
|
|
links $@
|
|
;;
|
|
*)
|
|
echo >&2 "$USAGE_STRING"
|
|
exit 2
|
|
esac
|
|
else
|
|
exec $BINDIR/$NAME ${1:+"$@"}
|
|
fi
|