разработчики Shelly выпустили версию 3.1.9 менеджера пакетов для Arch Linux и систем на его основе. Обновление позволяет движку RLPM принимать существующие файлы под управление пакетов, сохраняя их содержимое и атрибуты. Также разработчики исправили обновление пакетов AUR с суффиксом -git, доработали синхронизацию репозиториев и обновили переводы. Изменения доступны в программе с графическим интерфейсом GTK и командной строкой, однако миграция файлов требует именно RLPM.

Миграция файлов без перезаписи содержимого
Новый механизм пригодится, когда установщик системы или прежняя конфигурация уже создали файлы, которые теперь должен обслуживать пакет. RLPM сохраняет существующие обычные файлы и символические ссылки, а в базе пакетов записывает, какому пакету они принадлежат.
Принадлежность файла пакету – запись в базе менеджера пакетов, которая связывает путь с установленным пакетом. При миграции Shelly меняет этот учёт, сохраняя содержимое и атрибуты самого файла, включая владельца и права доступа в файловой системе.
Автор пакета может перечислить точные пути в новом массиве shelly_migrate внутри PKGBUILD. Правила поддерживают файлы, которые не принадлежат ни одному пакету, передачу файлов от заменяемого пакета после подтверждения замены и сохранение файлов при обновлении того же пакета. Отсутствующий путь можно объявить необязательным; для подходящих файлов предусмотрен учёт контрольных сумм в механизме сохранения изменённых конфигураций.
Shelly переносит объявления в генерируемый .SRCINFO и архив пакета. Для отдельных пакетов, собираемых из одного PKGBUILD, можно переопределить правила. Явная миграция позволяет принять под управление даже файл, которого нет в устанавливаемом архиве: RLPM сохраняет такую запись при последующих обновлениях, пока файл не появится в содержимом пакета.
В предварительном просмотре операции CLI и GTK показывают сохраняемые пути, исходный и новый пакеты, а также происхождение правила: явное объявление, автоматическое обнаружение, запрос через API или сохранённая ранее миграция. Проверки принадлежности и типа файла продолжают действовать. Механизм работает с точными путями и не выполняет копирование, переименование или рекурсивный перенос каталогов; синтаксис описан в руководстве по миграции.
Автоматическое принятие файлов в Devario
Сборки для Devario по умолчанию автоматически принимают подходящие файлы, которые уже существуют в системе, не принадлежат пакетам и одновременно присутствуют в устанавливаемом архиве. Каталоги и специальные файлы не участвуют в автоматическом обнаружении. Файлы другого установленного пакета также не переходят под управление нового пакета автоматически.
Настройка находится в секции [options] файла /etc/shelly.conf:
[options] AutoMigrateUnowned = true
Значение false отключает автоматическое обнаружение, сохраняя возможность явно объявлять миграции. Для профиля путей, совместимого с pacman, AutoMigrateUnowned по умолчанию имеет значение false. Автоматическое принятие требует RLPM и применяется однократно: после записи владельца в базе последующие обновления используют обычные правила распаковки и сохранения изменённых конфигурационных файлов.
Исправления сборки и обновления пакетов AUR
Разработчики устранили ошибку ReviewedCheckoutChanged, из-за которой пакеты AUR с суффиксом -git могли не пройти первое обновление после изменений в исходном проекте. Теперь Shelly распознаёт допустимые изменения pkgver и pkgrel при генерации метаданных. Посторонние изменения в уже проверенных файлах сборки программа по-прежнему отклоняет.
Также исправлен разбор PKGBUILD с отрицанием и условными группами команд в фигурных скобках, включая такую конструкцию:
if ! { ...; }; then
Другие исправления сборки:
- Сохраняются переменные окружения для HTTP-, HTTPS- и общего прокси, а также исключений прокси, когда сборка после повышения привилегий возвращается к исходному пользователю.
- Сообщения об ошибках AUR указывают затронутый пакет и сохраняют исходную причину сбоя.
Репозитории, кэш и подготовка сборок
Shelly повторно использует базы репозиториев, которые уже синхронизировал компонент libalpm, и не обновляет их второй раз в рамках той же операции. Предварительные просмотры обновлений, запущенные от root, теперь используют собственный кэш root. В пользовательском кэше больше не появляются созданные таким запуском файлы баз, принадлежащие root.
Для затронутых PKGBUILD сборки из исходников закрепили Zig 0.16.0; в CI и релизных сборках согласовали использование пакета компилятора с исправлениями. Стабильные пакеты Devario теперь собирают из соответствующего тега выпуска, тогда как отдельный рецепт shelly-git продолжает отслеживать разработку.
Вспомогательный инструмент подготовки релизов для AUR обновляет контрольные суммы и .SRCINFO через Shelly; сборку пакетов на этом этапе можно пропустить. Также обновлены немецкий и русский переводы интерфейса и польский перевод уведомлений.
Совместимость: нужен Shelly 3.1.9 с RLPM
Собственный движок RLPM появился в Shelly 3.1.7. В стандартных сборках с двумя движками по умолчанию выбран libalpm, поэтому установка нового выпуска сама по себе не включает миграцию. Проверить текущий движок можно командой:
shelly config get NativePackageBackend
Для выбора RLPM предусмотрена следующая команда из официального руководства по движкам:
shelly config set NativePackageBackend rlpm
Настройка действует со следующего запуска CLI и распространяется на операции графического приложения. Специализированные сборки без libalpm используют RLPM по умолчанию.
В примечаниях к выпуску 3.1.9 разработчики требуют сначала обновить Shelly и только затем устанавливать пакеты, зависящие от shelly_migrate. Движок libalpm в обновлённом Shelly отклоняет архивы с такими правилами миграции. Старые версии Shelly и другие менеджеры пакетов могут проигнорировать эти объявления, поэтому рассчитывать на сохранение файлов при их использовании нельзя.
Для подготовки предварительного просмотра миграции RLPM может скачать архивы ещё до окончательного подтверждения установки. Отмена на этом этапе оставляет установленные файлы и записи об их принадлежности без изменений. При этом механизм не обеспечивает полного отката файловой системы: если замена пакета завершится ошибкой после удаления прежнего пакета, сохранённые файлы могут временно остаться без пакета-владельца.
Вывод
Миграция позволяет включить уже существующие файлы в учёт пакетов, сохранив локальные настройки и другие данные при переходе. Для её использования нужно проверить версию Shelly и выбранный движок; автоматическое обнаружение по умолчанию включено только в профиле Devario. Исправления AUR, прокси и кэша также затрагивают обычные операции сборки и обновления пакетов.