From e65124f5406f06edf0ba53623c0c6c4055e27155 Mon Sep 17 00:00:00 2001 From: s13bby Date: Sun, 6 Sep 2026 14:33:15 +0600 Subject: [PATCH] one update --- alpine_install.sh | 383 ---------------------------------------------- 1 file changed, 383 deletions(-) diff --git a/alpine_install.sh b/alpine_install.sh index b6f8d69..dae83a1 100644 --- a/alpine_install.sh +++ b/alpine_install.sh @@ -1,386 +1,3 @@ -#!/bin/sh -# ============================================================ -# LabWC Alpine Setup Script -# Version 9 -# -# Запуск: -# -# ./setup.sh -# ./setup.sh ivan -# -# Можно запускать: -# - от root -# - от обычного пользователя -# -# Если запущено не от root, скрипт автоматически использует sudo. -# -# ВАЖНО: -# - mesa-dri НЕ используется -# - networkmanager-applet НЕ является обязательным -# - xdg-desktop-portal-gtk НЕ является обязательным -# - seatd != группа seat -# ============================================================ - -set -eu - -# ============================================================ -# 0. Параметры -# ============================================================ - -USER_NAME="${1:-ivan}" - -HOME_DIR="/home/$USER_NAME" -PROFILE="$HOME_DIR/.profile" - -ZENITH_REPO="https://zenithcode.duckdns.org/s13bby/zenith-cli.git" -ZENITH_DIR="$HOME_DIR/zenith-cli" -LOCAL_BIN="$HOME_DIR/.local/bin" - -# ============================================================ -# 1. Определяем абсолютный путь к самому скрипту -# ============================================================ - -case "$0" in - /*) - SCRIPT_PATH="$0" - ;; - *) - SCRIPT_PATH="$(pwd)/$0" - ;; -esac - -# ============================================================ -# 2. Проверка имени пользователя -# ============================================================ - -case "$USER_NAME" in - ""|*[!a-zA-Z0-9_-]*) - echo "[!] Некорректное имя пользователя: $USER_NAME" - exit 1 - ;; -esac - -# ============================================================ -# 3. Автоматический переход в root -# ============================================================ - -if [ "$(id -u)" -ne 0 ]; then - - echo - echo "==================================================" - echo "[*] Скрипт запущен от: $(id -un)" - echo "[*] Требуются root-права." - echo "==================================================" - echo - - if ! command -v sudo >/dev/null 2>&1; then - - echo "[!] sudo не установлен." - echo - echo "[!] Один раз выполните от root:" - echo - echo " apk add sudo" - echo - echo "[!] После этого снова:" - echo - echo " ./setup.sh" - echo - - exit 1 - fi - - echo "[*] Перезапуск через sudo..." - echo - - exec sudo "$SCRIPT_PATH" "$@" - -fi - -# ============================================================ -# 4. Root -# ============================================================ - -echo -echo "==================================================" -echo " LabWC Alpine Setup - Version 9" -echo "==================================================" -echo -echo "[*] Root: OK" -echo "[*] User: $USER_NAME" -echo "[*] Home: $HOME_DIR" -echo - -# ============================================================ -# 5. Проверка Alpine -# ============================================================ - -if [ ! -f /etc/alpine-release ]; then - - echo "[!] Это не похоже на Alpine Linux." - echo "[!] /etc/alpine-release не найден." - - exit 1 - -fi - -ALPINE_VERSION="$(cat /etc/alpine-release)" - -echo "[*] Alpine: $ALPINE_VERSION" - -# ============================================================ -# 6. Проверка repositories -# ============================================================ - -if [ ! -f /etc/apk/repositories ]; then - - echo "[!] /etc/apk/repositories не найден." - - exit 1 - -fi - -echo -echo "[*] Проверка repositories..." - -# ============================================================ -# 7. Функции -# ============================================================ - -package_exists() { - PACKAGE="$1" - - apk search -x "$PACKAGE" 2>/dev/null | - grep -Eq "^${PACKAGE}(-[0-9].*)?$" -} - - -install_required() { - PACKAGE="$1" - - echo - echo "[*] Обязательный пакет: $PACKAGE" - - if apk info -e "$PACKAGE" >/dev/null 2>&1; then - - echo "[+] $PACKAGE уже установлен." - - return 0 - - fi - - if ! package_exists "$PACKAGE"; then - - echo - echo "[!!!] ОШИБКА" - echo "[!!!] Пакет '$PACKAGE' отсутствует." - echo - echo "[!] Alpine: $ALPINE_VERSION" - echo - echo "[!] Репозитории:" - cat /etc/apk/repositories - echo - - exit 1 - - fi - - apk add "$PACKAGE" -} - - -install_optional() { - PACKAGE="$1" - - echo - echo "[*] Необязательный пакет: $PACKAGE" - - if apk info -e "$PACKAGE" >/dev/null 2>&1; then - - echo "[+] $PACKAGE уже установлен." - - return 0 - - fi - - if package_exists "$PACKAGE"; then - - apk add "$PACKAGE" - - echo "[+] $PACKAGE установлен." - - else - - echo "[!] $PACKAGE отсутствует в текущих репозиториях." - echo "[!] Пропуск." - - fi -} - - -add_user_group() { - GROUP_NAME="$1" - - if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then - - echo "[!] Группа '$GROUP_NAME' отсутствует." - echo "[!] Пропуск." - - return 0 - - fi - - if id -nG "$USER_NAME" 2>/dev/null | - tr ' ' '\n' | - grep -qx "$GROUP_NAME" - then - - echo "[+] $USER_NAME уже состоит в группе $GROUP_NAME." - - else - - echo "[*] Добавление $USER_NAME в группу $GROUP_NAME..." - - addgroup "$USER_NAME" "$GROUP_NAME" - - echo "[+] $USER_NAME добавлен в $GROUP_NAME." - - fi -} - - -enable_service() { - SERVICE="$1" - - echo - echo "[*] Настройка службы: $SERVICE" - - if ! command -v rc-service >/dev/null 2>&1; then - - echo "[!] rc-service отсутствует." - echo "[!] Пропуск." - - return 0 - - fi - - if rc-service "$SERVICE" status >/dev/null 2>&1; then - - echo "[+] $SERVICE уже запущен." - - else - - echo "[*] Запуск $SERVICE..." - - rc-service "$SERVICE" start 2>/dev/null || { - echo "[!] Не удалось запустить $SERVICE сейчас." - echo "[!] Продолжаем." - } - - fi - - rc-update add "$SERVICE" default 2>/dev/null || { - - echo "[!] Не удалось добавить $SERVICE в default." - echo "[!] Продолжаем." - - } - -} - - -check_command() { - NAME="$1" - COMMAND="$2" - - printf '%-25s' "$NAME:" - - if command -v "$COMMAND" >/dev/null 2>&1; then - echo "OK" - else - echo "ERROR" - fi -} - -# ============================================================ -# 8. Community -# ============================================================ - -echo -echo "==================================================" -echo "[*] Проверка community" -echo "==================================================" - -if grep -qE '^[[:space:]]*[^#[:space:]].*/community/?[[:space:]]*$' \ - /etc/apk/repositories -then - - echo "[+] community уже включён." - -elif grep -qE '^[[:space:]]*#.*\/community/?[[:space:]]*$' \ - /etc/apk/repositories -then - - echo "[*] Раскомментирование community..." - - sed -i \ - 's|^[[:space:]]*#\(.*\/community/?[[:space:]]*\)$|\1|' \ - /etc/apk/repositories - - echo "[+] community включён." - -else - - echo "[!] Репозиторий community не найден." - echo - echo "[!] Текущий /etc/apk/repositories:" - echo - cat /etc/apk/repositories - echo - - exit 1 - -fi - -# ============================================================ -# 9. APK update -# ============================================================ - -echo -echo "==================================================" -echo "[*] Обновление APK" -echo "==================================================" - -apk update - -# ============================================================ -# 10. Базовые инструменты -# ============================================================ - -echo -echo "==================================================" -echo "[*] Базовые инструменты" -echo "==================================================" - -install_required sudo -install_required nano -install_required git -install_required bash -install_required build-base - -# ============================================================ -# 11. Пользователь -# ============================================================ - -echo -echo "==================================================" -echo "[*] Пользователь $USER_NAME" -echo "==================================================" - -if id "$USER_NAME" >/dev/null 2>&1 then - : -fi - -Стоп — здесь я не хочу оставлять тебе поломанный кусок. В sh нельзя писать if id ... then в таком виде. Поэтому ниже даю окончательную цельную версию, а не предлагаю собирать её из двух частей: #!/bin/sh