- Добавлен метод ListAvailable в интерфейс менеджера пакетов
- Реализован поиск доступных пакетов для всех менеджеров (apt, apt-rpm, dnf, yum, pacman, apk, zypper)
- Вынесена общая функция для apt и apt-rpm во избежание дублирования
- Автодополнение теперь выводит и ALR-пакеты, и системные с дедупликацией
- Добавлена фильтрация по префиксу для производительности
1. Версионные зависимости и фильтрация установленных пакетов
- Новый пакет pkg/depver/ — разбор и сравнение версий в зависимостях (поддержка операторов >=, <=, >, <, =)
- Обработка зависимостей (internal/build/build.go, dependency_tree.go) — учёт версий при построении дерева зависимостей
- Фильтрация установленных пакетов — менеджеры пакетов (apt, apk, pacman, zypper) теперь проверяют, установлен ли пакет нужной версии, и не переустанавливают его
- Общая RPM-логика (internal/manager/common_rpm.go) — вынесена в отдельный файл
- Расширен установщик (internal/build/installer.go) — улучшена логика установки с учётом версий
- Поиск в репозиториях (internal/repos/find.go) — расширен поиск пакетов
- Плагины — добавлен новый исполнитель плагинов
- CI/CD — добавлены пайплайны GitVerse (e2e-тесты, pre-commit, релизы)
2. Исправление удаления multilib-пакетов при установке RPM
- Автоконфликт теперь содержит ISA-квалификатор архитектуры (например libdrm(x86-64) вместо голого libdrm)
- Установка x86_64 пакета больше не удаляет i686 версию и её зависимости (mesa, steam и т.д.)
3. Поиск библиотек в /usr/local/
- files-find-lib теперь ищет также в /usr/local/lib/ и /usr/local/lib64/
- Исправлена проблема с платформозависимыми Python-пакетами, которые ставятся в lib64
- Добавлена поддержка версионных ограничений при установке пакетов
- Улучшена логика фильтрации уже установленных пакетов
- Добавлен метод GetInstalledVersion для всех менеджеров пакетов
- Активированы тесты для систем archlinux, alpine, opensuse-leap
- Улучшена обработка переменных в скриптах
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Ключ "repos" изменён на "repo" для соответствия тегу koanf в структуре Config.
Это исправляет проблему, когда дефолтный репозиторий alr-default не загружался.
- Добавлено полное разрешение дерева зависимостей перед сборкой
- Общие зависимости теперь собираются только один раз
- Исправлена работа кеша для подпакетов
- Исправлена обработка системных зависимостей
Изменения:
- Заменён вызов InstallALRPackages на InstallPkgs в upgrade.go
- Переименована функция mapUptatesInfoToPackages в mapUpdatesToPackageNames
- Добавлена дедупликация подпакетов по полному имени (package+repo)
- Теперь возвращаются строки с именами пакетов вместо объектов Package
- Заменен vercmp с go.elara.ws/vercmp на gitea.plemya-x.ru/xpamych/vercmp v0.0.1
- Добавлена функция FilterPackagesByVersion для проверки версий установленных
пакетов перед пересборкой зависимостей (учитывает version-release и epoch)
- Исправлена инициализация переводов в плагинах: добавлены вызовы translations.Setup()
во всех plugin subcommands (_internal-safe-script-executor, _internal-installer,
_internal-repos)
- Добавлен GetSubcommandHelpTemplate для корректного отображения справки команд
с подкомандами на русском языке
- Добавлены кастомные help команды для config, repo, helper и mirror
- Добавлены русские переводы для всех пользовательских сообщений:
* Сообщения о создании пакетов (Creating package file, Packaging with nfpm и др.)
* Сообщения команды fix (Clearing cache, Fixing permissions и др.)
* Сообщения обновления (Updating system packages, System packages updated)
* Сообщения о версиях пакетов (Package is installed with older/newer version)
* Заголовки справки (NAME, USAGE, COMMANDS, OPTIONS)
* Справочные сообщения (Shows a list of commands or help for one command)
- Оптимизирован assets/logo.png (уменьшен с 37KB до 17KB)
выполнять 'sudo alr fix' для создания необходимых директорий. Теперь
директории /var/cache/alr и /tmp/alr создаются автоматически при первом
использовании с правильными правами доступа.
проверки root/CI перед использованием sudo
2. internal/utils/utils.go - Функция
EnsureTempDirWithRootOwner теперь не использует группу
wheel в CI
3. internal/utils/cmd.go - Функция
EnuseIsPrivilegedGroupMember пропускает проверку wheel в
CI
4. fix.go - Добавили функцию execWithPrivileges для
условного использования sudo
5. scripts/install.sh - Добавили проверку root перед
использованием sudo
- Использование API Gitea вместо парсинга HTML
- Добавлен fallback на парсинг HTML если API недоступен
- Улучшена обработка ошибок при загрузке
- Добавлена проверка целостности загруженного файла
- Использование trap для гарантированной очистки временных файлов
- Исправлена логика выбора файлов для разных архитектур
- Добавлен вывод размера загруженного пакета"
- Создан fmt-precommit.sh для корректной обработки форматирования
- Создан test-coverage-precommit.sh для обработки изменений покрытия
- Скрипты всегда возвращают 0 при успешном выполнении
- Автоматически добавляют изменённые файлы в staging area