aboutsummaryrefslogblamecommitdiffstats
path: root/databases/firebird-server/pkg-install
blob: 6fd18e94bd21ae61d470a09b371cc185b95d554d (plain) (tree)
1
2
3
4
5
         
            
 















                                                        




























                                                                   
 












                                                                             

                      
                    



                                           
                                    

       
                                            




                                           
 

                               
                         


                               
            











                                              
                                       





                                     
                   
                            
 



                                                














                                                                                                   







                                                                                                              
                                                 
  
    
#!/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 [ -L /usr/interbase ]; then
    rm -f /usr/interbase
fi

if [ -d /usr/interbase ]; then
    mv /usr/interbase /usr/interbase.old
fi

ln -fs $PKG_PREFIX/firebird /usr/interbase

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    /usr/interbase/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