PLATFORM_IF_MATCH(linux)
PLATFORM_ELSE
PLATFORM_ENDIF
# Make "this encap is installed" sentinal file available in /usr/local/var/encap
test -d var || mkdir var
test -d var/encap || mkdir var/encap
touch var/encap/${ENCAP_PKGNAME}
/dev/null
then
echo 'inittab contains an SV: line. I assume that runsvdir is already running.
'
else
echo 'Adding runsvdir to inittab...'
rm -f /etc/inittab'{new}'
cat /etc/inittab inittab.boot > /etc/inittab'{new}'
mv -f /etc/inittab'{new}' /etc/inittab
kill -HUP 1
echo 'init should start runsvdir now.
'
fi
]]>/dev/null
then
echo 'Backing up inittab to .inittab.backup...'
rm -f /etc/.inittab.backup
cp -f /etc/inittab /etc/.inittab.backup
echo 'Removing svscan lines from inittab...'
rm -f /etc/inittab'{new}'
grep -v SV: /etc/inittab > /etc/inittab'{new}'
mv -f /etc/inittab'{new}' /etc/inittab
kill -HUP 1
echo 'init should stop runsvdir now.
'
else
echo 'inittab does not contain a runsvdir line.
'
fi
]]> $LOG 2>&1
printf "Running runit postinstall script...\n"
date
case `uname` in
AIX|SunOS) PS="ps -ef" ;;
*) PS="ps auxw" ;;
esac
printf "1: Make sure required directories exist...\n"
test -d /usr/local/var || mkdir /usr/local/var
test -d /usr/local/var/svlogd || mkdir /usr/local/var/svlog
test -d /usr/local/var/service || mkdir /usr/local/var/service
test -d /usr/local/etc || mkdir /usr/local/etc
test -d /usr/local/etc/default || mkdir /usr/local/etc/default
test -d /usr/local/etc/sv || mkdir /usr/local/etc/sv
printf "\n2: Currently running runsv and svlogd processes:\n"
$PS | grep [r]unsv
$PS | grep [s]vlogd
printf "\n3: Killing any running runsv and svlogd processes...\n"
$PS | grep [r]unsv | awk '{print $2}' | xargs -n1 -i{} kill -15 -{} 2>/dev/null
$PS | grep [s]vlogd | awk '{print $2}' | xargs -n1 -i{} kill -15 -{} 2>/dev/null
sleep 2
$PS | grep [r]unsv | awk '{print $2}' | xargs -n1 -i{} kill -9 -{} 2>/dev/null
$PS | grep [s]vlogd | awk '{print $2}' | xargs -n1 -i{} kill -9 -{} 2>/dev/null
printf "\n4: Currently running runsv and svlogd processes:\n"
$PS | grep [r]unsv
$PS | grep [s]vlogd
printf "\n5: Removing any stale state information in /usr/local/etc/sv...\n"
for service in `ls /usr/local/etc/sv`; do
test -d /usr/local/etc/sv/$service/supervise && rm -rf /usr/local/etc/sv/$service/supervise
test -d /usr/local/etc/sv/$service/log/supervise && rm -rf /usr/local/etc/sv/$service/log/supervise
done
printf "\n6: Re-enabling services that were installed before package was removed...\n"
if [ -d /usr/local/var/service/.disabled ]; then
for service in `ls /usr/local/var/service/.disabled`; do
if [ -h /usr/local/var/service/$service ]; then
printf "A new version of $service exists, removing old version...\n"
rm /usr/local/var/service/.disabled/$service
else
printf "Re-enabling service $service...\n"
mv /usr/local/var/service/.disabled/$service /usr/local/var/service/
fi
done
fi
printf "\n7: Making runsvdir run all the time...\n"
if [ -f /etc/inittab ]; then
printf "Installing to /etc/inittab ...\n"
cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-install
fi
if [ -d /etc/event.d ]; then
printf "Installing to /etc/event.d/SV (Upstart) ...\n"
initctl stop SV 2>/dev/null || true
cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && cp upstart.boot /etc/event.d/SV
initctl start SV
fi
printf "\n8: Finished runit postinstall script.\n"
]]>/dev/null || printf "No services to disable.\n"
printf "Waiting 10 seconds for runsv processes to die...\n"
sleep 10
printf "All sv processes runnning now...\n"
$PS | grep [s]v
printf "If there are any runsv or svlogd processes still running, you will need\n"
printf "to kill them manually.\n"
printf "\n4: Now shutting down the runsvdir processes...\n"
# Stop the "runsvdir" process {
if [ -f /etc/inittab ]; then
printf "Removing from /etc/inittab ...\n"
cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-remove
fi
if [ -d /etc/event.d ]; then
if [ -f /etc/event.d/SV ]; then
printf "Removing /etc/event.d/SV (Upstart) ...\n"
initctl stop SV || printf "SV already stopped...\n"
rm /etc/event.d/SV
fi
fi
# } Stop the "runsvdir" process
sleep 2
printf "All sv processes runnning now...\n"
$PS | grep [s]v
printf "runsvdir should no longer be running.\n"
printf "\n5: Removing any old state from /usr/local/etc/sv directories...\n"
for service in `ls /usr/local/etc/sv`; do
test -d /usr/local/etc/sv/$service/supervise && rm -rf /usr/local/etc/sv/$service/supervise
test -d /usr/local/etc/sv/$service/log/supervise && rm -rf /usr/local/etc/sv/$service/log/supervise
done
printf "\n6: Finished runit preremove script.\n"
]]>
description runit - a UNIX init scheme with service supervision