Void Linux. Управление пакетами. Система XBPS: изменение статусов

Алексей Федорчук

В предыдущих материалах несколько раз упоминалось о пакетах, установленных вручную (mfnual) или автоматически (automatic), как зависимости других пакетов, а также о пакетах с зафиксированной (hold) версией. Однако ни слова не было сказано о том, как эти статусы пакетам присваиваются или изменяются.

А ведь первая пара статусов весьма важна при удалении пакетов — удаление автоматически установленного пакета влечёт за собой удаление его обратных зависимостей. А поскольку, как говорилось, в XBPS нет разделения на зависимости «жёсткие» и «мягкие», далеко не всегда это действительно необходимо. В частности, обычно удаление какого-либо компонента метапакета требует удаления и всех остальных входящих в него пакетов, хотя на самом деле они вполне могут функционировать независимо друг от друга.

И, напротив, деинсталляция базового пакета, если не прибегнуть к опции рекурсивного удаления, оставляет после себя его «осиротелые» зависимости, которые только загромождают систему и путаются под ногами.

Что же до фиксации версий — она необходима для того, чтобы собственноручно пресобранный с собственными опциями пакет не был заменён базовым его вариантом при общем обновлении системы. Или просто для сохранения старой версии пакета — всем известны примеры того, как в новых версиях появляются и новые ошибки, а иногда имеет место быть и деградация функциональности.

Так что управление статусами пакетов может быть важной частью пакетного менеджмента. И в XBPS оно осуществляется с помощью утилиты xbps-pkgdb. Запущенная как одноимённая команда в «голом» виде, она выведет список своих опций. Они немногочисленны, а реально из них востребованы в повседневной жизни только две — -m (или --mode) и -a (или --all).

Первая опция может принимать одну из пар значений: auto или manual, hold или unhold, repolock или repounlock. Очевидно, что первые две пары обеспечивают присвоение и снятие одномённых статусов, а о последней надо сказать пару слов. Это — некий аналог статуса hold, но на уровне репозитория. То есть пакет, установленный из некоего репозитория (например, самодельного локального), бубед обновляться только из него же, не принимая обновлений из репозиторией официальных.

Что же до опции -a — как следует из её полного имени, она распространяет действие опции -m на все установленные пакеты. Правда, я с трудом представляю ситуацию, в которой это может понадобиться, тем более в rolling-системе, каковой является Void Linux.

Вообще, не смотря на теоретическую важность управления статусами, отмеченную выше, я не нашёл применений для утилиты xbps-pkgdb в свежеустановленной системе: удалять из базовой инсталляции (что является моим любимыфм занятием в более иных дистрибутивах) просто нечего (даже иксовых драйверов для реликтовых видеочипов в ней нет), самосборных пакетов и тем более самодельных репозиториев нет… Поэтому и конкретных примеров использования xbps-pkgdb в это заметке нет тоже. Как только необходимость в ней появится — появятся и примеры.

Оглавление

Добавить комментарий