diff --git a/install.sh b/install.sh index 80201d7..46274c0 100755 --- a/install.sh +++ b/install.sh @@ -29,6 +29,7 @@ Usage: install.sh [options] Options: --root /path/to/root alternative install root (default /) --prefix /prefix directory prefix (default /usr) + --nonroot shortcut of '--disttype nonroot' --sysconfdir /etc/sysconfig specify sysconfig directory name --help this helpful message EOF @@ -36,8 +37,8 @@ EOF } root=/ -prefix=/opt/scylladb sysconfdir=/etc/sysconfig +nonroot=false while [ $# -gt 0 ]; do case "$1" in @@ -49,6 +50,10 @@ while [ $# -gt 0 ]; do prefix="$2" shift 2 ;; + "--nonroot") + nonroot=true + shift 1 + ;; "--sysconfdir") sysconfdir="$2" shift 2 @@ -63,24 +68,57 @@ while [ $# -gt 0 ]; do esac done -rprefix="$root/$prefix" -retc="$root/etc" -rusr="$root/usr" -rsysconfdir="$root/$sysconfdir" +if [ -z "$prefix" ]; then + if $nonroot; then + prefix=~/scylladb + else + prefix=/opt/scylladb + fi +fi + +rprefix=$(realpath -m "$root/$prefix") +if ! $nonroot; then + retc="$root/etc" + rsysconfdir="$root/$sysconfdir" + rusr="$root/usr" + rsystemd="$rusr/lib/systemd/system" +else + retc="$rprefix/etc" + rsysconfdir="$rprefix/$sysconfdir" + rsystemd="$retc/systemd" +fi install -d -m755 "$rsysconfdir" -install -d -m755 "$rusr"/lib/systemd/system +install -d -m755 "$rsystemd" install -d -m755 "$rprefix/scripts" "$rprefix/jmx" "$rprefix/jmx/symlinks" install -m644 dist/common/sysconfig/scylla-jmx -Dt "$rsysconfdir" -install -m644 dist/common/systemd/scylla-jmx.service -Dt "$rusr"/lib/systemd/system -if [ "$sysconfdir" != "/etc/sysconfig" ]; then - install -d -m755 "$retc"/systemd/system/scylla-jmx.service.d - cat << EOS > "$retc"/systemd/system/scylla-jmx.service.d/sysconfdir.conf +install -m644 dist/common/systemd/scylla-jmx.service -Dt "$rsystemd" +if ! $nonroot; then + if [ "$sysconfdir" != "/etc/sysconfig" ]; then + install -d -m755 "$retc"/systemd/system/scylla-jmx.service.d + cat << EOS > "$retc"/systemd/system/scylla-jmx.service.d/sysconfdir.conf [Service] EnvironmentFile= EnvironmentFile=$sysconfdir/scylla-jmx EOS + fi +else + install -d -m755 "$retc"/systemd/system/scylla-jmx.service.d + cat << EOS > "$retc"/systemd/system/scylla-jmx.service.d/nonroot.conf +[Service] +EnvironmentFile= +EnvironmentFile=$retc/sysconfig/scylla-jmx +ExecStart= +ExecStart=$rprefix/jmx/scylla-jmx \$SCYLLA_JMX_PORT \$SCYLLA_API_PORT \$SCYLLA_API_ADDR \$SCYLLA_JMX_ADDR \$SCYLLA_JMX_FILE \$SCYLLA_JMX_LOCAL \$SCYLLA_JMX_REMOTE \$SCYLLA_JMX_DEBUG +User= +Group= +EOS + if [ ! -d ~/.config/systemd/user/scylla-jmx.service.d ]; then + mkdir -p ~/.config/systemd/user/scylla-jmx.service.d + fi + ln -srf $rsystemd/scylla-jmx.service ~/.config/systemd/user/ + ln -srf "$retc"/systemd/system/scylla-jmx.service.d/nonroot.conf ~/.config/systemd/user/scylla-jmx.service.d fi install -m644 scylla-jmx-1.0.jar "$rprefix/jmx" @@ -88,3 +126,11 @@ install -m755 scylla-jmx "$rprefix/jmx" ln -sf /usr/bin/java "$rprefix/jmx/symlinks/scylla-jmx" # create symlink for /usr/lib/scylla/jmx ln -srf $rprefix/jmx "$rprefix/scripts/" + +if $nonroot; then + sed -i -e "s#/var/lib/scylla#$rprefix#g" "$rsysconfdir"/scylla-jmx + sed -i -e "s#/etc/scylla#$rprefix/etc/scylla#g" "$rsysconfdir"/scylla-jmx + sed -i -e "s#/opt/scylladb/jmx#$rprefix/jmx#g" "$rsysconfdir"/scylla-jmx + systemctl --user daemon-reload + echo "Scylla-JMX non-root install completed." +fi