3b47b59a82
- strongly suggest manually creating the symlink in pkg-message PR: 51712 Submitted by: maintainer
148 lines
3.2 KiB
Bash
148 lines
3.2 KiB
Bash
#!/bin/sh
|
|
|
|
case $2 in
|
|
PRE-INSTALL)
|
|
|
|
if [ -d $PKG_PREFIX/firebird ]; then
|
|
if [ -d $PKG_PREFIX/firebird.old ]; then
|
|
rm -rf $PKG_PREFIX/firebird.old
|
|
fi
|
|
mv $PKG_PREFIX/firebird $PKG_PREFIX/firebird.old
|
|
fi
|
|
|
|
if [ `id -u` -ne 0 ]; then
|
|
echo; echo "You must be root to run this step!"; echo; echo
|
|
exit 1
|
|
fi
|
|
|
|
nofbuid=0
|
|
fbUID=`id -u firebird 2>/dev/null`
|
|
if [ $? -ne 0 ]; then
|
|
fbUID=90
|
|
while [ ! -z `id -un $fbUID 2>/dev/null` ]
|
|
do
|
|
fbUID=$(($fbUID+1))
|
|
done
|
|
nofbuid=1
|
|
fi
|
|
|
|
fbGID=`pw groupshow firebird 2>/dev/null`
|
|
if [ $? -ne 0 ]; then
|
|
fbGID=90
|
|
while [ ! -z `id -gn $fbGID 2>/dev/null` ]
|
|
do
|
|
fbGID=$(($fbGID+1))
|
|
done
|
|
echo "firebird:*:$fbGID" >> /etc/group
|
|
else
|
|
fbGID=`echo $fbGID | awk -F: '{print $3}'`
|
|
fi
|
|
|
|
echo "firebird user using uid $fbUID"
|
|
echo "firebird user using gid $fbGID"
|
|
|
|
if which -s pw; then
|
|
if [ $nofbuid -ne 0 ]; then
|
|
pw useradd firebird -u $fbUID -g $fbGID -h - -s /bin/sh \
|
|
-d $PKG_PREFIX/firebird -c "Firebird pseudo-user"
|
|
fi
|
|
else
|
|
echo -n "unable to create user firebird - please create it manually,"
|
|
echo " before reinstalling this package."
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
POST-INSTALL)
|
|
chown -R firebird:firebird $PKG_PREFIX/firebird
|
|
|
|
# Now fix up the mess.
|
|
|
|
# fix up directories
|
|
for i in `find $PKG_PREFIX/firebird -print`
|
|
do
|
|
FileName=$i
|
|
if [ -d $FileName ]
|
|
then
|
|
chmod u=rwx,go=rx $FileName
|
|
fi
|
|
done
|
|
|
|
# make lib ldconfig-compatible
|
|
chown -R root:wheel $PKG_PREFIX/firebird/lib
|
|
|
|
# make the following read-only
|
|
chmod -R a=r $PKG_PREFIX/firebird/UDF/*
|
|
chmod -R a=r $PKG_PREFIX/firebird/include/*
|
|
chmod -R a=r $PKG_PREFIX/firebird/intl/*
|
|
chmod -R a=r $PKG_PREFIX/firebird/lib/*
|
|
|
|
# Fix UDF load problem
|
|
cd $PKG_PREFIX/firebird/lib
|
|
ln -sf ib_util.so libib_util.so
|
|
ln -sf gds.so libgds.so.1
|
|
|
|
cd $PKG_PREFIX/firebird/bin
|
|
|
|
# all users can run everything.
|
|
chmod a=rx *
|
|
|
|
# SUID is needed for running server programs.
|
|
|
|
for i in gds_lock_mgr gds_drop gds_inet_server
|
|
do
|
|
chmod ug+s $i
|
|
done
|
|
|
|
|
|
# Lock files
|
|
|
|
cd $PKG_PREFIX/firebird
|
|
|
|
for i in isc_init1 isc_lock1 isc_event1
|
|
do
|
|
FileName=$i.`hostname`
|
|
touch $FileName
|
|
chmod uga=rw $FileName
|
|
chown firebird:firebird $FileName
|
|
done
|
|
|
|
touch interbase.log
|
|
chmod u=rw,go= interbase.log
|
|
chmod a=r interbase.msg
|
|
|
|
# make databases writable by interbase only
|
|
# local database connections are not a good idea
|
|
chmod u=rw,go= examples/v5/*.gdb
|
|
chmod u=rw,go= help/*.gdb
|
|
chmod u=rw,go= isc4.gdb
|
|
|
|
# remove any existing gds service
|
|
cp /etc/services /etc/services.old
|
|
cp /etc/inetd.conf /etc/inetd.conf.old
|
|
cat /etc/services |grep -v gds_db >/etc/services.new
|
|
cat /etc/inetd.conf |grep -v gds_db >/etc/inetd.conf.new
|
|
mv /etc/services.new /etc/services
|
|
mv /etc/inetd.conf.new /etc/inetd.conf
|
|
|
|
# add the gds service and restart inetd
|
|
cat >>/etc/services <<EOF
|
|
gds_db 3050/tcp #InterBase Database Remote Protocol
|
|
EOF
|
|
cat >>/etc/inetd.conf <<EOF
|
|
gds_db stream tcp nowait firebird $PKG_PREFIX/firebird/bin/gds_inet_server gds_inet_server
|
|
EOF
|
|
if [ -f /var/run/inetd.pid ]; then
|
|
kill -HUP `cat /var/run/inetd.pid`
|
|
fi
|
|
|
|
# shared lib startup script
|
|
if [ -d $PKG_PREFIX/etc/rc.d ]; then
|
|
(
|
|
echo "#!/bin/sh"; echo "[ -d $PKG_PREFIX/firebird/lib ] && /sbin/ldconfig -m $PKG_PREFIX/firebird/lib"
|
|
) > $PKG_PREFIX/etc/rc.d/000.firebird.sh
|
|
chmod a=rx $PKG_PREFIX/etc/rc.d/000.firebird.sh
|
|
fi
|
|
;;
|
|
esac
|