Update install.sh

This commit is contained in:
Sm1tee
2025-11-04 23:36:54 +03:00
committed by GitHub
parent 4891614da1
commit ee6ed22a02

View File

@@ -151,21 +151,30 @@ is_package_installed() {
local package="$1"
case $DISTRO in
"arch"|"manjaro"|"endeavouros")
"arch"|"manjaro"|"endeavouros"|"cachyos"|"artix"|"arcolinux"|"garuda"|"crystal"|"rebornos")
pacman -Qi "$package" &>/dev/null
;;
"fedora")
"fedora"|"rhel"|"centos"|"rocky"|"almalinux"|"nobara")
rpm -q "$package" &>/dev/null
;;
"opensuse"|"opensuse-leap"|"opensuse-tumbleweed")
"opensuse"|"opensuse-leap"|"opensuse-tumbleweed"|"suse")
rpm -q "$package" &>/dev/null
;;
"ubuntu"|"debian"|"pop"|"elementary"|"linuxmint")
"ubuntu"|"debian"|"pop"|"elementary"|"linuxmint"|"zorin"|"mx"|"kali"|"parrot"|"deepin"|"lmde")
dpkg -l "$package" 2>/dev/null | grep -q "^ii"
;;
"void")
xbps-query "$package" &>/dev/null
;;
"gentoo"|"funtoo")
equery list "$package" &>/dev/null
;;
"solus")
eopkg list-installed "$package" &>/dev/null
;;
"nixos")
nix-env -q "$package" &>/dev/null
;;
*)
return 1
;;
@@ -183,7 +192,7 @@ install_dependencies() {
local installed_packages=()
case $DISTRO in
"arch"|"manjaro"|"endeavouros")
"arch"|"manjaro"|"endeavouros"|"cachyos"|"artix"|"arcolinux"|"garuda"|"crystal"|"rebornos")
packages="sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg"
install_cmd="sudo pacman -S --needed --noconfirm"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
@@ -192,7 +201,7 @@ install_dependencies() {
• qt6-virtualkeyboard - виртуальная клавиатура на экране
• qt6-multimedia-ffmpeg - воспроизведение видео фонов"
;;
"fedora")
"fedora"|"rhel"|"centos"|"rocky"|"almalinux"|"nobara")
packages="sddm qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia"
install_cmd="sudo dnf install -y"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
@@ -201,7 +210,7 @@ install_dependencies() {
• qt6-qtvirtualkeyboard - виртуальная клавиатура на экране
• qt6-qtmultimedia - воспроизведение видео фонов"
;;
"opensuse"|"opensuse-leap"|"opensuse-tumbleweed")
"opensuse"|"opensuse-leap"|"opensuse-tumbleweed"|"suse")
packages="sddm-qt6 libQt6Svg6 qt6-virtualkeyboard qt6-virtualkeyboard-imports qt6-multimedia qt6-multimedia-imports"
install_cmd="sudo zypper install -y"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
@@ -210,7 +219,7 @@ install_dependencies() {
• qt6-virtualkeyboard - виртуальная клавиатура
• qt6-multimedia - воспроизведение видео фонов"
;;
"ubuntu"|"debian"|"pop"|"elementary"|"linuxmint")
"ubuntu"|"debian"|"pop"|"elementary"|"linuxmint"|"zorin"|"mx"|"kali"|"parrot"|"deepin"|"lmde")
packages="sddm qt6-svg-dev qt6-virtualkeyboard-dev qt6-multimedia-dev"
install_cmd="sudo apt install -y"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
@@ -228,22 +237,58 @@ install_dependencies() {
• qt6-virtualkeyboard - виртуальная клавиатура на экране
• qt6-multimedia - воспроизведение видео фонов"
;;
"gentoo"|"funtoo")
packages="x11-misc/sddm dev-qt/qtsvg dev-qt/qtvirtualkeyboard dev-qt/qtmultimedia"
install_cmd="sudo emerge --ask=n"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
• x11-misc/sddm - менеджер дисплея (экран входа)
• dev-qt/qtsvg - поддержка SVG иконок в интерфейсе
• dev-qt/qtvirtualkeyboard - виртуальная клавиатура на экране
• dev-qt/qtmultimedia - воспроизведение видео фонов"
;;
"solus")
packages="sddm qt6-svg qt6-virtualkeyboard qt6-multimedia"
install_cmd="sudo eopkg install -y"
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
• sddm - менеджер дисплея (экран входа)
• qt6-svg - поддержка SVG иконок в интерфейсе
• qt6-virtualkeyboard - виртуальная клавиатура на экране
• qt6-multimedia - воспроизведение видео фонов"
;;
"nixos")
packages="sddm qt6.qtsvg qt6.qtvirtualkeyboard qt6.qtmultimedia"
install_cmd="nix-env -iA nixos."
explanation="Эти пакеты нужны для работы SDDM с темами Qt6:
• sddm - менеджер дисплея (экран входа)
• qt6.qtsvg - поддержка SVG иконок в интерфейсе
• qt6.qtvirtualkeyboard - виртуальная клавиатура на экране
• qt6.qtmultimedia - воспроизведение видео фонов
ВНИМАНИЕ: Для NixOS рекомендуется использовать configuration.nix"
;;
*)
echo -e "${YELLOW}${WARNING} Неизвестный дистрибутив: $DISTRO${NC}"
echo -e "${RED}${CROSS} Автоматическая установка зависимостей невозможна${NC}"
echo ""
echo -e "${BLUE}Необходимо установить следующие пакеты вручную:${NC}"
echo "• sddm - менеджер дисплея"
echo "• qt6-svg - поддержка SVG иконок"
echo "• qt6-virtualkeyboard - виртуальная клавиатура"
echo "• qt6-multimedia - воспроизведение видео"
echo ""
echo -e "${YELLOW}Используйте пакетный менеджер вашего дистрибутива для установки.${NC}"
echo -e "${YELLOW}Например:${NC}"
echo " • Arch/Manjaro/CachyOS: sudo pacman -S sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg"
echo " • Fedora/RHEL: sudo dnf install sddm qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia"
echo " • Ubuntu/Debian: sudo apt install sddm qt6-svg-dev qt6-virtualkeyboard-dev qt6-multimedia-dev"
echo " • openSUSE: sudo zypper install sddm-qt6 libQt6Svg6 qt6-virtualkeyboard qt6-multimedia"
echo " • Void: sudo xbps-install sddm qt6-svg qt6-virtualkeyboard qt6-multimedia"
echo " • Gentoo: sudo emerge x11-misc/sddm dev-qt/qtsvg dev-qt/qtvirtualkeyboard dev-qt/qtmultimedia"
echo " • Solus: sudo eopkg install sddm qt6-svg qt6-virtualkeyboard qt6-multimedia"
echo ""
if ask_confirmation "Продолжить установку?" "Предполагается, что зависимости уже установлены"; then
add_to_report "Установка зависимостей (пропущена - неизвестный дистрибутив)" "skipped"
return 0
else
add_to_report "Установка зависимостей" "skipped"
return 1
fi
echo -e "${RED}${CROSS} Автоматическая установка невозможна для дистрибутива: $DISTRO${NC}"
add_to_report "Установка зависимостей (пропущена - неизвестный дистрибутив: $DISTRO)" "skipped"
return 1
;;
esac
@@ -317,37 +362,22 @@ install_dependencies() {
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
echo -e "${YELLOW}${WARNING} Установите недостающие пакеты вручную и запустите скрипт снова${NC}"
add_to_report "Установка зависимостей (частично: ${INSTALLED_PACKAGES[*]})" "performed"
return 1
fi
else
echo -e "${RED}${CROSS} Ошибка при установке зависимостей${NC}"
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
add_to_report "Установка зависимостей (ошибка)" "skipped"
return 1
fi
else
echo -e "${YELLOW}${WARNING} Установка зависимостей отклонена${NC}"
echo -e "${YELLOW}${WARNING} Тема может не работать без необходимых пакетов${NC}"
echo -e "${RED}${CROSS} Невозможно продолжить без установки зависимостей${NC}"
add_to_report "Установка зависимостей" "skipped"
if ask_confirmation "Продолжить установку?" "Тема может не работать корректно"; then
return 0
else
return 1
fi
return 1
fi
}
@@ -930,7 +960,11 @@ main() {
fi
# Установка зависимостей
install_dependencies
if ! install_dependencies; then
echo -e "${RED}${CROSS} Установка зависимостей не выполнена${NC}"
echo -e "${YELLOW}${WARNING} Установите зависимости вручную и запустите скрипт снова${NC}"
exit 1
fi
# Выбор типа установки
choose_installation_type
@@ -984,4 +1018,4 @@ main() {
trap 'echo -e "\n${RED}${CROSS} Установка прервана пользователем${NC}"; exit 1' INT TERM
# Запуск
main "$@"
main "$@"