|
|
@@ -49,11 +49,11 @@ install_yay() {
|
|
|
msg "YAY не найден. Установка YAY..."
|
|
|
# Проверяем наличие git и base-devel перед установкой yay
|
|
|
if ! pacman -Q git &>/dev/null || ! pacman -Q base-devel &>/dev/null; then
|
|
|
- sudo pacman -S --needed --noconfirm git base-devel
|
|
|
+ sudo pacman -S --needed git base-devel
|
|
|
fi
|
|
|
|
|
|
git clone https://aur.archlinux.org/yay.git /tmp/yay
|
|
|
- (cd /tmp/yay && makepkg -si --noconfirm)
|
|
|
+ (cd /tmp/yay && makepkg -si)
|
|
|
rm -rf /tmp/yay
|
|
|
msg "YAY установлен."
|
|
|
else
|
|
|
@@ -63,29 +63,60 @@ install_yay() {
|
|
|
|
|
|
# 2. Установка пакетов (Pacman и YAY)
|
|
|
install_packages() {
|
|
|
- msg "Установка пакетов из Pacman ($PACMAN_PKGS)..."
|
|
|
- # Читаем файл, убираем inline-комментарии (после #),
|
|
|
- # убираем пустые строки, xargs очищает лишние пробелы
|
|
|
- # и передает все как отдельные аргументы в pacman.
|
|
|
+ # --- Сбор пакетов для установки ---
|
|
|
+ msg "Сбор пакетов для установки..."
|
|
|
+
|
|
|
+ # Основные пакеты
|
|
|
local pacman_args=$(sed 's/#.*//' "$SCRIPT_DIR/$PACMAN_PKGS" | grep -vE '^\s*$' | xargs)
|
|
|
+ local aur_args=$(sed 's/#.*//' "$SCRIPT_DIR/$AUR_PKGS" | grep -vE '^\s*$' | xargs)
|
|
|
+
|
|
|
+ # --- Поиск и выбор дополнительных пакетов ---
|
|
|
+ # Ищем файлы вида pkglist-*.txt и aurlist-*.txt, исключая основные
|
|
|
+ local optional_pacman_lists=($(find "$SCRIPT_DIR" -maxdepth 1 -name "pkglist-*.txt" ! -name "$PACMAN_PKGS"))
|
|
|
+ local optional_aur_lists=($(find "$SCRIPT_DIR" -maxdepth 1 -name "aurlist-*.txt" ! -name "$AUR_PKGS"))
|
|
|
|
|
|
+ if [ ${#optional_pacman_lists[@]} -gt 0 ] || [ ${#optional_aur_lists[@]} -gt 0 ]; then
|
|
|
+ warn "Найдены дополнительные списки пакетов:"
|
|
|
+ for list in "${optional_pacman_lists[@]}"; do echo " -> $(basename "$list") (Pacman)"; done
|
|
|
+ for list in "${optional_aur_lists[@]}"; do echo " -> $(basename "$list") (AUR)"; done
|
|
|
+
|
|
|
+ read -p "Хотите выбрать пакеты из этих списков для установки? [y/N]: " choice < /dev/tty
|
|
|
+ if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
|
+ # Добавляем пакеты из выбранных списков
|
|
|
+ for list in "${optional_pacman_lists[@]}"; do
|
|
|
+ read -p " -> Установить из '$(basename "$list")'? [y/N]: " list_choice < /dev/tty
|
|
|
+ if [[ "$list_choice" == "y" || "$list_choice" == "Y" ]]; then
|
|
|
+ pacman_args+=" $(sed 's/#.*//' "$list" | grep -vE '^\s*$' | xargs)"
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ for list in "${optional_aur_lists[@]}"; do
|
|
|
+ read -p " -> Установить из '$(basename "$list")'? [y/N]: " list_choice < /dev/tty
|
|
|
+ if [[ "$list_choice" == "y" || "$list_choice" == "Y" ]]; then
|
|
|
+ aur_args+=" $(sed 's/#.*//' "$list" | grep -vE '^\s*$' | xargs)"
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+
|
|
|
+ # --- Установка пакетов Pacman ---
|
|
|
if [[ ! -z "$pacman_args" ]]; then
|
|
|
- sudo pacman -S --needed --noconfirm $pacman_args
|
|
|
+ msg "Установка пакетов из Pacman..."
|
|
|
+ # Убрали --noconfirm, чтобы можно было решать конфликты вручную
|
|
|
+ sudo pacman -S --needed $pacman_args
|
|
|
else
|
|
|
- msg "Список Pacman пуст, пропуск."
|
|
|
+ msg "Список Pacman для установки пуст."
|
|
|
fi
|
|
|
|
|
|
- msg "Проверка и установка YAY..."
|
|
|
- install_yay
|
|
|
-
|
|
|
- msg "Установка пакетов из AUR ($AUR_PKGS)..."
|
|
|
- # Аналогично для YAY
|
|
|
- local aur_args=$(sed 's/#.*//' "$SCRIPT_DIR/$AUR_PKGS" | grep -vE '^\s*$' | xargs)
|
|
|
-
|
|
|
+ # --- Установка пакетов AUR ---
|
|
|
if [[ ! -z "$aur_args" ]]; then
|
|
|
- yay -S --needed --noconfirm $aur_args
|
|
|
+ msg "Проверка и установка YAY..."
|
|
|
+ install_yay
|
|
|
+
|
|
|
+ msg "Установка пакетов из AUR..."
|
|
|
+ # Убрали --noconfirm
|
|
|
+ yay -S --needed $aur_args
|
|
|
else
|
|
|
- msg "Список AUR пуст, пропуск."
|
|
|
+ msg "Список AUR для установки пуст."
|
|
|
fi
|
|
|
|
|
|
msg "Установка пакетов завершена."
|
|
|
@@ -161,27 +192,31 @@ check_config() {
|
|
|
# ... (проверка пакетов остается без изменений) ...
|
|
|
msg "Проверка установленных пакетов Pacman..."
|
|
|
local missing_pacman=0
|
|
|
- while IFS= read -r line || [[ -n "$line" ]]; do
|
|
|
- local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
|
|
|
- if [[ -z "$pkg" ]]; then continue; fi
|
|
|
- if ! pacman -Q "$pkg" &>/dev/null; then
|
|
|
- warn " -> Не найден (Pacman): $pkg"
|
|
|
- missing_pacman=1
|
|
|
- fi
|
|
|
- done < "$SCRIPT_DIR/$PACMAN_PKGS"
|
|
|
- if [ $missing_pacman -eq 0 ]; then msg "Все пакеты Pacman установлены."; fi
|
|
|
+ for f in $(find "$SCRIPT_DIR" -maxdepth 1 -name "pkglist*.txt"); do
|
|
|
+ while IFS= read -r line || [[ -n "$line" ]]; do
|
|
|
+ local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
|
|
|
+ if [[ -z "$pkg" ]]; then continue; fi
|
|
|
+ if ! pacman -Q "$pkg" &>/dev/null; then
|
|
|
+ warn " -> Не найден (Pacman, из $(basename $f)): $pkg"
|
|
|
+ missing_pacman=1
|
|
|
+ fi
|
|
|
+ done < "$f"
|
|
|
+ done
|
|
|
+ if [ $missing_pacman -eq 0 ]; then msg "Все пакеты Pacman из списков 'pkglist*.txt' установлены."; fi
|
|
|
|
|
|
msg "Проверка установленных пакетов AUR..."
|
|
|
local missing_aur=0
|
|
|
- while IFS= read -r line || [[ -n "$line" ]]; do
|
|
|
- local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
|
|
|
- if [[ -z "$pkg" ]]; then continue; fi
|
|
|
- if ! pacman -Q "$pkg" &>/dev/null; then
|
|
|
- warn " -> Не найден (AUR): $pkg"
|
|
|
- missing_aur=1
|
|
|
- fi
|
|
|
- done < "$SCRIPT_DIR/$AUR_PKGS"
|
|
|
- if [ $missing_aur -eq 0 ]; then msg "Все пакеты AUR установлены."; fi
|
|
|
+ for f in $(find "$SCRIPT_DIR" -maxdepth 1 -name "aurlist*.txt"); do
|
|
|
+ while IFS= read -r line || [[ -n "$line" ]]; do
|
|
|
+ local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
|
|
|
+ if [[ -z "$pkg" ]]; then continue; fi
|
|
|
+ if ! pacman -Q "$pkg" &>/dev/null; then
|
|
|
+ warn " -> Не найден (AUR, из $(basename $f)): $pkg"
|
|
|
+ missing_aur=1
|
|
|
+ fi
|
|
|
+ done < "$f"
|
|
|
+ done
|
|
|
+ if [ $missing_aur -eq 0 ]; then msg "Все пакеты AUR из списков 'aurlist*.txt' установлены."; fi
|
|
|
|
|
|
|
|
|
msg "Проверка симлинков..."
|