Merge pull request #172 from klightspeed/1.4-dev#uninstall

Improve install and add uninstall script
This commit is contained in:
Fez Vrasta 2015-09-18 14:00:42 +02:00
commit 81236a3ad2
6 changed files with 306 additions and 62 deletions

View File

@ -4,7 +4,9 @@
# Net Installer, used with curl # Net Installer, used with curl
# #
steamcmd_user="$1"
channel=${2:-master} # if defined by 2nd argument install the defined version, otherwise install master channel=${2:-master} # if defined by 2nd argument install the defined version, otherwise install master
shift 2
# Download and untar installation files # Download and untar installation files
cd /tmp cd /tmp
@ -33,7 +35,7 @@ sed -i "s|^arkstCommit='.*'$|arkstCommit='${COMMIT}'|" arkmanager
version=`<../.version` version=`<../.version`
sed -i "s|^arkstVersion=\".*\"|arkstVersion='${version}'|" arkmanager sed -i "s|^arkstVersion=\".*\"|arkstVersion='${version}'|" arkmanager
chmod +x install.sh chmod +x install.sh
bash install.sh $1 > /dev/null bash install.sh "$steamcmd_user" "$@" > /dev/null
status=$? status=$?

View File

@ -45,6 +45,14 @@ arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer
appid="${appid:-376030}" appid="${appid:-376030}"
mod_appid="${mod_appid:-346110}" mod_appid="${mod_appid:-346110}"
arkautorestartfile="${arkautorestartfile:-ShooterGame/Saved/.autorestart}" arkautorestartfile="${arkautorestartfile:-ShooterGame/Saved/.autorestart}"
install_bindir="${install_bindir:-${0%/*}}"
install_libexecdir="${install_libexecdir:-${install_bindir%/*}/libexec/arkmanager}"
if [ "$steamcmd_user" == "--me" ]; then
install_datadir="${install_datadir:-${HOME}/.share/local/arkmanager}"
else
install_datadir="${install_datadir:-${install_bindir%/*}/share/arkmanager}"
fi
# Script version # Script version
arkstVersion="1.3" arkstVersion="1.3"
@ -75,8 +83,10 @@ checkConfig() {
echo -e "[" "$RED" "ERROR" "$NORMAL" "]" "\tYour SteamCMD exec could not be found." echo -e "[" "$RED" "ERROR" "$NORMAL" "]" "\tYour SteamCMD exec could not be found."
fi fi
# steamcmd_user # steamcmd_user
if ! getent passwd $steamcmd_user > /dev/null 2>&1 ; then if [ "$steamcmd_user" != "--me" ]; then
echo -e "[" "$RED" "ERROR" "$NORMAL" "]" "\tYour SteamCMD user is not valid." if ! getent passwd $steamcmd_user > /dev/null 2>&1 ; then
echo -e "[" "$RED" "ERROR" "$NORMAL" "]" "\tYour SteamCMD user is not valid."
fi
fi fi
# Environment configuration # Environment configuration
@ -974,11 +984,21 @@ doUpgrade() {
echo "arkmanager v${arkstVersion}: Checking for updates..." echo "arkmanager v${arkstVersion}: Checking for updates..."
arkstLatestVersion=`curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/.version` arkstLatestVersion=`curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/.version`
arkstLatestCommit=`curl -s https://api.github.com/repos/FezVrasta/ark-server-tools/git/refs/heads/${arkstChannel} | sed -n 's/^ *"sha": "\(.*\)",.*/\1/p'` arkstLatestCommit=`curl -s https://api.github.com/repos/FezVrasta/ark-server-tools/git/refs/heads/${arkstChannel} | sed -n 's/^ *"sha": "\(.*\)",.*/\1/p'`
reinstall_args=()
if [ -n "$install_bindir" ]; then
reinstall_args=( "${reinstall_args[@]}" "--bindir" "$install_bindir" )
fi
if [ -n "$install_libexecdir" ]; then
reinstall_args=( "${reinstall_args[@]}" "--libexecdir" "$install_libexecdir" )
fi
if [ -n "$install_datadir" ]; then
reinstall_args=( "${reinstall_args[@]}" "--datadir" "$install_datadir" )
fi
if [[ $arkstLatestVersion > $arkstVersion ]]; then if [[ $arkstLatestVersion > $arkstVersion ]]; then
read -p "A new version was found! Do you want to upgrade ARK Server Tools to v${arkstLatestVersion}?" -n 1 -r read -p "A new version was found! Do you want to upgrade ARK Server Tools to v${arkstLatestVersion}?" -n 1 -r
echo -en "\n" echo -en "\n"
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s ${steamcmd_user} ${arkstChannel} curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
else else
exit 0 exit 0
fi fi
@ -986,7 +1006,7 @@ doUpgrade() {
read -p "A hotfix is available for v${arkstLatestVersion}. Do you wish to install it?" -n 1 -r read -p "A hotfix is available for v${arkstLatestVersion}. Do you wish to install it?" -n 1 -r
echo -en "\n" echo -en "\n"
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s ${steamcmd_user} ${arkstChannel} curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
else else
exit 0 exit 0
fi fi
@ -995,6 +1015,25 @@ doUpgrade() {
fi fi
} }
doUninstallTools() {
local sudo=sudo
if [ "$steamcmd_user" == "--me" ]; then
sudo=
fi
read -p "Are you sure you want to uninstall the ARK Server Tools?" -n 1 -r
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
if [ -n "${install_datadir}" -a -x "${install_datadir}/arkmanager-uninstall.sh" ]; then
$sudo "${install_datadir}/arkmanager-uninstall.sh"
exit 0
elif [ -n "${install_libexecdir}" -a -x "${install_libexecdir}/arkmanager-uninstall.sh" ]; then
$sudo "${install_libexecdir}/arkmanager-uninstall.sh"
exit 0
fi
fi
}
useConfig() { useConfig() {
for varname in "${!configfile_@}"; do for varname in "${!configfile_@}"; do
if [ "configfile_$1" == "$varname" ]; then if [ "configfile_$1" == "$varname" ]; then
@ -1084,9 +1123,12 @@ while true; do
status) status)
printStatus printStatus
;; ;;
upgrade) upgrade-tools)
doUpgrade doUpgrade
;; ;;
uninstall-tools)
doUninstallTools
;;
useconfig) useconfig)
useConfig "$2" useConfig "$2"
shift shift
@ -1114,7 +1156,8 @@ while true; do
echo "update --warn Warn players before updating server" echo "update --warn Warn players before updating server"
echo "update --validate Validates all ARK server files" echo "update --validate Validates all ARK server files"
echo "update --update-mods Updates installed and requested mods" echo "update --update-mods Updates installed and requested mods"
echo "upgrade Check for a new ARK Server Tools version and upgrades it if needed" echo "upgrade-tools Check for a new ARK Server Tools version and upgrades it if needed"
echo "uninstall-tools Uninstall the ARK Server Tools"
echo "useconfig <name> Use the configuration overrides in the specified config name or file" echo "useconfig <name> Use the configuration overrides in the specified config name or file"
exit 1 exit 1
;; ;;

