Назад | Перейти на главную страницу

перечислить все пакеты из репозитория в ubuntu / debian

есть ли команда, чтобы увидеть, какие пакеты доступны из определенного репозитория ppa?

Просто:

grep ^Package: /var/lib/apt/lists/ppa.launchpad.net_*_Packages 

Или более гибкий:

grep-dctrl -sPackage . /var/lib/apt/lists/ppa.launchpad.net_*_Packages 

Для более удобных запросов используйте apt-cache policy и aptitude как описано здесь:

aptitude search '~O LP-PPA-gstreamer-developers'
grep Package /var/lib/apt/lists/(repo name)_Packages

Я не знаю, что вы ищете:

https://superuser.com/questions/132346/find-packages-installed-from-a- sure-repository-with-aptitude

Как говорится, Synaptic Package Manager позволяет вам искать по "происхождению". Это не программное обеспечение, но оно должно дать вам то, что вы ищете.

Старая ветка, но подумал, что может помочь. Используйте awk, sort и uniq, чтобы получить только пакеты и сбросить контрольные суммы репозитория пакетов.

grep ^Package /var/lib/apt/lists/<repo you are interested in>* | awk '{print $2}' | sort | uniq

Просто для развлечения или если вы не доверяете кешам, вы можете запросить пакеты, объявленные источником, ну, ну, из самого источника. Репозитории - это в значительной степени веб-сайты, либо HTTP, либо FTP.

В вашей системе есть исходные URL-адреса, по которым вы можете запрашивать конкретные архитектуры и параметры двоичного кода / источника. Затем вы можете запросить списки пакетов конкретной архитектуры.

Например, я использую отличный медиаплеер jRiver. Медиа центр на Pop! _OS. Чтобы запросить их стабильный репозиторий, который я настроил, сначала узнайте URL:

$ cat /etc/apt/sources.list.d/mediacenter26.list 
#MC
deb [arch=i386,amd64,armhf] http://dist.jriver.com/stable/mediacenter/ jessie main

Затем выберите место в списке для интересующей вас архитектуры. Обратите внимание, что URL-адрес формируется по шаблону <archive_url>/dists/<distro>/Release:

$ curl -s http://dist.jriver.com/stable/mediacenter/dists/jessie/Release |
> grep "amd64/Packages$" |
> cut -d" " -f 4 |
> sort -u
main/binary-amd64/Packages

Наконец, добавьте путь списка архитектуры к раздаче и извлеките имена пакетов из списков сигнатур:

$ curl -s http://dist.jriver.com/stable/mediacenter/dists/jessie/main/binary-amd64/Packages |
> grep "^Package: " |
> cut -d" " -f2 |
> sort -u
mediacenter21
mediacenter22
mediacenter23
mediacenter24
mediacenter25

Естественно, настройте или удалите grep|cut|sort фильтры на свой вкус. удалять -s (тихий) параметр из curl при необходимости просмотреть диагностику.

... или используйте Менеджер пакетов Synaptic.

Для моего варианта использования мне нужен список пакетов из нескольких репозиториев, соответствующих одному и тому же выпуску dist, в частности, Jessie. На этом хосте настроено несколько репозиториев jessie, репозиторий Dell linux и архивы Debian для некоторых зависимостей.

Я закончил с этим, кхм, однострочником:

for p in $(dpkg -l | awk '/ii/{ print $2 }'); do for i in $(apt-cache policy "$p" | awk '/Installed/{ print $2}'); do apt-cache policy "$p" | grep -A1 '\*\*\*\ '$i'' | if grep -q jessie; then echo $p; fi; done; done

Довольно уродливо, поскольку нам нужно запустить apt-cache дважды: один раз, чтобы получить установленную версию пакета, и второй раз, чтобы сопоставить эту установленную версию с целевым репозиторием, которое в этом случае удобно сопоставить с помощью просто «jessie».

Если вы удалите 'grep -q', вы также получите вывод соответствующей строки репо для подтверждения или иным образом. Вы можете адаптировать этот синтаксис соответствия к регулярному выражению, чтобы соответствовать нескольким репозиториям.