Найти пакеты, установленные из определенного репозитория с aptitude

24
задан Community
26.03.2023 8:53 Количество просмотров материала 2922
Распечатать страницу

6 ответов

используя aptitude, для поиска установленных пакетов вне стабильной ветки, вы можете использовать:

aptitude search "?narrow(?installed,?not(?archive(stable)))"

чтобы увидеть версии, а также имена пакетов (и вместо описаний), вы можете использовать команду с опцией format (-F для краткости), следующим образом.

aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"

для более форматов, пожалуйста, взгляните на manpage (вот документация с avail. варианты).

это работает, например, в 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, и я в настоящее время at 1.6.2-1.

на момент отправки этот пакет уже был обновлен:)

17
отвечен ssice 2023-03-27 16:41

прочитав страницу информации о aptitude и дюжину попыток, я, наконец, получил это:

aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'

или (эквивалент) :

aptitude search '~S ~i (!~Atesting ~Aunstable)'

он будет искать пакеты, установленные из нестабильных архивов любой репозитория. Вы должны отфильтровать пакеты из архива по умолчанию (тестирование в приведенном выше примере).

если вы хотите фильтровать пакеты, установленные из www.debian-multimedia.org/unstable :

aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))

Edit: "архив", "начало" etc. вычитаются из Release файл репозитория. К сожалению, не все инструменты могут смотреть на все эти строки, и они используют для них другой синтаксис. Вы можете найти эти файлы как /var/lib/apt/lists/*Release. Или просто введите apt-cache policy получить обзор. apt-cache изменил формат вывода: в более поздних версиях используется стиль apt_preferences.

  • Suite: или Archive: (старое название!)
    • aptitude поиск:?archive(___) или ~A___
    • aptitude формат:%t
    • apt_preferences: release a=___
    • Ubuntu примеры:natty-backports,trusty-security,stable
  • Origin:
    • aptitude поиск:?origin(___) или ~O___
    • aptitude формат: n / a
    • apt_preferences: release o=___
    • Ubuntu примеры:Canonical,Google, Inc.,LP-PPA-dockbar-main,Ubuntu
  • все остальные русло
    • aptitude: n/a
18
отвечен Christophe 2023-03-27 18:58

Проверьте тег origin (например,o=Debian) для каждого из ваших текущих репозиториев:

apt-cache policy | sed -n 's/.*o=\([^,]\+\).*//p' | uniq

искать пакеты из (или не от) конкретного происхождения:

aptitude search "?installed?origin(Debian)"
aptitude search "?installed?not(?origin(Debian))"

Это не подходит для аудита безопасности, так как он использует каждый репозиторий для предоставления собственной исходной информации, но может быть полезен для устранения неполадок происхождения пакетов, присутствующих в нескольких репозиториях.

15
отвечен Anonymous 2023-03-27 21:15

для полноты: в системах Ubuntu вы также можете использовать Synaptic для этой задачи. В левой колонке вы можете отфильтровать пакеты по их происхождению.

5
отвечен Boldewyn 2023-03-27 23:32

Я нашел вот это :

aptitude search "?origin (<repository>) ?installed"

вы также можете найти список поисковых терминов, поддерживаемых "aptitude search"здесь.

2
отвечен max 2023-03-28 01:49

сначала найдите соответствующий файл(ы) для интересующего репозитория в /var/lib/apt/lists. Это должно быть возможно сделать программно, но мне это не нужно.

использование Google chrome в качестве примера, попробуйте это:

SEARCH_PATTERN=dl.google.com_linux_chrome  # adjust to suit your needs

for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
    if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
    then
        echo ${PKG}
    fi
done

и я получаю выход:

google-chrome-stable

dpkg-s возвращает 0, если пакет установлен и ненулевое значение в противном случае. Для справочных целей в будущем вывод

grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages

был

Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable
2
отвечен coreyh 2023-03-28 04:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх