sudo bash << 'EOF' # Полный список ваших пакетов PACKAGES=( btrfs-progs e2fsprogs mdadm lvm2 snapper inxi man-pages texinfo networkmanager dnsmasq pam libpam-google-authenticator qrencode ufw fail2ban certbot clamav apache php-apache mariadb phpmyadmin php nfs-utils bftpd rsync dokuwiki wordpress gitea minidlna mpd immich-go radicale opensmtpd code python feh libreoffice-fresh docker qemu-system-x86 kcron fzy ) CACHE_DIR="/var/cache/pacman/pkg" echo "=== 1. Синхронизация баз данных пакетов ===" pacman -Sy --noconfirm echo -e "\n=== 2. Загрузка пакетов и их зависимостей (без установки) ===" pacman -Sw --noconfirm --needed "${PACKAGES[@]}" # -S: установка/загрузка # -w: только скачивание (без установки) # --noconfirm: автоподтверждение всех запросов # --needed: не скачивать заново то, что уже есть актуального в кэше/системе echo -e "\n=== 3. Проверка целостности архивов и сбор версий ===" echo "----------------------------------------------------------------------" printf "%-30s %-20s %s\n" "ПАКЕТ" "ВЕРСИЯ" "СТАТУС КЭША" echo "----------------------------------------------------------------------" ERRORS=0 for pkg in "${PACKAGES[@]}"; do # Получаем версию пакета из базы данных pacman VERSION=$(pacman -Si "$pkg" | awk -F': ' '/^Version/ {print $2}' | xargs) if [ -z "$VERSION" ]; then printf "%-30s %-20s %s\n" "$pkg" "---" "[НЕ НАЙДЕН В РЕПО]" ((ERRORS++)) continue fi # Очищаем версию от эпохи (двоеточия) для сопоставления с именем файла CLEAN_VER=$(echo "$VERSION" | sed 's/^[0-9]://') # Поиск архива в кэше загрузок PKG_FILE=$(ls "$CACHE_DIR" 2>/dev/null | grep -E "^${pkg}-${CLEAN_VER}-(x86_64|any)\.pkg\.tar\.zst$") if [ -n "$PKG_FILE" ]; then # Проверка целостности структуры сжатого архива утилитой zstd if zstd -t "$CACHE_DIR/$PKG_FILE" &>/dev/null; then STATUS="[OK] Архив цел" else STATUS="[ОШИБКА] Поврежден" ((ERRORS++)) fi else STATUS="[ОТСУТСТВУЕТ]" ((ERRORS++)) fi printf "%-30s %-20s %s\n" "$pkg" "$VERSION" "$STATUS" done echo "----------------------------------------------------------------------" echo "Процесс завершен. Проблемных пакетов: $ERRORS" EOF