LINUX.ORG.RU
решено ФорумAdmin

APT - как присвоить свою метку группе пакетов?

 , , , ,


1

2

Поясню на примере. Хочу собрать из исходников некоторую программу, для этого мне нужно установить несколько dev пакетов:

apt install dev-package1 dev-package3 dev-package3
Своими зависимостями они притянут за собой еще пакеты
The following NEW packages will be installed:
dev-package1 dev-package3 dev-package3 dep1 dep2 dep3

Как на этапе apt install присвоить всем пакетам, которые сейчас будут установлены, свою метку вида build_programname, чтобы потом сделать

apt purge build_programname

★★★★★

напиши ansible плейбук с флагом «установить» и\или «удалить» N+1 пакетов.
пакетный менеджер не про метки и вот это всё.

system-root ★★★★★
()

А что, autoremove не поможет? Ах да, в apt же «липкие» зависимости. Ну тогда запиши в блокнот всё, что установилось и удаляй руками.

Thetan ★★★
()
Ответ на: комментарий от Thetan

Ну тогда запиши в блокнот всё, что установилось и удаляй руками.

Собственно, надоело так делать.

А что, autoremove не поможет?

Поможет, если удалить все пакеты из первой команды.

aquadon ★★★★★
() автор топика

В том числе и из-за этого я вернулся на генту.

grem ★★★★★
()

Используй aptitude и волосы будут шелковистые:

# aptitude --add-user-tag <tag> install dev-package1 dev-package3 dev-package3

Можешь совместно apt и aptitude использовать - у них одна база. Лично я пользуюсь aptitude.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Использую aptitude для аккуратного выхлопа при поиске. Спасибо за наводку!

А как удалить помеченые пакеты потом, не подскажешь сразу?

aquadon ★★★★★
() автор топика
Последнее исправление: aquadon (всего исправлений: 1)

Скорее всего, тебе нужен schroot и apt-cacher-ng. Собирай в чистом чруте, который после сборки выбрасывается. Не придётся вычищать пакеты из основной системы.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ну если в изолированной среде, то еще pbuilder.

Zubok ★★★★★
()
Ответ на: комментарий от aquadon

А как удалить помеченые пакеты потом, не подскажешь сразу?

Ну самое простое:

# aptitude remove|purge|search '?user-tag(tag)'

Можно еще так. Тогда удаляются только пакеты с метками, установленные вручную, а остальные по зависимостям уйти должны, как и пришли по зависимостям.

# aptitude remove|purge|search '?user-tag(tag)!~M'

И надо иметь в виду, что tag - это regular expession, поэтому если есть метка lib1 и метка lib12, то на tag=lib1 сработают оба. Должны, по крайней мере. Проверять не хочу.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Ну и добавлю, что я бы использовал второй метод. И вот почему. допустим ты ставишь пакеты A и B, один с тегом tag-a, а другой — с тегом tag-b. Первым ставишь A, потом B. Допустим, что оба пакета зависят от некоторого пакета C, который приходит сразу же при установке пакета A. Тогда получаем следующую картину установленных пакетов:

manual A - tag-a
manual B - tag-b
auto   C - tag-a (tag-b не проставится, так как этот пакет уже установлен с A).

Если мы просто удалим все пакеты с tag-a, то неизбежно захочет удалиться C, так как такой тег тоже имеет и мы просим удалить его ЯВНО, что неизбежно повлечет за собой желание пакетного менеджера удалить и B, так как важную для него библиотеку настойчиво просят удалить. В дело вступит решатель, который начнет тебе предлагать варианты, чтобы разрулить. В общем, просто создаст геморрой. А вот если дополнительно сказать, что удалить только вручную установленные пакеты c tag-a, то под действие этого паттерна попадет только A, который захочет утащить по зависимостям C, но пакетный менеджер увидит, что он кому-то еще нужен, и не удалит.

Когда же ты попросишь удалить все вручную поставленные пакеты с tag-b, то C снесется по зависимостям, так как он больше никому не нужен.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 5)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.