# FAM 2.7.0
# =========
cd
test -f installed/fam-2.7.0.tar.gz && mv installed/fam-2.7.0.tar.gz .
test ! -f fam-2.7.0.tar.gz &&
wget ftp://oss.sgi.com/projects/fam/download/stable/fam-2.7.0.tar.gz
mkdir -p -m 0700 src
cd src
find -maxdepth 1 -type d -name "fam-*" -exec rm -r {} \;
tar xzvf ~/fam-2.7.0.tar.gz
cd fam-2.7.0
test $UID = 0 && chown -R root:root .
chmod -R u+w .
# Patch it to include support for the Linux kernel's dnotify:
wget -nc http://englanders.cc/pub/linux/patches/notmine/\
fam-2.7.0-dnotify-1.patch &&
patch -p1 < fam-2.7.0-dnotify-1.patch
autoreconf -f -i
# Patch it if you patched it for dnotify and you use gcc 4.1
# You'll get this error without the patch:
# DNotify.h:62: error: extra qualification 'DNotify::' on member 'queue_overflowed'
# DNotify.h:63: error: extra qualification 'DNotify::' on member 'queue_changed'
wget -nc http://englanders.cc/pub/linux/patches/notmine/\
fam-2.7.0-gcc4.patch &&
patch -p2 < fam-2.7.0-gcc4.patch
autoreconf -f -i
# If you haven't already run 'autoreconf -f -i' from the patches above, you
# may want to do it to fix things up and avoid errors about ./missing being
# too old, aclocal-1.6 being missing (because 1.9 is current), etc.
./configure
make
# Become root to install it
su
# Back up existing configuration file:
test -f /usr/local/etc/fam.conf &&
( mkdir -p -m 0700 ~/backup ; cp /usr/local/etc/fam.conf ~/backup/ )
rm -f /usr/local/lib/libfam.*
make install
ldconfig
## If you don't already have one like it (Slackware > 10.0 already has it),
## add this line to /etc/rpc:
# sgi_fam 391002 fam # File Alteration Monitor
## You can either run it from inetd or xinetd, or run it standalone. I
## prefer the latter. See ./INSTALL in the source directory for setup
## examples if you want to use inetd or xinetd instead. Add something like
## this to /etc/rc.d/rc.local to have it start on boot-up:
# if [ -x /usr/local/sbin/famd ]; then
# echo "Starting famd..."
# /usr/local/sbin/famd -T 0
# fi
# Make sure rpc.portmap is running. Recent versions of Slackware have a
# /etc/rc.d/rc.portmap script (if the 'portmap' package is installed),
# and Slackware 11.0 has a /etc/rc.d/rc.rpc script. If it's not already
# running and you do have the script, run the script with start:
# /etc/rc.d/rc.rpc start
# ...to start it. If not, run '/sbin/rpc.portmap'. Make sure it will
# start on boot-up automatically. The rc.portmap/rc.rpc script is
# usually run from /etc/rc.d/rc.inet2
# If you want to check out the configuration file, it's
# /usr/local/etc/fam.conf Even though it's named fam.conf, the man page
# that covers it is named famd.conf
# If all is well, start famd (after killing any old copies that are running):
killall fam famd ; sleep 3 ; killall -9 fam famd ; sleep 1 ; \
/usr/local/sbin/famd -T 0
# Run this to make sure fam is registered with portmapper (no output = it's
# not):
rpcinfo -p | grep fam
## And just so you can see 'fam' instead of '654' when you run 'netstat -l',
## if you don't already have it (recent versions of Slackware do), add this
## line to /etc/services. You may already have a "aodv" in there that
## you'll want to comment out.
# fam 654/tcp
# If you ever want to uninstall fam, this should do it:
cd
su
test -d src/fam-* && ( cd src/fam-* ; make uninstall )
for prefix in /usr /usr/local; do
test -d ${prefix}/lib/fam && rm -r ${prefix}/lib/fam
rm -f ${prefix}/bin/fam ${prefix}/etc/fam.conf ${prefix}/include/fam.h \
${prefix}/lib/libfam.* ${prefix}/man/man3/fam.3 \
${prefix}/man/man5/famd.conf.5 ${prefix}/man/man8/famd.8 \
${prefix}/sbin/famd
done
ldconfig
exit
find ~/src -maxdepth 1 -type d -name "fam-*" -exec rm -r {} \;
rm -f ~/installed/fam-*.tar.*