From 4891614da1034a193bf65ce7406141ee6708a6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=88=D0=B5=20=D0=98=D0=BC=D1=8F?= Date: Thu, 23 Oct 2025 18:42:29 +0300 Subject: [PATCH] update --- .vscode/settings.json | 3 + install.sh | 142 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 128 insertions(+), 17 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5480842 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "kiroAgent.configureMCP": "Disabled" +} \ No newline at end of file diff --git a/install.sh b/install.sh index fdfd8c6..b30b2b9 100755 --- a/install.sh +++ b/install.sh @@ -146,18 +146,46 @@ check_system_dependencies() { return 0 } +# Функция для проверки установлен ли пакет +is_package_installed() { + local package="$1" + + case $DISTRO in + "arch"|"manjaro"|"endeavouros") + pacman -Qi "$package" &>/dev/null + ;; + "fedora") + rpm -q "$package" &>/dev/null + ;; + "opensuse"|"opensuse-leap"|"opensuse-tumbleweed") + rpm -q "$package" &>/dev/null + ;; + "ubuntu"|"debian"|"pop"|"elementary"|"linuxmint") + dpkg -l "$package" 2>/dev/null | grep -q "^ii" + ;; + "void") + xbps-query "$package" &>/dev/null + ;; + *) + return 1 + ;; + esac +} + # Функция для установки зависимостей install_dependencies() { - print_step_header "ШАГ 2: Установка зависимостей SDDM " + print_step_header "ШАГ 2: Проверка и установка зависимостей SDDM " local packages="" local install_cmd="" local explanation="" + local missing_packages=() + local installed_packages=() case $DISTRO in "arch"|"manjaro"|"endeavouros") packages="sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg" - install_cmd="sudo pacman -S --needed $packages" + install_cmd="sudo pacman -S --needed --noconfirm" explanation="Эти пакеты нужны для работы SDDM с темами Qt6: • sddm - менеджер дисплея (экран входа) • qt6-svg - поддержка SVG иконок в интерфейсе @@ -166,7 +194,7 @@ install_dependencies() { ;; "fedora") packages="sddm qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia" - install_cmd="sudo dnf install $packages" + install_cmd="sudo dnf install -y" explanation="Эти пакеты нужны для работы SDDM с темами Qt6: • sddm - менеджер дисплея (экран входа) • qt6-qtsvg - поддержка SVG иконок в интерфейсе @@ -175,7 +203,7 @@ install_dependencies() { ;; "opensuse"|"opensuse-leap"|"opensuse-tumbleweed") packages="sddm-qt6 libQt6Svg6 qt6-virtualkeyboard qt6-virtualkeyboard-imports qt6-multimedia qt6-multimedia-imports" - install_cmd="sudo zypper install $packages" + install_cmd="sudo zypper install -y" explanation="Эти пакеты нужны для работы SDDM с темами Qt6: • sddm-qt6 - менеджер дисплея с поддержкой Qt6 • libQt6Svg6 - библиотека для SVG иконок @@ -184,7 +212,7 @@ install_dependencies() { ;; "ubuntu"|"debian"|"pop"|"elementary"|"linuxmint") packages="sddm qt6-svg-dev qt6-virtualkeyboard-dev qt6-multimedia-dev" - install_cmd="sudo apt update && sudo apt install $packages" + install_cmd="sudo apt install -y" explanation="Эти пакеты нужны для работы SDDM с темами Qt6: • sddm - менеджер дисплея (экран входа) • qt6-svg-dev - поддержка SVG иконок в интерфейсе @@ -193,7 +221,7 @@ install_dependencies() { ;; "void") packages="sddm qt6-svg qt6-virtualkeyboard qt6-multimedia" - install_cmd="sudo xbps-install $packages" + install_cmd="sudo xbps-install -y" explanation="Эти пакеты нужны для работы SDDM с темами Qt6: • sddm - менеджер дисплея (экран входа) • qt6-svg - поддержка SVG иконок в интерфейсе @@ -219,27 +247,107 @@ install_dependencies() { ;; esac - echo -e "${explanation}" - echo "" - echo -e "${YELLOW}Команда для установки:${NC} $install_cmd" + echo -e "${BLUE}Проверяю установленные пакеты...${NC}" echo "" - if ask_confirmation "Установить эти пакеты?" "Без них тема не будет работать корректно"; then + # Проверяем каждый пакет + for package in $packages; do + if is_package_installed "$package"; then + echo -e "${GREEN}${CHECK} $package - уже установлен${NC}" + installed_packages+=("$package") + else + echo -e "${YELLOW}${WARNING} $package - не установлен${NC}" + missing_packages+=("$package") + fi + done + + echo "" + + # Если все пакеты установлены + if [ ${#missing_packages[@]} -eq 0 ]; then + echo -e "${GREEN}${CHECK} Все необходимые зависимости уже установлены${NC}" + add_to_report "Проверка зависимостей (все установлены)" "performed" + return 0 + fi + + # Если есть недостающие пакеты + echo -e "${explanation}" + echo "" + echo -e "${YELLOW}Необходимо установить следующие пакеты:${NC}" + for package in "${missing_packages[@]}"; do + echo -e " ${YELLOW}•${NC} $package" + done + echo "" + echo -e "${YELLOW}Команда для установки:${NC} $install_cmd ${missing_packages[*]}" + echo "" + + if ask_confirmation "Установить недостающие пакеты?" "Без них тема не будет работать корректно" "y"; then echo -e "${BLUE}${INFO} Выполняется установка...${NC}" - if eval "$install_cmd"; then - echo -e "${GREEN}${CHECK} Зависимости успешно установлены${NC}" - INSTALLED_PACKAGES+=($packages) - add_to_report "Установка зависимостей: $packages" "performed" - return 0 + + # Для Debian/Ubuntu сначала обновляем список пакетов + if [[ "$DISTRO" =~ ^(ubuntu|debian|pop|elementary|linuxmint)$ ]]; then + echo -e "${BLUE}${INFO} Обновление списка пакетов...${NC}" + if ! sudo apt update; then + echo -e "${RED}${CROSS} Ошибка при обновлении списка пакетов${NC}" + return 1 + fi + fi + + # Устанавливаем недостающие пакеты + if eval "$install_cmd ${missing_packages[*]}"; then + echo "" + echo -e "${BLUE}${INFO} Проверяю успешность установки...${NC}" + + local failed_packages=() + for package in "${missing_packages[@]}"; do + if is_package_installed "$package"; then + echo -e "${GREEN}${CHECK} $package - успешно установлен${NC}" + INSTALLED_PACKAGES+=("$package") + else + echo -e "${RED}${CROSS} $package - не удалось установить${NC}" + failed_packages+=("$package") + fi + done + + if [ ${#failed_packages[@]} -eq 0 ]; then + echo "" + echo -e "${GREEN}${CHECK} Все зависимости успешно установлены${NC}" + add_to_report "Установка зависимостей: ${missing_packages[*]}" "performed" + return 0 + else + echo "" + echo -e "${RED}${CROSS} Не удалось установить некоторые пакеты: ${failed_packages[*]}${NC}" + echo -e "${YELLOW}${WARNING} Тема может не работать корректно${NC}" + + if ask_confirmation "Продолжить установку?" "Некоторые функции могут не работать"; then + add_to_report "Установка зависимостей (частично: ${INSTALLED_PACKAGES[*]})" "performed" + return 0 + else + return 1 + fi + fi else echo -e "${RED}${CROSS} Ошибка при установке зависимостей${NC}" - return 1 + echo -e "${YELLOW}${WARNING} Попробуйте установить пакеты вручную:${NC}" + echo -e "${YELLOW}$install_cmd ${missing_packages[*]}${NC}" + + if ask_confirmation "Продолжить установку?" "Тема может не работать без зависимостей"; then + add_to_report "Установка зависимостей (ошибка)" "skipped" + return 0 + else + return 1 + fi fi else echo -e "${YELLOW}${WARNING} Установка зависимостей отклонена${NC}" echo -e "${YELLOW}${WARNING} Тема может не работать без необходимых пакетов${NC}" add_to_report "Установка зависимостей" "skipped" - return 1 + + if ask_confirmation "Продолжить установку?" "Тема может не работать корректно"; then + return 0 + else + return 1 + fi fi }