Как узнать, из какого репозитория приходит пакет?

147

Есть ли метод или команда, которая может определить, из какого репозитория приходит пакет?

DFME
источник
1
Это неоднозначно. Вы имеете в виду: какие в настоящее время включенные репозитории предоставляют пакет с заданным именем или: какой репозиторий использовался для установки пакета с тем именем, которое установлено в данный момент? (Оба полезны. Я ищу последнее, а не первое.)
Reinier Post

Ответы:

112

Необходимые команды:

  • dpkg -s <package>- позволяет найти версию, которую вы установили. ( источник )
  • apt-cache showpkg <package>- покажет список доступных версий пакета. Для каждой версии будет указан источник пакета в виде имени файла индекса.

Если вы хотите найти источник установленного пакета, вам понадобится вывод dpkg -s <package>. В противном случае вы можете просто посмотреть на новейшую версию вывода apt-cache showpkg <package>.

Пример:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Из первой команды видно, что установлена ​​версия Liferea 1.6.2-1ubuntu6. Из второй команды я вижу, что эта версия указана в /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Без особых усилий, я могу сделать вывод , что линейный источник содержит archive.ubuntu.com, ubuntu, lucid, и main.

И, конечно же, мой /etc/apt/sources.listсодержит следующую строку.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Майкл Креншоу
источник
Мак, спасибо за подробный ответ! К сожалению, это не помогает мне с моей первоначальной проблемой неудовлетворенных зависимостей :-( Я пытаюсь установить libqt4-opengl, и он говорит: Следующие пакеты имеют неудовлетворенные зависимости: libqt4-opengl: Depends: libqtcore4 (= 4: 4.6.2-0ubuntu5.1), но 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 должен быть установлен Зависит от: libqtgui4 (= 4: 4.6.2-0ubuntu5.1), но 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 должен быть установлен
dfme 20.10.10
Из этого трудно понять, в чем проблема. Вы должны открыть новый вопрос, чтобы вы могли предоставить полную информацию. Если вы это сделаете, оставьте ссылку в комментарии. :-)
Майкл Креншоу
4
apt-cache policy <package name>(от: superuser.com/a/236605/37279 )
franzlorenzon
У APT-кэша {showpkg, политики} на самом деле показать , где установлен пакет был установлен с , или там , где она будет установлена с в то время он запрошен?
Croad Langshan
1
Последний. Если я обычно использую trustyисходные коды пакетов Ubuntu , то временно добавлю их utopicв my sources.listдля установки версии 1.20ubuntu3 of, init-system-helpersа затем снова удалю репозиторий из my sources.list, apt-cache showpkg init-system-helpersпросто буду лежать в исходном списке пакетов и apt-cache policy init-system-helpersпросто изложу очевидное.
blubberdiblub
104

Используйте следующую команду. Это имеет лучший выход:

apt-cache policy <Package Name>

Для Ubuntu 16.04 и более поздних версий есть более короткий способ сделать это:

apt policy <Package Name>
SUb
источник
11
Это правильный ответ! Команды в ответе mac9416 нуждаются в утомительной интерпретации + угадывании на основе их вывода. Для получения дополнительной информации apt-cache policyсм. Также superuser.com/a/236605/61370
pabouk
3
apt-cache policyэто хорошо, но иногда вам нужно apt-cache showpkgсравнить суммы MD5 из пакета. Смотрите такжеdebsums --changed
gavenkoa
эта policyопция наиболее полезна при сравнении сsources.list
infinite-
Это должен быть принятый ответ! @pabouk прав. Этот ответ более актуален для вопроса, чем принятый в настоящее время.
HEXcube,
Как указал @ pablo-bianchi в своем ответе , apt policy <package-name>можно использовать еще более простой , начиная с 16.04LTS. Как только 14.04LTS станет EOL'd в 2018 году, этот ответ может быть отредактирован для использования более новой команды.
HEXcube,
9

apt на Ubuntu 16.04+

Кроме apt-cache policy, showpkgи showтеперь у нас есть более простой, с легко запомнить подкомандами: apt(не путать с классикой apt-*):

apt policy <package> 

Или альтернатива с дополнительной информацией apt show <package>, строка начинается с «APT-Sources:» .

Описание: этот пакет предоставляет инструменты командной строки для поиска и управления, а также для запроса информации о пакетах, а также низкоуровневый доступ ко всем функциям библиотеки libapt-pkg. К ним относятся: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Основные команды от apt --help

Другие также легко запоминающиеся подкоманды:

  • apt list - список пакетов на основе имен пакетов
  • apt search - поиск в описаниях пакетов
  • apt show - показать детали пакета
  • apt update - обновить список доступных пакетов
  • apt install - установить пакеты
  • apt remove - удалить пакеты
  • apt purge- удалить пакеты и файлы конфигурации :

    При удалении пакета удаляются все упакованные данные, но обычно остаются небольшие (измененные) пользовательские файлы конфигурации на случай, если удаление было случайным. Просто отправив запрос на установку случайно удаленного пакета, вы восстановите его функцию, как и раньше в этом случае. С другой стороны, вы можете избавиться от этих остатков, вызвав очистку даже на уже удаленных пакетах. Обратите внимание, что это не влияет на данные или конфигурацию, хранящиеся в вашем домашнем каталоге.

  • apt upgrade - обновить систему путем установки / обновления пакетов

  • apt full-upgrade - обновить систему, удалив / установив / обновив пакеты
  • apt edit-sources - отредактируйте исходный файл информации
Пабло А
источник
apt policy xxxкажется идентичным apt-cache policy xxx, возможно, это должен был быть комментарий. Или, по крайней мере, упомянуть, что, apt showкажется, нужен -aпереключатель, чтобы увидеть «дополнительные записи» из других источников
Xen2050
6

К сожалению, эта информация не записывается во время установки пакета. Вы можете сделать приличное предположение, если хранилище все еще находится в списке источников, а хранилище все еще содержит пакет:

grep -l PKG /var/lib/apt/lists/*

Даже Synaptic не может сказать, если вы отключите хранилище и обновите.

канак
источник
1

Это немного точнее:

apt-cache show <packagename> | grep "Version:"

Самая новая версия обычно устанавливается, если вы не установили apt-pinning или явно не установили конкретную версию.

mchid
источник