mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 02:25:52 +00:00
60 lines
1.6 KiB
Bash
Executable File
60 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# auto-update script for rippled daemon
|
|
|
|
LOCKDIR=/tmp/rippleupdate.lock
|
|
UPDATELOG=/var/log/rippled/update.log
|
|
|
|
function cleanup {
|
|
# If this directory isn't removed, future updates will fail.
|
|
rmdir $LOCKDIR
|
|
}
|
|
|
|
# Use mkdir to check if process is already running. mkdir is atomic, as against file create.
|
|
if ! mkdir $LOCKDIR 2>/dev/null; then
|
|
echo $(date -u) "lockdir exists - won't proceed." >> $UPDATELOG
|
|
exit 1
|
|
fi
|
|
trap cleanup EXIT
|
|
|
|
source /etc/os-release
|
|
can_update=false
|
|
|
|
if [[ "$ID" == "ubuntu" || "$ID" == "debian" ]] ; then
|
|
# Silent update
|
|
apt-get update -qq
|
|
|
|
# The next line is an "awk"ward way to check if the package needs to be updated.
|
|
RIPPLE=$(apt-get install -s --only-upgrade rippled | awk '/^Inst/ { print $2 }')
|
|
test "$RIPPLE" == "rippled" && can_update=true
|
|
|
|
function apply_update {
|
|
apt-get install rippled -qq
|
|
}
|
|
elif [[ "$ID" == "fedora" || "$ID" == "centos" || "$ID" == "rhel" || "$ID" == "scientific" ]] ; then
|
|
RIPPLE_REPO=${RIPPLE_REPO-stable}
|
|
yum --disablerepo=* --enablerepo=ripple-$RIPPLE_REPO clean expire-cache
|
|
|
|
yum check-update -q --enablerepo=ripple-$RIPPLE_REPO rippled || can_update=true
|
|
|
|
function apply_update {
|
|
yum update -y --enablerepo=ripple-$RIPPLE_REPO rippled
|
|
}
|
|
else
|
|
echo "unrecognized distro!"
|
|
exit 1
|
|
fi
|
|
|
|
# Do the actual update and restart the service after reloading systemctl daemon.
|
|
if [ "$can_update" = true ] ; then
|
|
exec 3>&1 1>>${UPDATELOG} 2>&1
|
|
set -e
|
|
apply_update
|
|
systemctl daemon-reload
|
|
systemctl restart rippled.service
|
|
echo $(date -u) "rippled daemon updated."
|
|
else
|
|
echo $(date -u) "no updates available" >> $UPDATELOG
|
|
fi
|
|
|