Алексей Чеусов (http://www.mova.org/%7Echeusov/) в списке рассылки разработчиков NetBSD представил (http://mail-index.netbsd.org/pkgsrc-users/2010/12/29/msg013436.html) экспериментальный пакетный менеджер nih (https://github.com/cheusov/pkgnih), работающий в виде надстройки над системой pkgsrc (http://www.netbsd.org/docs/software/packages.html). Пакетный менеджер nih (wip (http://pkgsrc-wip.sourceforge.net/)/pkgnih-current (http://pkgsrc-wip.cvs.sourceforge.net/viewvc/pkgsrc-wip/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 и директорий с кэшем.
# opennet.ru (http://www.opennet.ru/opennews/art.shtml?num=29176)