Для PkgSrc представлен APT-подобный пакетный менеджер nih

01.01.2011 19:57

Алексей Чеусов в списке рассылки разработчиков NetBSD представил экспериментальный пакетный менеджер nih, работающий в виде надстройки над системой pkgsrc. Пакетный менеджер nih (wip/pkgnih-current) заменяет собой существующие утилиты pkg_comp, pkg_chk и pkg_rr, преследуя цель упрощения выполнения операций по обновлению бинарных пакетов и выполняя функции сходные с такими пакетными менеджерами, как apt, yum и zypper. Код проекта написан на shell и awk.

В будущем, помимо реализованных функций для работы с бинарными пакетами, планируется добавить поддержку выполнения обновлений на базе исходных текстов, задействовав программу wip/distbb для сборки пакета в изолированном окружении. В настоящий момент код проекта находится на стадии активной разработки (например, еще не реализованы операции "nih clean" и "nih audit"), поэтому его можно рассматривать как экспериментальный прототип. Тем не менее nih уже пригоден для ознакомления и безопасен для системы (в процессе работы nih для каждой установки или удаления пакета требуется ручное подтверждение операции).

Особенности nih:

  • Поддержка больших комплексных обновлений в полностью автоматизированном режиме, например, переход от perl 5.10 к perl 5.12;
  • Вначале пользователю выводится уведомление с перечнем планируемых действий, после подтверждения производится непосредственно выполнение операций;
  • Nih начинает выполнять операции по удалению или добавлению пакетов только в случае абсолютной уверенности, что после выполнения обновления система сохранит целостное состояние (анализируется статус DEPENDS, CONFLICTS, PROVIDES/REQUIRES). Разработчиком минимизирован риск нарушения целостности из-за ситуации остановки в процессе работы;
  • При обнаружении конфликтов или отсутствующих зависимостей, которые не могут быть решены автоматически, данные проблемы будет предложено решить вручную, путем организации пошагового диалога с пользователем;
  • Nih вначале загружает все необходимые файлы, а уже потом начинает процесс обновления;
  • Реализованы расширенные возможности поиска пакетов;
  • Гибкость. Nih написан на shell и базируется на таких утилитах, как pkg_summary-utils, distbb, pkg_status, pkg_digger и pkg_online_find;
  • Возможности nih обеспечивают полный спектр функций, ранее доступных через утилиты pkgchk, pkgin, pkg_comp, pkg_leaves, pkgfind, pkg_status, pkg_online-client и pkg_rolling-replace. В отличие от pkgchk nih работает значительно быстрее, а в отличие от pkgin не требует для своей работы SQLite;
  • Основные команды:
    • nih refresh - загрузка файлов pkg_summary и SHA512;
    • nih install - установка пакетов;
    • nih upgrade - установка или обновление пакетов;
    • nih uninstall, delete, remove - удаление пакета из системы;
    • nih verify - проверка целостности пакетов;
    • nih status - отображение статуса установленных в системе пакетов;
    • nih audit - проведение аудита безопасности пакетов;
    • nih leaf - удаление автоудаленных leaf-пакетов;
    • nih license - операции, связанные с лицензиями;
    • nih list - вывод списка пакетов;
    • nih mark - пометка пакетов;
    • nih clean - чистка содержимого DESTDIR и директорий с кэшем.