Enhance install-service.sh to include Java detection for systemd compatibility and improve error handling; update Russian translations in resource packs for better localization of item names and descriptions.
This commit is contained in:
@@ -97,8 +97,34 @@ if ! id -u "${SERVICE_USER}" >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
SERVICE_GROUP="$(id -gn "${SERVICE_USER}")"
|
||||
SERVICE_HOME="$(getent passwd "${SERVICE_USER}" | cut -d: -f6)"
|
||||
echo ">> Сервис будет работать от: ${SERVICE_USER}:${SERVICE_GROUP}"
|
||||
|
||||
# 3a. Поиск Java для systemd. systemd не загружает ~/.bashrc, поэтому
|
||||
# если Java стоит только через Jabba (~/.jabba/), unit её не увидит.
|
||||
# Проверяем по очереди: Jabba у пользователя сервиса -> системный PATH.
|
||||
JAVA_HOME_PATH=""
|
||||
JAVA_BIN_DIR=""
|
||||
if [[ -d "${SERVICE_HOME}/.jabba/jdk" ]]; then
|
||||
JABBA_JDK="$(ls -1 "${SERVICE_HOME}/.jabba/jdk/" 2>/dev/null | sort -V | tail -n1 || true)"
|
||||
if [[ -n "${JABBA_JDK}" ]] \
|
||||
&& [[ -x "${SERVICE_HOME}/.jabba/jdk/${JABBA_JDK}/bin/java" ]]; then
|
||||
JAVA_HOME_PATH="${SERVICE_HOME}/.jabba/jdk/${JABBA_JDK}"
|
||||
JAVA_BIN_DIR="${JAVA_HOME_PATH}/bin"
|
||||
echo ">> Найдена Java через Jabba: ${JAVA_BIN_DIR}/java"
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${JAVA_BIN_DIR}" ]] && command -v java >/dev/null 2>&1; then
|
||||
SYSTEM_JAVA="$(command -v java)"
|
||||
echo ">> Найдена системная Java: ${SYSTEM_JAVA}"
|
||||
# Системную Java systemd увидит сам — Environment=PATH прописывать не нужно.
|
||||
fi
|
||||
if [[ -z "${JAVA_BIN_DIR}" ]] && ! command -v java >/dev/null 2>&1; then
|
||||
echo ">> ВНИМАНИЕ: java не найдена ни в PATH, ни в ~${SERVICE_USER}/.jabba." >&2
|
||||
echo " Сервис, скорее всего, упадёт с 'java: command not found'." >&2
|
||||
echo " Поставьте: sudo apt install -y openjdk-21-jre-headless" >&2
|
||||
fi
|
||||
|
||||
# 4. Проверка содержимого каталога сервера
|
||||
[[ -d "${SERVER_DIR}" ]] || err "каталог сервера не найден: ${SERVER_DIR}"
|
||||
[[ -f "${SERVER_DIR}/run.sh" ]] || err "не найден ${SERVER_DIR}/run.sh"
|
||||
@@ -185,6 +211,8 @@ Type=simple
|
||||
User=${SERVICE_USER}
|
||||
Group=${SERVICE_GROUP}
|
||||
WorkingDirectory=${SERVER_DIR}
|
||||
$( [[ -n "${JAVA_BIN_DIR}" ]] && echo "Environment=PATH=${JAVA_BIN_DIR}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" )
|
||||
$( [[ -n "${JAVA_HOME_PATH}" ]] && echo "Environment=JAVA_HOME=${JAVA_HOME_PATH}" )
|
||||
ExecStart=/usr/bin/env bash ${SERVER_DIR}/run.sh nogui
|
||||
Restart=on-failure
|
||||
RestartSec=10s
|
||||
|
||||
Reference in New Issue
Block a user