View File

@ -1,4 +1,7 @@
arkstChannel="master" # change it to a different branch to get non-stable versions arkstChannel="master" # change it to a different branch to get non-stable versions
install_bindir="/usr/bin"
install_libexecdir="/usr/libexec/arkmanager"
install_datadir="/usr/share/arkmanager"
# config SteamCMD # config SteamCMD
steamcmdroot="/home/steam/steamcmd" # path of your steamcmd instance steamcmdroot="/home/steam/steamcmd" # path of your steamcmd instance

View File

@ -1,51 +1,203 @@
#!/bin/bash #!/bin/bash
if [ "$1" == "--me" ]; then userinstall=no
PREFIX="${PREFIX:-${HOME}}" steamcmd_user=
EXECPREFIX="${EXECPREFIX:-${PREFIX}}" showusage=no
else
EXECPREFIX="${EXECPREFIX:-/usr/local}" while [ -n "$1" ]; do
case "$1" in
--me)
userinstall=yes
steamcmd_user="--me"
;;
-h|--help)
showusage=yes
break
;;
--prefix=*)
PREFIX="${1#--prefix=}"
;;
--prefix)
PREFIX="$2"
shift
;;
--exec-prefix=*)
EXECPREFIX="${1#--exec-prefix=}"
;;
--exec-prefix)
EXECPREFIX="$2"
shift
;;
--data-prefix=*)
DATAPREFIX="${1#--data-prefix=}"
;;
--data-prefix)
DATAPREFIX="$2"
shift
;;
--install-root=*)
INSTALL_ROOT="${1#--install-root=}"
;;
--install-root)
INSTALL_ROOT="$2"
shift
;;
--bindir=*)
BINDIR="${1#--bindir=}"
;;
--bindir)
BINDIR="$2"
shift
;;
--libexecdir=*)
LIBEXECDIR="${1#--libexecdir=}"
;;
--libexecdir)
LIBEXECDIR="$2"
shift
;;
--datadir=*)
DATADIR="${1#--datadir=}"
;;
--datadir)
DATADIR="$2"
shift
;;
-*)
echo "Invalid option '$1'"
showusage=yes
break;
;;
*)
if [ -n "$steamcmd_user" ]; then
echo "Multiple users specified"
showusage=yes
break;
elif getent passwd "$1" >/dev/null 2>&1; then
steamcmd_user="$1"
else
echo "Invalid user '$1'"
showusage=yes
break;
fi
;;
esac
shift
done
if [ "$userinstall" == "yes" -a "$UID" -eq 0 ]; then
echo "Refusing to perform user-install as root"
showusage=yes
fi fi
if [ ! -z "$1" ]; then if [ "$showusage" == "no" -a -z "$steamcmd_user" ]; then
if [ "$1" == "--me" -a "$UID" -ne 0 ]; then echo "No user specified"
showusage=yes
fi
if [ "$userinstall" == "yes" ]; then
PREFIX="${PREFIX:-${HOME}}"
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
DATAPREFIX="${DATAPREFIX:-${PREFIX}/.local/share}"
else
PREFIX="${PREFIX:-/usr/local}"
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
DATAPREFIX="${DATAPREFIX:-${PREFIX}/share}"
fi
BINDIR="${BINDIR:-${EXECPREFIX}/bin}"
LIBEXECDIR="${LIBEXECDIR:-${EXECPREFIX}/libexec/arkmanager}"
DATADIR="${DATADIR:-${DATAPREFIX}/arkmanager}"
if [ "$showusage" == "yes" ]; then
echo "Usage: ./install.sh {<user>|--me} [OPTIONS]"
echo "You must specify your system steam user who own steamcmd directory to install ARK Tools."
echo "Specify the special used '--me' to perform a user-install."
echo
echo "<user> The user arkmanager should be run as"
echo
echo "Option Description"
echo "--help, -h Show this help text"
echo "--me Perform a user-install"
echo "--prefix Specify the prefix under which to install arkmanager"
echo " [PREFIX=${PREFIX}]"
echo "--exec-prefix Specify the prefix under which to install executables"
echo " [EXECPREFIX=${EXECPREFIX}]"
echo "--data-prefix Specify the prefix under which to install suppor files"
echo " [DATAPREFIX=${DATAPREFIX}]"
echo "--install-root Specify the staging directory in which to perform the install"
echo " [INSTALL_ROOT=${INSTALL_ROOT}]"
echo "--bindir Specify the directory under which to install executables"
echo " [BINDIR=${BINDIR}]"
echo "--libexecdir Specify the directory under which to install executable support files"
echo " [LIBEXECDIR=${LIBEXECDIR}]"
echo "--datadir Specify the directory under which to install support files"
echo " [DATADIR=${DATADIR}]"
exit 1
fi
if [ "$userinstall" == "yes" ]; then
# Copy arkmanager to ~/bin # Copy arkmanager to ~/bin
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/bin" mkdir -p "${INSTALL_ROOT}${BINDIR}"
cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" cp arkmanager "${INSTALL_ROOT}${BINDIR}/arkmanager"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" chmod +x "${INSTALL_ROOT}${BINDIR}/arkmanager"
# Create a folder in ~/.local/share to store arkmanager support files
mkdir -p "${INSTALL_ROOT}${DATADIR}"
# Copy the uninstall script to ~/.local/share/arkmanager
cp uninstall-user.sh "${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
chmod +x "${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
sed -i -e "s|^BINDIR=.*|BINDIR=\"${BINDIR}\"|" \
-e "s|^DATADIR=.*|DATADIR=\"${DATADIR}\"|" \
"${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
# Create a folder in ~/logs to let Ark tools write its own log files # Create a folder in ~/logs to let Ark tools write its own log files
mkdir -p "${INSTALL_ROOT}${PREFIX}/logs/arktools" mkdir -p "${INSTALL_ROOT}${PREFIX}/logs/arktools"
# Copy arkmanager.cfg to ~/.arkmanager.cfg.NEW
cp arkmanager.cfg "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
# Change the defaults in the new config file
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"--me\"|" \
-e "s|\"/home/steam|\"${PREFIX}|" \
-e "s|/var/log/arktools|${PREFIX}/logs/arktools|" \
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
"${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
# Copy arkmanager.cfg to ~/.arkmanager.cfg if it doesn't already exist # Copy arkmanager.cfg to ~/.arkmanager.cfg if it doesn't already exist
if [ -f "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" ]; then if [ -f "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" ]; then
cp -n arkmanager.cfg "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"me\"|;s|\"/home/steam|\"${PREFIX}|;s|/var/log/arktools|${PREFIX}/logs/arktools|" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it." echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
echo "A copy of the new configuration file was included in '${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW'. Make sure to review any changes and update your config accordingly!" echo "A copy of the new configuration file was included in '${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW'. Make sure to review any changes and update your config accordingly!"
exit 2 exit 2
else else
cp -n arkmanager.cfg "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" mv -n "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg"
sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"me\"|;s|\"/home/steam|\"${PREFIX}|;s|/var/log/arktools|${PREFIX}/logs/arktools|" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg"
fi fi
elif [ "$1" == "me" ]; then else
echo "You specified the special 'me' user while running as root. This is not permitted."
exit 1
else
# Copy arkmanager to /usr/bin and set permissions # Copy arkmanager to /usr/bin and set permissions
cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" cp arkmanager "${INSTALL_ROOT}${BINDIR}/arkmanager"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" chmod +x "${INSTALL_ROOT}${BINDIR}/arkmanager"
# Copy the uninstall script to ~/.local/share/arkmanager
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
cp uninstall.sh "${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
chmod +x "${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
sed -i -e "s|^BINDIR=.*|BINDIR=\"${BINDIR}\"|" \
-e "s|^LIBEXECDIR=.*|LIBEXECDIR=\"${LIBEXECDIR}\"|" \
-e "s|^DATADIR=.*|DATADIR=\"${DATADIR}\"|" \
"${INSTALL_ROOT}${DATADIR}/arkmanager-uninstall.sh"
# Copy arkdaemon to /etc/init.d ,set permissions and add it to boot # Copy arkdaemon to /etc/init.d ,set permissions and add it to boot
if [ -f /lib/lsb/init-functions ]; then if [ -f /lib/lsb/init-functions ]; then
# on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit # on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit
if [ -f /etc/systemd/system.conf ]; then # used by systemd if [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" mkdir -p "${INSTALL_ROOT}${LIBEXECDIRPREFIX}"
cp lsb/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp lsb/arkdaemon "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" sed -i "s@^DAEMON=\"/usr/bin/@DAEMON=\"${BINDIR}/@" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
if [ -z "${INSTALL_ROOT}" ]; then if [ -z "${INSTALL_ROOT}" ]; then
systemctl daemon-reload systemctl daemon-reload
systemctl enable arkmanager.service systemctl enable arkmanager.service
@ -55,7 +207,7 @@ if [ ! -z "$1" ]; then
else # systemd not present, so use sysvinit else # systemd not present, so use sysvinit
cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager"
sed -i "s|^DAEMON=\"/usr|DAEMON=\"${EXECPREFIX}|" "${INSTALL_ROOT}/etc/init.d/arkmanager" sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}/etc/init.d/arkmanager"
# add to startup if the system use sysinit # add to startup if the system use sysinit
if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then
update-rc.d arkmanager defaults update-rc.d arkmanager defaults
@ -66,12 +218,12 @@ if [ ! -z "$1" ]; then
elif [ -f /etc/rc.d/init.d/functions ]; then elif [ -f /etc/rc.d/init.d/functions ]; then
# on RHEL 7, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit # on RHEL 7, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit
if [ -f /etc/systemd/system.conf ]; then # used by systemd if [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
cp redhat/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp redhat/arkdaemon "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" sed -i "s@^DAEMON=\"/usr/bin/@DAEMON=\"${BINDIR}/@" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
if [ -z "${INSTALL_ROOT}" ]; then if [ -z "${INSTALL_ROOT}" ]; then
systemctl daemon-reload systemctl daemon-reload
systemctl enable arkmanager.service systemctl enable arkmanager.service
@ -81,7 +233,7 @@ if [ ! -z "$1" ]; then
else # systemd not preset, so use sysvinit else # systemd not preset, so use sysvinit
cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" sed -i "s@^DAEMON=\"/usr/bin/@DAEMON=\"${BINDIR}/@" "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
if [ -x /sbin/chkconfig -a -z "${INSTALL_ROOT}" ]; then if [ -x /sbin/chkconfig -a -z "${INSTALL_ROOT}" ]; then
chkconfig --add arkmanager chkconfig --add arkmanager
echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "Ark server will now start on boot, if you want to remove this feature run the following line"
@ -91,19 +243,19 @@ if [ ! -z "$1" ]; then
elif [ -f /sbin/runscript ]; then elif [ -f /sbin/runscript ]; then
cp openrc/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" cp openrc/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/init.d/arkmanager" sed -i "s@^DAEMON=\"/usr/bin/@DAEMON=\"${BINDIR}/@" "${INSTALL_ROOT}/etc/init.d/arkmanager"
if [ -x /sbin/rc-update -a -z "${INSTALL_ROOT}" ]; then if [ -x /sbin/rc-update -a -z "${INSTALL_ROOT}" ]; then
rc-update add arkmanager default rc-update add arkmanager default
echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "rc-update del arkmanager default" echo "rc-update del arkmanager default"
fi fi
elif [ -f /etc/systemd/system.conf ]; then # used by systemd elif [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
cp systemd/arkdaemon.init "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp systemd/arkdaemon.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" sed -i "s@^DAEMON=\"/usr/bin/@DAEMON=\"${BINDIR}/@" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
if [ -z "${INSTALL_ROOT}" ]; then if [ -z "${INSTALL_ROOT}" ]; then
systemctl enable arkmanager.service systemctl enable arkmanager.service
echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "Ark server will now start on boot, if you want to remove this feature run the following line"
@ -117,29 +269,22 @@ if [ ! -z "$1" ]; then
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists # Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
mkdir -p "${INSTALL_ROOT}/etc/arkmanager" mkdir -p "${INSTALL_ROOT}/etc/arkmanager"
cp arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$1\"|" \
-e "s|\"/home/steam|\"/home/$1|" \
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
"${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
if [ -f "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" ]; then if [ -f "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" ]; then
cp -n arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it." echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
echo "A copy of the new configuration file was included in /etc/arkmanager. Make sure to review any changes and update your config accordingly!" echo "A copy of the new configuration file was included in /etc/arkmanager. Make sure to review any changes and update your config accordingly!"
exit 2 exit 2
else else
cp -n arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" mv -n "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$1\"|;s|\"/home/steam|\"/home/$1|" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
fi fi
fi
else
echo "You must specify your system steam user who own steamcmd directory to install ARK Tools."
echo "Specify the special used '--me' to perform a user-install."
echo "Usage: ./install.sh steam"
echo
echo "Environment variables affecting install:"
echo "EXECPREFIX: prefix in which to install arkmanager executable"
echo " [${EXECPREFIX}]"
echo "INSTALL_ROOT: staging directory in which to perform install"
echo " [${INSTALL_ROOT}]"
exit 1
fi fi
exit 0 exit 0

