mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-02 15:30:55 +00:00
Systemd support on Linux - GitHub issue #39
This commit is contained in:
parent
01d13c153d
commit
87b26b0aaf
@ -48,8 +48,9 @@ case "$system" in
|
|||||||
mkdir -p 'build-installer/var/lib/zerotier-one'
|
mkdir -p 'build-installer/var/lib/zerotier-one'
|
||||||
cp -fp 'ext/installfiles/linux/uninstall.sh' 'build-installer/var/lib/zerotier-one'
|
cp -fp 'ext/installfiles/linux/uninstall.sh' 'build-installer/var/lib/zerotier-one'
|
||||||
cp -fp 'zerotier-one' 'build-installer/var/lib/zerotier-one'
|
cp -fp 'zerotier-one' 'build-installer/var/lib/zerotier-one'
|
||||||
mkdir -p 'build-installer/etc/init.d'
|
mkdir -p 'build-installer/tmp'
|
||||||
cp -fp 'ext/installfiles/linux/init.d/zerotier-one' 'build-installer/etc/init.d'
|
cp -fp 'ext/installfiles/linux/init.d/zerotier-one' 'build-installer/tmp/init.d_zerotier-one'
|
||||||
|
cp -fp 'ext/installfiles/linux/systemd/zerotier-one.service' 'build-installer/tmp/systemd_zerotier-one.service'
|
||||||
|
|
||||||
targ="ZeroTierOneInstaller-linux-${machine}-${vmajor}_${vminor}_${revision}"
|
targ="ZeroTierOneInstaller-linux-${machine}-${vmajor}_${vminor}_${revision}"
|
||||||
# Use gzip in Linux since some minimal Linux systems do not have bunzip2
|
# Use gzip in Linux since some minimal Linux systems do not have bunzip2
|
||||||
|
@ -12,6 +12,22 @@ if [ "$UID" -ne 0 ]; then
|
|||||||
dryRun=1
|
dryRun=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Detect systemd vs. regular init
|
||||||
|
SYSTEMDUNITDIR=
|
||||||
|
if [ -e /bin/systemctl -o -e /usr/bin/systemctl -o -e /usr/local/bin/systemctl -o -e /sbin/systemctl -o -e /usr/sbin/systemctl ]; then
|
||||||
|
if [ -e /usr/bin/pkg-config ]; then
|
||||||
|
SYSTEMDUNITDIR=`/usr/bin/pkg-config systemd --variable=systemdsystemunitdir`
|
||||||
|
fi
|
||||||
|
if [ -z "$SYSTEMDUNITDIR" -o ! -d "$SYSTEMDUNITDIR" ]; then
|
||||||
|
if [ -d /usr/lib/systemd/system ]; then
|
||||||
|
SYSTEMDUNITDIR=/usr/lib/systemd/system
|
||||||
|
fi
|
||||||
|
if [ -d /etc/systemd/system ]; then
|
||||||
|
SYSTEMDUNITDIR=/etc/systemd/system
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ $dryRun -gt 0 ]; then
|
if [ $dryRun -gt 0 ]; then
|
||||||
alias ln="echo '>> dry run: ln'"
|
alias ln="echo '>> dry run: ln'"
|
||||||
alias rm="echo '>> dry run: rm'"
|
alias rm="echo '>> dry run: rm'"
|
||||||
@ -21,6 +37,7 @@ if [ $dryRun -gt 0 ]; then
|
|||||||
alias chkconfig="echo '>> dry run: chkconfig'"
|
alias chkconfig="echo '>> dry run: chkconfig'"
|
||||||
alias zerotier-cli="echo '>> dry run: zerotier-cli'"
|
alias zerotier-cli="echo '>> dry run: zerotier-cli'"
|
||||||
alias service="echo '>> dry run: service'"
|
alias service="echo '>> dry run: service'"
|
||||||
|
alias systemctl="echo '>> dry run: systemctl'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
scriptPath="`dirname "$0"`/`basename "$0"`"
|
scriptPath="`dirname "$0"`/`basename "$0"`"
|
||||||
@ -62,11 +79,17 @@ ln -sf /var/lib/zerotier-one/zerotier-one /usr/bin/zerotier-cli
|
|||||||
|
|
||||||
echo 'Installing and (re-)starting zerotier-one daemon...'
|
echo 'Installing and (re-)starting zerotier-one daemon...'
|
||||||
|
|
||||||
chkconfig zerotier-one on
|
if [ -n "$SYSTEMDUNITDIR" -a -d "$SYSTEMDUNITDIR" ]; then
|
||||||
service zerotier-one restart
|
cp -f /tmp/systemd_zerotier-one.service "$SYSTEMDUNITDIR/zerotier-one.service"
|
||||||
|
systemctl enable zerotier-one
|
||||||
sleep 1
|
systemctl restart zerotier-one
|
||||||
zerotier-cli info
|
else
|
||||||
|
cp -f /tmp/init.d_zerotier-one /etc/init.d/zerotier-one
|
||||||
|
chmod 0755 /etc/init.d/zerotier-one
|
||||||
|
chkconfig zerotier-one on
|
||||||
|
service zerotier-one restart
|
||||||
|
fi
|
||||||
|
rm -f /tmp/systemd_zerotier-one.service /tmp/init.d_zerotier-one
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
11
ext/installfiles/linux/systemd/zerotier-one.service
Normal file
11
ext/installfiles/linux/systemd/zerotier-one.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=ZeroTier One
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/var/lib/zerotier-one/zerotier-one
|
||||||
|
Restart=always
|
||||||
|
KillMode=process
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -7,6 +7,22 @@ if [ "$UID" -ne 0 ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Detect systemd vs. regular init
|
||||||
|
SYSTEMDUNITDIR=
|
||||||
|
if [ -e /bin/systemctl -o -e /usr/bin/systemctl -o -e /usr/local/bin/systemctl -o -e /sbin/systemctl -o -e /usr/sbin/systemctl ]; then
|
||||||
|
if [ -e /usr/bin/pkg-config ]; then
|
||||||
|
SYSTEMDUNITDIR=`/usr/bin/pkg-config systemd --variable=systemdsystemunitdir`
|
||||||
|
fi
|
||||||
|
if [ -z "$SYSTEMDUNITDIR" -o ! -d "$SYSTEMDUNITDIR" ]; then
|
||||||
|
if [ -d /usr/lib/systemd/system ]; then
|
||||||
|
SYSTEMDUNITDIR=/usr/lib/systemd/system
|
||||||
|
fi
|
||||||
|
if [ -d /etc/systemd/system ]; then
|
||||||
|
SYSTEMDUNITDIR=/etc/systemd/system
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "This will uninstall ZeroTier One, hit CTRL+C to abort."
|
echo "This will uninstall ZeroTier One, hit CTRL+C to abort."
|
||||||
@ -14,20 +30,36 @@ echo "Waiting 5 seconds..."
|
|||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
echo "Killing any running zerotier-one service..."
|
echo "Killing any running zerotier-one service..."
|
||||||
|
if [ -n "$SYSTEMDUNITDIR" -a -d "$SYSTEMDUNITDIR" ]; then
|
||||||
|
systemctl stop zerotier-one
|
||||||
|
systemctl disable zerotier-one
|
||||||
|
else
|
||||||
|
service stop zerotier-one
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
killall -q -TERM zerotier-one
|
killall -q -TERM zerotier-one
|
||||||
sleep 2
|
sleep 1
|
||||||
killall -q -KILL zerotier-one
|
killall -q -KILL zerotier-one
|
||||||
|
|
||||||
echo "Removing SysV init items..."
|
if [ -f /etc/init.d/zerotier-one ]; then
|
||||||
rm -fv /etc/init.d/zerotier-one
|
echo "Removing SysV init items..."
|
||||||
find /etc/rc*.d -name '???zerotier-one' -print0 | xargs -0 rm -fv
|
rm -f /etc/init.d/zerotier-one
|
||||||
|
find /etc/rc*.d -name '???zerotier-one' -print0 | xargs -0 rm -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$SYSTEMDUNITDIR" -a -d "$SYSTEMDUNITDIR" -a -f "$SYSTEMDUNITDIR/zerotier-one.service" ]; then
|
||||||
|
echo "Removing systemd service..."
|
||||||
|
rm -f "$SYSTEMDUNITDIR/zerotier-one.service"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Erasing binary and support files..."
|
echo "Erasing binary and support files..."
|
||||||
cd /var/lib/zerotier-one
|
if [ -d /var/lib/zerotier-one ]; then
|
||||||
rm -rfv zerotier-one *.persist authtoken.secret identity.public *.log *.pid *.sh updates.d networks.d iddb.d
|
cd /var/lib/zerotier-one
|
||||||
|
rm -rf zerotier-one *.persist identity.public *.log *.pid *.sh updates.d networks.d iddb.d
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Erasing anything installed into system bin directories..."
|
echo "Erasing anything installed into system bin directories..."
|
||||||
rm -fv /usr/local/bin/zerotier-* /usr/bin/zerotier-*
|
rm -f /usr/local/bin/zerotier-cli /usr/bin/zerotier-cli
|
||||||
|
|
||||||
echo "Done."
|
echo "Done."
|
||||||
echo
|
echo
|
||||||
|
Loading…
x
Reference in New Issue
Block a user