Как сказать, из какого Ubuntu или репозиторий Debian прибывает пакет?

В находящейся в Debian системе, включая Ubuntu, как можно сказать, какой репозиторий пакет будет загружен с, на самом деле не начиная загрузку? aptitude show и apt-cache info покажет раздел (например, метапакет, основа, графика), но не репозиторий, которому пакет принадлежит (например, http://ppa.launchpad.net/mactel-support/ppa/ubuntu или http://us.archive.ubuntu.com/ubuntu/).

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

Кроме того, как можно определить исходный репозиторий для пакета, который уже установлен?

167
задан 09.02.2010, 21:40

5 ответов

Я работаю apt-cache policy <package name>:

$ apt-cache policy wajig
wajig:
  Installed: 2.1
  Candidate: 2.1
  Version table:
 *** 2.1 0
        100 /var/lib/dpkg/status
     2.0.47 0
        500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
        500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages

Это означает, что существует три wajig пакеты:

  • Тот, который установлен (/var/lib/dpkg/status)

  • Тот, который доступен от локального репозитория (file:/home/wena/.repo_bin/)

  • Тот, который доступен из удаленного репозитория (ftp://ftp.is.co.za/debian), который также, оказывается, имеет ту же версию (2.0.47) как та в локальном репозитории


Кроме того, apt-cache madison <package name> отобразит подобную информацию в табличном формате.

 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe amd64 Packages
 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources
202
ответ дан 07.12.2019, 07:43

Ага! По-видимому, надлежащее apt команда не apt-cache info, но вместо этого, apt-cache showpkg.

$ apt-cache showpkg linux-generic
Package: linux-generic
Versions: 
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c

2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c


Reverse Depends: 
Dependencies: 
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32) 
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27) 
Provides: 
2.6.31.19.32 - 
2.6.31.14.27 - 
Reverse Provides: 

File: строка обеспечивает информацию о хранилище после /var/lib/apt/lists/.

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

28
ответ дан 07.12.2019, 07:43

Это работает на меня (шоу, где 2vcard пакет):

$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"

/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb

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

8
ответ дан 07.12.2019, 07:43

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

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

apt-cache showpkg показывает данные из хранилища данных (не, что установлено), таким образом, это - другая форма той же информации от grep.

Даже синаптический не может сказать (на экране Origin), если Вы отключаете репозиторий и обновление.

6
ответ дан 07.12.2019, 07:43

Или, вдохновленные Солнечным можно попробовать:

# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done

# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done

PS не точных 100%.

2
ответ дан 07.12.2019, 07:43

Теги

Похожие вопросы