Merge "nonroot installer" from Takuya
"This is nonroot installer patchset v4, for scylla-jmx." * 'nonroot_v4' of https://github.com/syuu1228/scylla-jmx: install.sh: add --nonroot mode dist/common/systemd: untemplataize *.service, use drop-in units instead dist: move package build script to install.sh
This commit is contained in:
commit
dc7f37b901
@ -5,12 +5,7 @@ After=scylla-server.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
{{#debian}}
|
||||
EnvironmentFile=/etc/default/scylla-jmx
|
||||
{{/debian}}
|
||||
{{#redhat}}
|
||||
EnvironmentFile=/etc/sysconfig/scylla-jmx
|
||||
{{/redhat}}
|
||||
User=scylla
|
||||
Group=scylla
|
||||
ExecStart=/opt/scylladb/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
|
23
dist/debian/rules.mustache
vendored
23
dist/debian/rules.mustache
vendored
@ -1,31 +1,12 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
DOC = $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/share/doc/{{product}}-jmx
|
||||
DEST = $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/jmx
|
||||
M2_REPO= $(CURDIR)/m2
|
||||
|
||||
override_dh_auto_build:
|
||||
|
||||
override_dh_auto_clean:
|
||||
|
||||
override_dh_auto_install:
|
||||
mkdir -p $(CURDIR)/debian/{{product}}-jmx/etc/default/ && \
|
||||
cp $(CURDIR)/dist/common/sysconfig/scylla-jmx \
|
||||
$(CURDIR)/debian/{{product}}-jmx/etc/default/
|
||||
|
||||
mkdir -p $(DOC) && \
|
||||
cp $(CURDIR)/*.md $(DOC)
|
||||
cp $(CURDIR)/NOTICE $(DOC)
|
||||
|
||||
mkdir -p $(DEST)
|
||||
cp $(CURDIR)/scylla-jmx $(DEST)
|
||||
cp $(CURDIR)/scylla-jmx-1.0.jar $(DEST)
|
||||
mkdir $(DEST)/symlinks
|
||||
ln -sf /usr/bin/java $(DEST)/symlinks/scylla-jmx
|
||||
|
||||
mkdir -p $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/scripts
|
||||
# Create symlink for /usr/lib/scylla/jmx
|
||||
ln -sf /opt/scylladb/jmx $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/scripts/
|
||||
dh_auto_install
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-jmx" --sysconfdir /etc/default
|
||||
|
||||
override_dh_installinit:
|
||||
{{#scylla}}
|
||||
|
19
dist/redhat/scylla-jmx.spec.mustache
vendored
19
dist/redhat/scylla-jmx.spec.mustache
vendored
@ -22,26 +22,9 @@ Requires: {{product}}-server java-1.8.0-openjdk-headless
|
||||
|
||||
|
||||
%build
|
||||
MUSTACHE_DIST="\"redhat\": true"
|
||||
pystache dist/common/systemd/scylla-jmx.service.mustache "{ $MUSTACHE_DIST }" > scylla-jmx.service
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/
|
||||
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
|
||||
mkdir -p $RPM_BUILD_ROOT/opt/scylladb/
|
||||
|
||||
install -m644 dist/common/sysconfig/scylla-jmx $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/
|
||||
install -m644 scylla-jmx.service $RPM_BUILD_ROOT%{_unitdir}/
|
||||
install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/
|
||||
install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/jmx
|
||||
install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/jmx/symlinks
|
||||
install -m644 scylla-jmx-1.0.jar $RPM_BUILD_ROOT/opt/scylladb/jmx/
|
||||
install -m755 scylla-jmx $RPM_BUILD_ROOT/opt/scylladb/jmx
|
||||
ln -sf /usr/bin/java $RPM_BUILD_ROOT/opt/scylladb/jmx/symlinks/scylla-jmx
|
||||
install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/scripts
|
||||
# create symlink for /usr/lib/scylla/jmx
|
||||
ln -sf /opt/scylladb/jmx $RPM_BUILD_ROOT/opt/scylladb/scripts/
|
||||
./install.sh --root "$RPM_BUILD_ROOT"
|
||||
|
||||
%pre
|
||||
/usr/sbin/groupadd scylla 2> /dev/null || :
|
||||
|
136
install.sh
Executable file
136
install.sh
Executable file
@ -0,0 +1,136 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2019 ScyllaDB
|
||||
#
|
||||
|
||||
#
|
||||
# This file is part of Scylla.
|
||||
#
|
||||
# Scylla is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Scylla is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Scylla. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
print_usage() {
|
||||
cat <<EOF
|
||||
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
|
||||
exit 1
|
||||
}
|
||||
|
||||
root=/
|
||||
sysconfdir=/etc/sysconfig
|
||||
nonroot=false
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"--root")
|
||||
root="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--prefix")
|
||||
prefix="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--nonroot")
|
||||
nonroot=true
|
||||
shift 1
|
||||
;;
|
||||
"--sysconfdir")
|
||||
sysconfdir="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--help")
|
||||
shift 1
|
||||
print_usage
|
||||
;;
|
||||
*)
|
||||
print_usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
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 "$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 "$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"
|
||||
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
|
@ -43,6 +43,7 @@ ar.add('build/SCYLLA-RELEASE-FILE', arcname='SCYLLA-RELEASE-FILE')
|
||||
ar.add('build/SCYLLA-VERSION-FILE', arcname='SCYLLA-VERSION-FILE')
|
||||
ar.add('build/SCYLLA-PRODUCT-FILE', arcname='SCYLLA-PRODUCT-FILE')
|
||||
ar.add('dist')
|
||||
ar.add('install.sh')
|
||||
ar.add('target/scylla-jmx-1.0.jar', arcname='scylla-jmx-1.0.jar')
|
||||
ar.add('scripts/scylla-jmx', arcname='scylla-jmx')
|
||||
ar.add('README.md')
|
||||
|
Loading…
Reference in New Issue
Block a user