LINUX.ORG.RU

Debian, apt, dpkg - получить список пакетов, соответствующих определённому критерию

 , ,


0

2

Хочу получить список пакетов, отвечающих следующему критерию: приоритет не required и не important, пакет установлен и помечен как установленный вручную. Я легко себе представляю, как для этого использовать aptitude, у него есть очень мощные шаблоны поиска, но для меня совершенно неясно, как это сделать без aptitude, силами dpkg и apt. Пожалуйста, помогите или покажите, что прочитать, чтобы понять. Заранее спасибо.

★★

Ответ на: комментарий от anonymous

Что-то мне не удалось постичь, как заставить его сделать то, что мне нужно.

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

Знаешь, стрёмно. Могу случайно заиспользовать aptitude вместо apt для системных действий, а ещё при предыдущей установке Debian я столкнулся с тем, что от aptitude могут раком встать те самые метки «вручную/автоматически».

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

Я это видел месяц назад. Мне страшно.

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

Кстати, а скинь, плиз, ссыль на этот самый багтрекер. Хочу тоже глянуть. И, если можно, напомни, что там из критического у aptitude.

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

Единственное, о чём знаю - это вот такое «забывание» автоматически/вручную установленных.

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

Ну, тащемта, dpkg-query в однострочниках и вытаскивать нужные строчки. Типа:

dpkg-query -W  --showformat='${Package}\t${Priority}\t${Status}\n'

Но с помощью aptitude можно делать более хитрые запросы, конечно. Но всю информацию он берет из тех же файлов в /var/lib/. Просто он по этим файлам может запросы выполнять и комбинировать информацию. Если нет aptitude, то для хитрых запросов надо скриптики писать.

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

А не подскажешь, как выцепить установку вручную? Я прочитал ман по dpkg-query, но просветления не достиг.

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

А чтобы различать, автоматически ли пакет поставлен или нет, надо уже лезть в /var/lib/apt/extended_states. Туда вроде dpkg не лезет, он не отличает автоматически притянутый пакет. Это уже уровень apt.

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

Что-то я не вижу, как можно было бы легко всё это распарсить.

Ну уж скрипты писать я не хочу. Генерируешь сортированный список /var/lib/dpkg/status (он же dpkg-query), второй сортированный список из /var/lib/apt/extended_states, а потом используй comm над этими двумя списками. Это однострочник, на самом деле.

Это примерно то же самое, что и делает aptitude, но только он еще более хитрые запросы позволяет делать над этими базами данных.

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

Эээ... Я, наверное, смирюсь с присутствием в системе aptitude.

Norong ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.