mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 16:42:05 +00:00
27b10bec7f
* Fix init.d script for all dash versions * fix * fix * debian: Again fix postinst (dont chown not existing dirs) * fix
85 lines
2.8 KiB
Bash
85 lines
2.8 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
CLICKHOUSE_USER=clickhouse
|
|
CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
|
|
CLICKHOUSE_DATADIR=/var/lib/clickhouse
|
|
CLICKHOUSE_DATADIR_OLD=/opt/clickhouse # remove after 2017-06-01
|
|
CLICKHOUSE_LOGDIR=/var/log/clickhouse-server
|
|
CLICKHOUSE_SERVER_ETCDIR=/etc/clickhouse-server
|
|
|
|
|
|
if [ "$1" = configure ]; then
|
|
|
|
if [ -x "/etc/init.d/clickhouse-server" ]; then
|
|
update-rc.d clickhouse-server defaults 19 19 >/dev/null || exit $?
|
|
fi
|
|
|
|
# Make sure the administrative user exists
|
|
if ! getent passwd ${CLICKHOUSE_USER} > /dev/null; then
|
|
adduser --system --disabled-login --no-create-home --home /nonexistent \
|
|
--shell /bin/false --group --gecos "Clickhouse server" clickhouse > /dev/null
|
|
fi
|
|
|
|
# if the user was created manually, make sure the group is there as well
|
|
if ! getent group ${CLICKHOUSE_GROUP} > /dev/null; then
|
|
addgroup --system ${CLICKHOUSE_GROUP} > /dev/null
|
|
fi
|
|
|
|
# make sure user is in the correct group
|
|
if ! id -Gn ${CLICKHOUSE_USER} | grep -qw ${CLICKHOUSE_USER}; then
|
|
adduser ${CLICKHOUSE_USER} ${CLICKHOUSE_GROUP} > /dev/null
|
|
fi
|
|
|
|
# check validity of user and group
|
|
if [ "`id -u ${CLICKHOUSE_USER}`" -eq 0 ]; then
|
|
echo "The ${CLICKHOUSE_USER} system user must not have uid 0 (root).
|
|
Please fix this and reinstall this package." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "`id -g ${CLICKHOUSE_GROUP}`" -eq 0 ]; then
|
|
echo "The ${CLICKHOUSE_USER} system user must not have root as primary group.
|
|
Please fix this and reinstall this package." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d ${CLICKHOUSE_DATADIR} ]; then
|
|
# only for compatibility for old /opt/clickhouse, remove after 2017-06-01
|
|
if [ -d ${CLICKHOUSE_DATADIR_OLD} ]; then
|
|
ln -s ${CLICKHOUSE_DATADIR_OLD} ${CLICKHOUSE_DATADIR}
|
|
else
|
|
# DONT remove after 2017-06-01 :
|
|
mkdir -p ${CLICKHOUSE_DATADIR}
|
|
chown ${CLICKHOUSE_USER}:${CLICKHOUSE_GROUP} ${CLICKHOUSE_DATADIR}
|
|
chmod 700 ${CLICKHOUSE_DATADIR}
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d ${CLICKHOUSE_LOGDIR} ]; then
|
|
mkdir -p ${CLICKHOUSE_LOGDIR}
|
|
chown root:${CLICKHOUSE_GROUP} ${CLICKHOUSE_LOGDIR}
|
|
# Allow everyone to read logs, root and clickhouse to read-write
|
|
chmod 775 ${CLICKHOUSE_LOGDIR}
|
|
fi
|
|
|
|
|
|
if [ -d ${CLICKHOUSE_LOGDIR} ]; then
|
|
# only for compatibility for old metrika user, remove string after 2017-06-01 :
|
|
su -s /bin/sh ${CLICKHOUSE_USER} -c "test -w ${CLICKHOUSE_LOGDIR}" || chown -R root:${CLICKHOUSE_GROUP} ${CLICKHOUSE_LOGDIR}; chmod -R ug+rw ${CLICKHOUSE_LOGDIR}
|
|
fi
|
|
|
|
|
|
if [ -d ${CLICKHOUSE_SERVER_ETCDIR} ]; then
|
|
# -R only for compatibility for old metrika user, remove -R after 2017-06-01
|
|
su -s /bin/sh ${CLICKHOUSE_USER} -c "test -w ${CLICKHOUSE_SERVER_ETCDIR}" || chown -R ${CLICKHOUSE_USER}:${CLICKHOUSE_GROUP} ${CLICKHOUSE_SERVER_ETCDIR}
|
|
fi
|
|
|
|
|
|
# Clean old dynamic compilation results
|
|
if [ -d "${CLICKHOUSE_DATADIR}/build" ]; then
|
|
rm -f ${CLICKHOUSE_DATADIR}/build/*.cpp ${CLICKHOUSE_DATADIR}/build/*.so ||:
|
|
fi
|
|
|
|
fi
|