Як дізнатися, з якого сховища походить пакунок?


147

Чи існує метод або команда, яка дозволяє визначити, з якого сховища надходить пакет?


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

mac, дякую за детальну відповідь! На жаль, це не допомагає мені з моїм початковим випуском проблеми з незадоволеною залежністю :-( Я намагаюся встановити libqt4-opengl, і він говорить: Наступні пакети мають невиконані залежності: libqt4-opengl: Залежить: 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

З цього важко зрозуміти, в чому саме проблема. Вам слід відкрити нове запитання, щоб ви могли надати повну інформацію. Якщо це зробити, залиште посилання в коментарі. :-)
Майкл Креншо

4
apt-cache policy <package name>(від: superuser.com/a/236605/37279 )
franzlorenzon

У APT-кеша {showpkg, політики} на самому ділі показати , де встановлений пакет був встановлений з , або там , де вона буде встановлена з в той час він запитаний?
Croad Langshan

1
Лист. Якщо я звичайно використовую trustyджерела пакунків Ubuntu , то тимчасово додаю utopicдо мого sources.list, щоб встановити версію 1.20ubuntu3 з, init-system-helpersа потім знову видалити репо з мого sources.list, apt-cache showpkg init-system-helpersпросто буде брехати про вихідний список пакетів і apt-cache policy init-system-helpersпросто вказати очевидне.
blubberdiblub

103

Використовуйте наступну команду. Він має кращий вихід:

apt-cache policy <Package Name>

Для Ubuntu 16.04 та пізніших версій існує коротший спосіб зробити це:

apt policy <Package Name>

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
нескінченно-етчетера

Це має бути прийнята відповідь! @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/*

Навіть синаптичний не може визначити, якщо ви вимкнете сховище та оновлення.



1

Це трохи точніше:

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

Найновіша версія, як правило, буде встановлена, якщо ви не встановили влучне закріплення або явно встановили певну версію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.