Управление deb-пакетами. Утилиты семейства APT: apt-mark

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

Реализация утилиты apt для Mint позволяет решать практически все насущные задачи по управлению deb-пакетами. Но, во-первых, в дистрибутивах проекта Mint: ни в Debian’е, ни в Ubuntu, и ни в одном из их клонов её не найти. А во-вторых — всё-таки не все. В частности, в ней не предусмотрено простых средств для массового изменения вторичных статусов пакетов, вроде автоматически установленных или зафиксированных.

Правда, с тем и другим испокон веку хорошо справлялась aptitude в командном режиме — но нынче её развитие то ли приостановилось, то ли прекратилось вообще, вплоть до исключения её из рядов КПСС Core System в Debian’е и Ubuntu. Однако на смену ей молодой поступью идёт утилита apt-mark — один из компонентов пакета apt, о котором подробнее будет говорится в другом месте.

Утилита apt-mark предназначена во-первых, для выявления пакетов, имеющих вторичный статус установленных вручную или автоматически, пакетов зафиксированных, то есть не подлежащих обновлению при обновлении, а во-вторых — для изменения этих статусов. Первой цели служат внутренние команды:

  • showauto, которая выводит список автоматически установленных пакетов;
  • showmanual, делающая то же самое для пакетов, установленных вручную;
  • showhold, выводящая список пакетов с зафиксированными версиями.

Ясно, что все они могут быть выполнены с правами обычного пользователя.

Для изменения статуса с автоматического на «ручной» предназначена внутренняя команда manual, тогда как внутренняя команда auto выполняет обратную процедуру. Внутренняя команда hold фиксирует версию пакета, а unhold — снимает фиксацию. Не менее очевидно, что все они требуют привилегий администратора, то есть в Ubuntu и Mint должны предваряться командой sudo. Например, конструкция

$ sudo apt-mark manual 

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

$ apt-mark showauto | grep [pattern]

а затем они гуртом или выборочно переопределяются как установленные вручную:

$ apt-mark manual | grep [pattern]

После чего они при необходимости могут быть удалены независимо и от включавшего их метапакета, и от других его компонентов.

Впрочем, в современных версиях Ubuntu и сородичей это не так востребовано, как некогда (когда, впрочем, утилиты apt-mark ещё не было в природе). Старожилы-убунтийцы помнят времена, когда удаление какого-нибудь безобидного тамильского шрифта приводило к сносу всех компонентов метапакета ubuntu-desktop или аналогичного «buntu».

Ныне пакеты, установленные при первичной инсталляции в рамках крупных базовых tasks, маркируются как имеющие статус «ручных», и могут быть удалены без малейшего вреда для системы. Но в ряде частных случаев субкоманда manual оказывается востребованной.

А вот про антитезу hold/unhold можно сказать определённо: она нужна редко, но крепко. Например, для фиксирования версии ядра — если не собственноручно собранного, то хорошо подобранного. Или позарез нужного пакета одного из старых релизов, который в релизах более новых капитально поломали, а то и вообще забросили. Или… да мало ли таких случаев в жизни, которые требуют исключения из правил?

Управление deb-пакетами. Утилиты семейства APT: apt-mark: 5 комментариев

  1. Первый абзац не понятен. И в Ubuntu начиная с 14.04, и в Debian 8 — имеется пакет apt, а в нем apt-mark.

  2. Цитирую себя, любимого:
    > утилита apt-mark — один из компонентов пакета apt, о котором подробнее будет говорится в другом месте.

  3. Я слегка про другое: т.е. пакет apt в linux mint отличается от пакета в debian и Ubuntu ?

  4. Пакет apt — нет. А вот команда apt — по умолчанию в Mint’е вызывается совсем другая, /usr/local/bin/apt из пакета mintsystem, а не /usr/bin/apt из пакета apt: http://alv.me/?tag=apt4mint
    О чём, как ни странно, большинство пользователей Mint’а и не подозревает…

  5. Спасибо. Для меня это оказалось неожиданностью)

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