Вопрос Как узнать, из какого пакета Ubuntu или Debian поставляется пакет?


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

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

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


164
2018-02-09 19:14


происхождения


я нахожу это одним из недостатков Apt; просто нелегко сказать, из какого репозитория предоставляется определенный пакет в средствах установки пакета. - quack quixote


ответы:


я бегу 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
2018-01-22 22:00



Но он не показывает, откуда появился установленный пакет, не так ли? - Adobe
@Adobe В моем случае 2.1 версия недоступна из любого репозитория. Он локально построен. - Tshepang
Что такое установленный пакет? *** или /var/lib/dpkg/status ? - SuB
Возможно оба? Не уверен. - Tshepang
Когда пакет не установлен, apt-cache policy говорит: Installed: (none), - John McGehee


Ага! По-видимому, надлежащее 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 не может отображать исходный репозиторий, но, похоже, в данный момент функция все еще находится в списке пожеланий.


27
2018-02-10 00:57



Эта способность по-прежнему находится на whislist через 8 лет, и я не знаю, почему этот ответ (apt-cache showpkg) не помечен как правильный. - Csaba Toth


Это работает для меня (показывает, где находится пакет 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
2018-02-09 19:41



Прагматический. Я удивлен, что эта информация недоступна через любой из сторон dpkg, хоть. - gotgenes
@got Доступно: superuser.com/questions/106794/... - Tshepang


Интересно, почему никто не упомянул aptitude, Я использую это все время.

Способность:

  • поставляется по умолчанию со многими дистрибутивами на основе Debian. Может быть установлен на другой (например, Ubuntu) через sudo apt install aptitude
  • не требует административных привилегий (по крайней мере, для команды ниже)
  • действительно приятно ncurses GUI (но большую часть времени без него)
  • обеспечивает действительно хороший результат. Чтобы показать версии пакетов, используйте aptitude versions команда:

    me@wheezy:~$ aptitude versions kde-standard
    Package kde-standard:                        
    i A 5:77+deb7u1     stable              500
    p A 5:84            testing,unstable    130
    
  • не имеет суперкоусов

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

Одно предупреждение о последних версиях aptitude стоит упомянуть здесь: по умолчанию он показывает все пакеты, которые включают имя, которое вы ищете, поэтому используйте регулярное выражение магия немного для поиска по строгому имени, например aptitude versions ^kde-workspace$,


8
2018-01-12 11:32



Nice, но он не перечисляет репозиторий по запросу. - bjhend
На самом деле оно делает, - TranslucentCloud
Вы не понимаете. Могут быть установлены дополнительные PPA. Важно знать, является ли пакет такой PPA. На самом деле, вот что я пытаюсь понять прямо сейчас - если это так, я могу удалить PPA, уменьшая риск проблем. - reinierpost
Да, вы правы, с versions вы можете просто проверить значения apt pinning данных пакетов, а не связанные с ними репозитории. Это по-прежнему полезно, хотя, если вы знаете все ваши репозитории и как они закреплены. - TranslucentCloud


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

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

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

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


6
2017-10-20 21:42





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

# 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

пс. не на 100% точным.


2
2018-01-22 15:55