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:
Leonid Pershin
2026-05-08 12:34:57 +03:00
parent c0127ac1ec
commit 964f262e4d
3 changed files with 208 additions and 180 deletions
+28
View File
@@ -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