Нашёл неприятную багу в slapt-get: почему-то он не хочет устанавливать python-setuptools, если этот пакет вялется зависимостью зависимости. Да и вообще в некоторых случаях дерево зависимостей эта утилита строит как-то неважнецки.

И не могу удержаться и не рассказать некоторую историю, почему это меня сподвигло на написание этой заметки.

Исторически так сложилось, что в slackware с менеджером пакетов есть некоторая, скажем так, неоднозначность. Изначально его как такового не было, но время шло и появилась острая необходимость что-то такое соорудить, чтобы обновлять системы по вопросам безопасности было удобнее.

В чём подвох? К концепции kiss (Keep It Simple, Stupid).

Идея KISS хорошая, но всё имеет свою область применения. Следуя этой идее, в своё время была принято решение, что генерировать дерево зависимостей для пакетов, либо указывать из вручную не нужно, системный администратор должен иметь возможность штатно установить любые пакеты в любом сочетании. Это гарантирует что не будет dependency hell и разного рода циклических зависимостей при установке пакетов.

Но у каждого решения есть своя обратная сторона: поддерживать сторонние пакеты с кучей сторонних же зависимостей становится слишком трудоёмко: собирать библиотеки нужно в определённой последовательности, а устанавливать не один пакет и набор пакетов. Либо вендорить всё куда-нибудь в /opt. Это тоже выход, но в некоторых случаях он может оказаться ещё более сложным, чем идея с кучей пакетов.

В конце-концов начали появляться сторонние пакетные менеджеры. К счастью, структура пакета для slackware допускала некоторую расширяемость и позволяла дополнять не только исполнять postinstall-скрипты, и добавлять описание пакетов, но и расширить набор мета-данных. Так появились slack-required, slack-suggests, slack-conflicts.

Понятное дело, что список сторонних менеджеров пакетов не велик, а список сторонних менеджеров пакетов и вовсе насчитывает всего 2 штуки: slapt-get и slpkg.

Slapt-get написан на сях и работает довольно быстро. Сам по себе slapt-get фактически является обёрткой для стандартных утилит из slackware - pkgtools.

Существует более богатый функциями slpkg, но написан на python и умеет несколько больше, кроме того, традиционно для питонных приложений его можно установить через pip.

Меня устраивает slapt-get так как он простой как дрова и обладает необходимым минимумом функций, но он очень чувствителен ко входным данным и не лишён багов.

Про slpkg ничего сказать не могу, так как я им не пользовался, ибо как и все поделки на питоне для его установки нужно что-то ещё поставить и там как всегда набегает всего и вся на вагон и маленькую тележку, чтобы всё это собрать правильно, надо сесть и заняться этим вопросом, а мне влом.

Подводя итоги всему выесказанному, я могу добавить, что для понимания, что же лучше в плане надёжности работы и предсказуемости поведения, нужно сделать забег на slpkg, но предыдущий мой забег сообщил мне, что есть определённые нюансы с конфигурацией репозиториев, сейчас уж и не вспомню какие, возможно это либо был какой-то баг, либо я чего-то недопонял, помню, что экперимент прервался и я не захотел его возобновлять, так как на тот момент slapt-get мне показался норм.

Next Post