Алексей Федорчук
Реализация утилиты 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
можно сказать определённо: она нужна редко, но крепко. Например, для фиксирования версии ядра — если не собственноручно собранного, то хорошо подобранного. Или позарез нужного пакета одного из старых релизов, который в релизах более новых капитально поломали, а то и вообще забросили. Или… да мало ли таких случаев в жизни, которые требуют исключения из правил?
Первый абзац не понятен. И в Ubuntu начиная с 14.04, и в Debian 8 — имеется пакет apt, а в нем apt-mark.
Цитирую себя, любимого:
> утилита apt-mark — один из компонентов пакета apt, о котором подробнее будет говорится в другом месте.
Я слегка про другое: т.е. пакет apt в linux mint отличается от пакета в debian и Ubuntu ?
Пакет apt — нет. А вот команда apt — по умолчанию в Mint’е вызывается совсем другая, /usr/local/bin/apt из пакета mintsystem, а не /usr/bin/apt из пакета apt: http://alv.me/?tag=apt4mint
О чём, как ни странно, большинство пользователей Mint’а и не подозревает…
Спасибо. Для меня это оказалось неожиданностью)