14
tools/uninstall-user.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
#
# uninstall-user.sh
BINDIR="/home/steam/bin"
DATADIR="/home/steam/.local/share/arkmanager"
for f in "${BINDIR}/arkmanager" \
"${DATADIR}/uninstall.sh"
do
if [ -f "$f" ]; then
rm "$f"
fi
done

37
tools/uninstall.sh Normal file
View File

@ -0,0 +1,37 @@
#!/bin/bash
#
# uninstall.sh
BINDIR="/usr/bin"
DATADIR="/usr/share/arkmanager"
LIBEXECDIR="/usr/libexec/arkmanager"
INITSCRIPT=
if [ -f "/etc/rc.d/init.d/arkmanager" ]; then
INITSCRIPT="/etc/rc.d/init.d/arkmanager"
if [ -f "/etc/rc.d/init.d/functions" ]; then
chkconfig arkmanager off
fi
elif [ -f "/etc/init.d/arkmanager" ]; then
INITSCRIPT="/etc/init.d/arkmanager"
if [ -f "/lib/lsb/init-functions" ]; then
update-rc.d -f arkmanager remove
elif [ -f "/sbin/runscript" ]; then
rc-update del arkmanager default
fi
elif [ -f "/etc/systemd/system/arkmanager.service" ]; then
INITSCRIPT="/etc/systemd/system/arkmanager.service"
systemctl disable arkmanager.service
fi
if [ -n "$INITSCRIPT" ]; then
for f in "${INITSCRIPT}" \
"${BINDIR}/arkmanager" \
"${LIBEXECDIR}/arkmanager.init" \
"${LIBEXECDIR}/arkmanager-uninstall.sh"
do
if [ -f "$f" ]; then
rm "$f"
fi
done
fi