Используя aptitude, для поиска установленных пакетов за пределами стабильной ветки вы можете использовать:
aptitude search "?narrow(?installed,?not(?archive(stable)))"
Чтобы увидеть версии, а также имена пакетов (и вместо описаний), вы можете использовать команду с параметром формата ( -F
для краткости) следующим образом.
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
Для большего количества форматов, пожалуйста, посмотрите на страницу руководства (здесь документация с опциями. )
Это работает, например, в Debian, если вы установили пакеты за пределами Squeeze (например, запустив apt-get install -t sid package-name
.
Вы можете посмотреть откуда приходит установленный пакет apt-cache policy
, используя его следующим образом:
apt-cache policy <package-name>
Например, мой пакет python-numpy выдает следующий вывод:
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages
Это означает, что я на одну версию позади текущей ветки sid / main, поэтому у меня установлена старая версия sid. Я вижу, что у меня нет стабильной, потому что она еще есть 1.4.1-5
, и я в настоящее время на 1.6.2-1
.
На момент отправки этот пакет уже был обновлен:)
?any-version()
, потому что~narrow(pat1, pat2)
это так же, как?any-version(pat1 pat2)
и поддерживает,?any-version(pat1 pat2 pat3)
не выглядя глупо.После прочтения информационной страницы способностей и десятка попыток, я наконец-то получил это:
или эквивалент) :
Он будет искать пакеты, установленные из нестабильных архивов любого репозитория. Вы должны отфильтровать пакеты из вашего архива по умолчанию (тестирование в приведенном выше примере).
Если вы хотите отфильтровать пакеты, установленные с www.debian-multimedia.org/unstable:
Изменить: «Архив», «происхождение» и т. Д. Вычитаются из
Release
файла хранилища. К сожалению, не все инструменты могут просматривать все эти строки, и они используют различный синтаксис для них. Вы можете найти эти файлы как/var/lib/apt/lists/*Release
. Или просто введите,apt-cache policy
чтобы получить обзор. apt-cache изменил свой формат вывода: более поздние версии используют стиль apt_preferences.Suite:
илиArchive:
(старое имя!)?archive(___)
или~A___
%t
release a=___
natty-backports
,trusty-security
,stable
Origin:
?origin(___)
или~O___
release o=___
Canonical
,Google, Inc.
,LP-PPA-dockbar-main
,Ubuntu
источник
Проверьте тег источника (например, o = Debian ) для каждого из ваших текущих репозиториев:
Затем найдите пакеты из (или не из) определенного источника:
Это не подходит для аудита безопасности, потому что он полагается на каждый репозиторий для предоставления своей собственной информации о происхождении, но это может быть полезно для устранения проблем происхождения пакетов, которые присутствуют в нескольких репозиториях.
источник
aptitude search
образцы не хороши. - Они выбирают, как этот «список пакетов, в которых установлена одна версия, и любая другая версия существует в Debian» или «установлена какая-то версия, и по крайней мере одна версия этого пакета доступна в не-Debian». - Что мы ищем, так это «установленная версия от Debian (или нет)». Это должно быть сделано с помощью?narrow()
или?any-version()
.nemo-fileroller
сlinuxmint
, но онDebian
тоже существует. Так что он появляется в списке, потому что он установлен и существует где-то из Debian.Для полноты: в системах Ubuntu вы также можете использовать Synaptic для этой задачи. В левом столбце вы можете отфильтровать пакеты по их происхождению.
источник
Я нашел это:
Вы также можете найти список поисковых терминов, поддерживаемых «поиском aptitude» здесь .
источник
sudo
? Мне кажется, что это также работает без запуска от имени пользователя root.Сначала найдите соответствующий файл (ы) для интересующего хранилища в / var / lib / apt / lists. Должно быть возможно сделать это программно, но мне не нужно было это делать.
Используя Google Chrome в качестве примера, попробуйте это:
и я получаю вывод:
dpkg -s возвращает 0, если пакет установлен, и ненулевое значение в противном случае. Для будущих справочных целей вывод
был
источник
Другие ответы на самом деле неверны, потому что параметр to
?archive()
является регулярным выражением. Так?archive(stable)
совпадает и тоstable
и другоеunstable
. Чтобы исключить толькоstable
вам нужно привязать шаблон регулярного выражения:Чтобы исключить несколько репозиториев:
Также обратите внимание, что некоторые пакеты принадлежат нескольким репозиториям, например
xenial-security,xenial-updates
.?archive()
оценивает шаблон регулярного выражения для каждого репозитория индивидуально, поэтому?archive("^xenial-updates$")
будет сопоставлять любые пакеты, принадлежащиеxenial-updates
, даже если он также принадлежит другим репозиториям.источник