ports/79537: New port: sysutils/heartbeat

Scott Kleihege scott-ports at tummy.com
Mon Apr 4 19:50:08 UTC 2005


>Number:         79537
>Category:       ports
>Synopsis:       New port: sysutils/heartbeat
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Apr 04 19:50:06 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Scott Kleihege <scott-ports at tummy.com>
>Release:        FreeBSD 5.3-RELEASE-p5 i386
>Organization:
Tummy.com, ltd.
>Environment:
tested on 5.3-RELEASE

>Description:
heartbeat is a basic high-availability subsystem.  It will run
scripts at initialization, and when machines go up or down.  This
version will also perform IP address takeover using gratuitous ARPs.

It implements the following kinds of heartbeats:
        - Bidirectional Serial Rings ("raw" serial ports)
        - UDP/IP broadcast (ethernet, etc)
        - Unicast heartbeats
        - "ping" heartbeats (for routers, switches, etc.)
           (to be used for breaking ties in 2-node systems)
>How-To-Repeat:
>Fix:

--- heartbeat-1.2.3.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	.
#	./Makefile
#	./pkg-descr
#	./distinfo
#	./pkg-plist
#	./pkg-install
#	./pkg-deinstall
#
echo c - .
mkdir -p . > /dev/null 2>&1
echo x - ./Makefile
sed 's/^X//' >./Makefile << 'END-of-./Makefile'
X# New ports collection makefile for:	hearbeat
X# Date created:		18 March 2005
X# Whom:			Scott Kleihege <scott-ports at tummy.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	heartbeat
XPORTVERSION=	1.2.3
XCATEGORIES=	sysutils
XMASTER_SITES=	http://linux-ha.org/download/
X
XMAINTAINER=	scott-ports at tummy.com
XCOMMENT=	Subsystem for High-Availability Clustering
X
XBUILD_DEPENDS=	${LOCALBASE}/include/libnet.h:${PORTSDIR}/net/libnet-devel \
X		${LOCALBASE}/include/glib12/glib.h:${PORTSDIR}/devel/glib12
XRUN_DEPENDS=	${BUILD_DEPENDS}
X
XUSE_PERL5=	yes
XGNU_CONFIGURE=	yes
XUSE_GMAKE=	yes
XUSE_AUTOTOOLS=	yes
XCONFIGURE_ARGS=	--disable-fatal-warnings
X
XMAN1=		cl_status.1
XMAN8=		apphbd.8 heartbeat.8 ldirectord.8 meatclient.8 \
X		stonith.8 supervise-ldirectord-config.8
X
Xpre-install:
X	PATH=${PATH}:${LOCALBASE}/bin
X
Xpost-install:
X	PKG_PREFIX=${LOCALBASE} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
X
X.include <bsd.port.mk>
END-of-./Makefile
echo x - ./pkg-descr
sed 's/^X//' >./pkg-descr << 'END-of-./pkg-descr'
Xheartbeat is a basic high-availability subsystem.  It will run
Xscripts at initialization, and when machines go up or down.  This
Xversion will also perform IP address takeover using gratuitous ARPs.
X
XIt implements the following kinds of heartbeats:
X        - Bidirectional Serial Rings ("raw" serial ports)
X        - UDP/IP broadcast (ethernet, etc)
X        - Unicast heartbeats
X        - "ping" heartbeats (for routers, switches, etc.)
X           (to be used for breaking ties in 2-node systems)
X
Xldirectord is a stand-alone daemon to monitor services.
X
XThe STONITH module (a.k.a. STOMITH) provides an extensible interface
Xfor remotely powering down a node in the cluster.
X
XPILS is an generalized and portable open source Plugin and Interface
XLoading System.  PILS manages both plugins (loadable objects), and
Xthe interfaces these plugins implement.  PILS is designed to support
Xany number of plugins implementing any number of interfaces.
X
XWWW: http://linux-ha.org/
X
XScott Kleihege <scott-ports at tummy.com>
END-of-./pkg-descr
echo x - ./distinfo
sed 's/^X//' >./distinfo << 'END-of-./distinfo'
XMD5 (heartbeat-1.2.3.tar.gz) = 9fd126e5dff51cc8c1eee223c252a4af
XSIZE (heartbeat-1.2.3.tar.gz) = 1772513
END-of-./distinfo
echo x - ./pkg-plist
sed 's/^X//' >./pkg-plist << 'END-of-./pkg-plist'
Xbin/cl_status
Xetc/ha.d/README.config
Xetc/ha.d/harc
Xetc/ha.d/rc.d/ask_resources
Xetc/ha.d/rc.d/hb_takeover
Xetc/ha.d/rc.d/ip-request
Xetc/ha.d/rc.d/ip-request-resp
Xetc/ha.d/rc.d/status
Xetc/ha.d/resource.d/AudibleAlarm
Xetc/ha.d/resource.d/Delay
Xetc/ha.d/resource.d/Filesystem
Xetc/ha.d/resource.d/ICP
Xetc/ha.d/resource.d/IPaddr
Xetc/ha.d/resource.d/IPaddr2
Xetc/ha.d/resource.d/IPsrcaddr
Xetc/ha.d/resource.d/LVM
Xetc/ha.d/resource.d/LinuxSCSI
Xetc/ha.d/resource.d/MailTo
Xetc/ha.d/resource.d/OCF
Xetc/ha.d/resource.d/Raid1
Xetc/ha.d/resource.d/SendArp
Xetc/ha.d/resource.d/ServeRAID
Xetc/ha.d/resource.d/WAS
Xetc/ha.d/resource.d/WinPopup
Xetc/ha.d/resource.d/Xinetd
Xetc/ha.d/resource.d/apache
Xetc/ha.d/resource.d/db2
Xetc/ha.d/resource.d/portblock
Xetc/ha.d/shellfuncs
Xetc/logrotate.d/heartbeat
Xetc/logrotate.d/ldirectord
Xinclude/clplumbing/GSource.h
Xinclude/clplumbing/Gmain_timeout.h
Xinclude/clplumbing/apphb_cs.h
Xinclude/clplumbing/base64.h
Xinclude/clplumbing/cl_log.h
Xinclude/clplumbing/cl_malloc.h
Xinclude/clplumbing/cl_poll.h
Xinclude/clplumbing/cl_signal.h
Xinclude/clplumbing/cpulimits.h
Xinclude/clplumbing/ipc.h
Xinclude/clplumbing/loggingdaemon.h
Xinclude/clplumbing/longclock.h
Xinclude/clplumbing/lsb_exitcodes.h
Xinclude/clplumbing/mkstemp_mode.h
Xinclude/clplumbing/netstring.h
Xinclude/clplumbing/proctrack.h
Xinclude/clplumbing/realtime.h
Xinclude/clplumbing/recoverymgr_cs.h
Xinclude/clplumbing/timers.h
Xinclude/clplumbing/ttylock.h
Xinclude/clplumbing/uids.h
Xinclude/heartbeat/HBauth.h
Xinclude/heartbeat/HBcomm.h
Xinclude/heartbeat/apphb.h
Xinclude/heartbeat/apphb_notify.h
Xinclude/heartbeat/ha_config.h
Xinclude/heartbeat/ha_msg.h
Xinclude/heartbeat/hb_api.h
Xinclude/heartbeat/heartbeat.h
Xinclude/heartbeat/recoverymgr.h
Xinclude/ocf/oc_event.h
Xinclude/ocf/oc_membership.h
Xinclude/pils/generic.h
Xinclude/pils/interface.h
Xinclude/pils/plugin.h
Xinclude/saf/ais.h
Xinclude/saf/ais_amf.h
Xinclude/saf/ais_base.h
Xinclude/saf/ais_checkpoint.h
Xinclude/saf/ais_event.h
Xinclude/saf/ais_lock.h
Xinclude/saf/ais_membership.h
Xinclude/saf/ais_message.h
Xinclude/stonith/expect.h
Xinclude/stonith/stonith.h
Xlib/heartbeat/BasicSanityCheck
Xlib/heartbeat/ResourceManager
Xlib/heartbeat/TestHeartbeatComm
Xlib/heartbeat/api_test
Xlib/heartbeat/apphbd
Xlib/heartbeat/apphbtest
Xlib/heartbeat/ccm
Xlib/heartbeat/ccm_testclient
Xlib/heartbeat/checkpointd
Xlib/heartbeat/ckpttest
Xlib/heartbeat/clmtest
Xlib/heartbeat/cts/CM_fs.py
Xlib/heartbeat/cts/CM_hb.py
Xlib/heartbeat/cts/CTS.py
Xlib/heartbeat/cts/CTSaudits.py
Xlib/heartbeat/cts/CTSlab.py
Xlib/heartbeat/cts/CTStests.py
Xlib/heartbeat/cts/README
Xlib/heartbeat/findif
Xlib/heartbeat/ha_config
Xlib/heartbeat/hb_standby
Xlib/heartbeat/hb_takeover
Xlib/heartbeat/heartbeat
Xlib/heartbeat/ipctest
Xlib/heartbeat/ipctransientclient
Xlib/heartbeat/ipctransientserver
Xlib/heartbeat/ipfail
Xlib/heartbeat/mach_down
Xlib/heartbeat/plugins/AppHBNotification/recmgr.a
Xlib/heartbeat/plugins/AppHBNotification/recmgr.la
Xlib/heartbeat/plugins/AppHBNotification/recmgr.so
Xlib/heartbeat/plugins/HBauth/crc.a
Xlib/heartbeat/plugins/HBauth/crc.la
Xlib/heartbeat/plugins/HBauth/crc.so
Xlib/heartbeat/plugins/HBauth/md5.a
Xlib/heartbeat/plugins/HBauth/md5.la
Xlib/heartbeat/plugins/HBauth/md5.so
Xlib/heartbeat/plugins/HBauth/sha1.a
Xlib/heartbeat/plugins/HBauth/sha1.la
Xlib/heartbeat/plugins/HBauth/sha1.so
Xlib/heartbeat/plugins/HBcomm/bcast.a
Xlib/heartbeat/plugins/HBcomm/bcast.la
Xlib/heartbeat/plugins/HBcomm/bcast.so
Xlib/heartbeat/plugins/HBcomm/mcast.a
Xlib/heartbeat/plugins/HBcomm/mcast.la
Xlib/heartbeat/plugins/HBcomm/mcast.so
Xlib/heartbeat/plugins/HBcomm/ping.a
Xlib/heartbeat/plugins/HBcomm/ping.la
Xlib/heartbeat/plugins/HBcomm/ping.so
Xlib/heartbeat/plugins/HBcomm/ping_group.a
Xlib/heartbeat/plugins/HBcomm/ping_group.la
Xlib/heartbeat/plugins/HBcomm/ping_group.so
Xlib/heartbeat/plugins/HBcomm/serial.a
Xlib/heartbeat/plugins/HBcomm/serial.la
Xlib/heartbeat/plugins/HBcomm/serial.so
Xlib/heartbeat/plugins/HBcomm/ucast.a
Xlib/heartbeat/plugins/HBcomm/ucast.la
Xlib/heartbeat/plugins/HBcomm/ucast.so
Xlib/heartbeat/plugins/test/test.a
Xlib/heartbeat/plugins/test/test.la
Xlib/heartbeat/plugins/test/test.so
Xlib/heartbeat/recoverymgrd
Xlib/heartbeat/req_resource
Xlib/heartbeat/send_arp
Xlib/libapphb.a
Xlib/libapphb.la
Xlib/libapphb.so
Xlib/libapphb.so.0
Xlib/libccmclient.a
Xlib/libccmclient.la
Xlib/libccmclient.so
Xlib/libccmclient.so.0
Xlib/libckpt.a
Xlib/libckpt.la
Xlib/libckpt.so
Xlib/libckpt.so.0
Xlib/libclm.a
Xlib/libclm.la
Xlib/libclm.so
Xlib/libclm.so.0
Xlib/libhbclient.a
Xlib/libhbclient.la
Xlib/libhbclient.so
Xlib/libhbclient.so.0
Xlib/libpils.a
Xlib/libpils.la
Xlib/libpils.so
Xlib/libpils.so.0
Xlib/libplumb.a
Xlib/libplumb.la
Xlib/libplumb.so
Xlib/libplumb.so.0
Xlib/librecoverymgr.a
Xlib/librecoverymgr.la
Xlib/librecoverymgr.so
Xlib/librecoverymgr.so.0
Xlib/libstonith.a
Xlib/libstonith.la
Xlib/libstonith.so
Xlib/libstonith.so.0
Xlib/pils/plugins/InterfaceMgr/generic.a
Xlib/pils/plugins/InterfaceMgr/generic.la
Xlib/pils/plugins/InterfaceMgr/generic.so
Xlib/stonith/plugins/stonith/apcmaster.a
Xlib/stonith/plugins/stonith/apcmaster.la
Xlib/stonith/plugins/stonith/apcmaster.so
Xlib/stonith/plugins/stonith/apcsmart.a
Xlib/stonith/plugins/stonith/apcsmart.la
Xlib/stonith/plugins/stonith/apcsmart.so
Xlib/stonith/plugins/stonith/baytech.a
Xlib/stonith/plugins/stonith/baytech.la
Xlib/stonith/plugins/stonith/baytech.so
Xlib/stonith/plugins/stonith/external.a
Xlib/stonith/plugins/stonith/external.la
Xlib/stonith/plugins/stonith/external.so
Xlib/stonith/plugins/stonith/ibmhmc.a
Xlib/stonith/plugins/stonith/ibmhmc.la
Xlib/stonith/plugins/stonith/ibmhmc.so
Xlib/stonith/plugins/stonith/meatware.a
Xlib/stonith/plugins/stonith/meatware.la
Xlib/stonith/plugins/stonith/meatware.so
Xlib/stonith/plugins/stonith/null.a
Xlib/stonith/plugins/stonith/null.la
Xlib/stonith/plugins/stonith/null.so
Xlib/stonith/plugins/stonith/nw_rpc100s.a
Xlib/stonith/plugins/stonith/nw_rpc100s.la
Xlib/stonith/plugins/stonith/nw_rpc100s.so
Xlib/stonith/plugins/stonith/rcd_serial.a
Xlib/stonith/plugins/stonith/rcd_serial.la
Xlib/stonith/plugins/stonith/rcd_serial.so
Xlib/stonith/plugins/stonith/rps10.a
Xlib/stonith/plugins/stonith/rps10.la
Xlib/stonith/plugins/stonith/rps10.so
Xlib/stonith/plugins/stonith/ssh.a
Xlib/stonith/plugins/stonith/ssh.la
Xlib/stonith/plugins/stonith/ssh.so
Xlib/stonith/plugins/stonith/wti_nps.a
Xlib/stonith/plugins/stonith/wti_nps.la
Xlib/stonith/plugins/stonith/wti_nps.so
Xsbin/ldirectord
Xsbin/meatclient
Xsbin/stonith
Xsbin/supervise-ldirectord-config
Xshare/doc/heartbeat-1.2.3/AUTHORS
Xshare/doc/heartbeat-1.2.3/COPYING
Xshare/doc/heartbeat-1.2.3/ChangeLog
Xshare/doc/heartbeat-1.2.3/DirectoryMap.txt
Xshare/doc/heartbeat-1.2.3/GettingStarted.html
Xshare/doc/heartbeat-1.2.3/GettingStarted.txt
Xshare/doc/heartbeat-1.2.3/HardwareGuide.html
Xshare/doc/heartbeat-1.2.3/HardwareGuide.txt
Xshare/doc/heartbeat-1.2.3/README
Xshare/doc/heartbeat-1.2.3/Requirements.html
Xshare/doc/heartbeat-1.2.3/Requirements.txt
Xshare/doc/heartbeat-1.2.3/apphbd.cf
Xshare/doc/heartbeat-1.2.3/authkeys
Xshare/doc/heartbeat-1.2.3/faqntips.html
Xshare/doc/heartbeat-1.2.3/faqntips.txt
Xshare/doc/heartbeat-1.2.3/ha.cf
Xshare/doc/heartbeat-1.2.3/haresources
Xshare/doc/heartbeat-1.2.3/heartbeat_api.html
Xshare/doc/heartbeat-1.2.3/heartbeat_api.txt
Xshare/doc/heartbeat-1.2.3/rsync.html
Xshare/doc/heartbeat-1.2.3/rsync.txt
Xshare/doc/heartbeat-1.2.3/startstop
Xshare/nls/POSIX
Xshare/nls/en_US.US-ASCII
X at unexec rmdir %D/var/run 2>/dev/null || true
X at unexec rmdir %D/var/lock/subsys 2>/dev/null || true
X at unexec rmdir %D/var/lock 2>/dev/null || true
X at unexec rmdir %D/var/lib/heartbeat/ckpt 2>/dev/null || true
X at unexec rmdir %D/var/lib/heartbeat/ccm 2>/dev/null || true
X at unexec rmdir %D/var/lib/heartbeat 2>/dev/null || true
X at unexec rmdir %D/var/lib 2>/dev/null || true
X at unexec rmdir %D/var 2>/dev/null || true
X at dirrm share/doc/heartbeat-1.2.3
X at dirrm lib/stonith/plugins/stonith
X at dirrm lib/stonith/plugins
X at dirrm lib/stonith
X at dirrm lib/pils/plugins/InterfaceMgr
X at dirrm lib/pils/plugins
X at dirrm lib/pils
X at dirrm lib/heartbeat/plugins/test
X at dirrm lib/heartbeat/plugins/HBcomm
X at dirrm lib/heartbeat/plugins/HBauth
X at dirrm lib/heartbeat/plugins/AppHBNotification
X at dirrm lib/heartbeat/plugins
X at dirrm lib/heartbeat/cts
X at dirrm lib/heartbeat
X at dirrm include/stonith
X at dirrm include/saf
X at dirrm include/pils
X at dirrm include/ocf
X at dirrm include/heartbeat
X at dirrm include/clplumbing
X at dirrm etc/ha.d/resource.d
X at dirrm etc/ha.d/rc.d
X at unexec rmdir %D/etc/ha.d/conf 2>/dev/null || true
X at unexec rmdir %D/etc/ha.d 2>/dev/null || true
END-of-./pkg-plist
echo x - ./pkg-install
sed 's/^X//' >./pkg-install << 'END-of-./pkg-install'
X#! /bin/sh
X
Xbase=${PKG_PREFIX}
X
Xask() {
X    local question default answer
X
X    question=$1
X    default=$2
X    if [ -z "${PACKAGE_BUILDING}" ]; then
X	read -p "${question} [${default}]? " answer
X    fi
X    if [ x${answer} = x ]; then
X	answer=${default}
X    fi
X    echo ${answer}
X}
X
Xyesno() {
X    local dflt question answer
X
X    question=$1
X    dflt=$2
X    while :; do
X	answer=$(ask "${question}" "${dflt}")
X	case "${answer}" in
X	[Yy]*)		return 0;;
X	[Nn]*)		return 1;;
X	esac
X	echo "Please answer yes or no."
X    done
X}
X
Xmake_account() {
X    local u g gcos homeopt home
X
X    u=$1
X    g=$2
X    gcos=$3
X    homeopt=${4:+"-d $4"}
X
X    if pw group show "${g}" >/dev/null 2>&1; then
X	echo "You already have a group \"${g}\", so I will use it."
X    else
X	echo "You need a group \"${g}\"."
X	if which -s pw && yesno "Would you like me to create it" y; then
X	    pw groupadd ${g} || exit
X	    echo "Done."
X	else
X	    echo "Please create it, and try again."
X	    if ! grep -q "^${u}:" /etc/passwd; then
X		echo "While you're at it, please create a user \"${u}\" too,"
X		echo "with a default group of \"${g}\"."
X	    fi
X	    exit 1
X	fi
X    fi
X    
X    if pw user show "${u}" >/dev/null 2>&1; then
X	echo "You already have a user \"${u}\", so I will use it."
X    else
X	echo "You need a user \"${u}\"."
X	if which -s pw && yesno "Would you like me to create it" y; then
X	    pw useradd ${u} -g ${g} -h - ${homeopt} \
X		-s /nonexistent -c "${gcos}" || exit
X	    echo "Done."
X	else
X	    echo "Please create it, and try again."
X	    exit 1
X	fi
X    fi
X
X    if [ x"$homeopt" = x ]; then
X	eval home=~${u}
X	if [ ! -d "${home}" ]; then
X	    if yesno \
X		"Would you like me to create ${u}'s home directory (${home})" y
X	    then
X		mkdir -p ${home}/.cvsup || exit
X		touch ${home}/.cvsup/auth || exit
X		chown -R ${u}:${g} ${home} || exit
X		chmod -R go= ${home} || exit
X	    else
X		echo "Please create it, and try again."
X		exit 1
X	    fi
X	fi
X    fi
X}
X
Xcase $2 in
X
XPOST-INSTALL)
X    if which -s pw && which -s lockf; then
X	:
X    else
X	cat <<EOF
X
XThis system looks like a pre-2.2 version of FreeBSD.  I see that it
Xis missing the "lockf" and/or "pw" utilities.  I need these utilities.
XPlease get them and install them, and try again.  You can get the
Xsources from:
X
X  ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.bin/lockf.tar.gz
X  ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz
X
XEOF
X	exit 1
X    fi
X
X    echo ""
X    user=hacluster
X    group=haclient
X    make_account ${user} ${group} "${user} ${group}" "/nonexistent"
X
X    echo "Adding empty dirs and pid file in \"${base}\"."
X    test -d ${base}/var/lib/heartbeat/ckpt || \
X            install -d -m 755 ${base}/var/lib/heartbeat/ckpt
X    test -d ${base}/var/lib/heartbeat/ccm || \
X            install -d -m 755 ${base}/var/lib/heartbeat/ccm
X    test -d ${base}/etc/ha.d/conf || \
X            install -d -m 755 ${base}/etc/ha.d/conf
X    test -d ${base}/var/run || install -d -m 755 ${base}/var/run
X    test -f ${base}/var/run/heartbeat.pid || \
X            install -m 644 -o ${user} -g ${group} /dev/null \
X                ${base}/var/run/heartbeat.pid
X    ;;
Xesac
END-of-./pkg-install
echo x - ./pkg-deinstall
sed 's/^X//' >./pkg-deinstall << 'END-of-./pkg-deinstall'
X#! /bin/sh
X
Xask() {
X    local question default answer
X
X    question=$1
X    default=$2
X    if [ -z "${PACKAGE_BUILDING}" ]; then
X	read -p "${question} [${default}]? " answer
X    fi
X    if [ x${answer} = x ]; then
X	answer=${default}
X    fi
X    echo ${answer}
X}
X
Xyesno() {
X    local dflt question answer
X
X    question=$1
X    dflt=$2
X    while :; do
X	answer=$(ask "${question}" "${dflt}")
X	case "${answer}" in
X	[Yy]*)		return 0;;
X	[Nn]*)		return 1;;
X	esac
X	echo "Please answer yes or no."
X    done
X}
X
Xdelete_account() {
X    local u g home
X
X    u=$1
X    g=$2
X    if yesno "Do you want me to remove group \"${g}\"" y; then
X	pw groupdel -n ${g}
X	echo "Done."
X    fi
X    if yesno "Do you want me to remove user \"${u}\"" y; then
X	eval home=~${u}
X	pw userdel -n ${u}
X	echo "Done."
X	if [ -d "${home}" ]; then
X	    echo "Please remember to remove the home directory \"${home}\" as"
X	    echo "well as the mirrored files."
X	fi
X    fi
X}
X
Xif [ x$2 != xDEINSTALL ]; then
X    exit
Xfi
X
Xexport PATH=/bin:/usr/bin:/usr/sbin
X
Xbase=${PKG_PREFIX}
X
Xif ps -axc | grep -q heartbeat; then
X    if yesno "There are some heartbeat processes running.  Shall I kill them" y
X    then
X	killall heartbeat
X	sleep 2
X    else
X	echo "OK ... I hope you know what you are doing."
X    fi
Xfi
X
Xdelete_account hacluster haclient
X
Xecho "Removing runtime files"
Xif [ -d ${base}/var/lib/heartbeat ]; then
X    rm -r ${base}/var/lib/heartbeat
Xfi
Xif [ -f ${base}/var/lock/subsys/heartbeat ]; then
X    rm ${base}/var/lock/subsys/heartbeat
Xfi
Xif [ -f ${base}/var/run/heartbeat.pid ]; then
X    rm ${base}/var/run/heartbeat.pid
Xfi
END-of-./pkg-deinstall
exit
--- heartbeat-1.2.3.shar ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list