Jak sprawdzić, z którego repozytorium pochodzi pakiet?

147

Czy istnieje metoda lub polecenie, które pozwala stwierdzić, z którego repozytorium pochodzi pakiet?

dfme
źródło
1
To jest dwuznaczne. Czy masz na myśli: które aktualnie włączone repozytoria dostarczają pakiet o podanej nazwie, lub: które repozytorium zostało użyte do zainstalowania pakietu o tej nazwie, który jest obecnie zainstalowany? (Oba są przydatne. Szukam drugiego, a nie pierwszego.)
Reinier Post

Odpowiedzi:

112

Potrzebne polecenia:

  • dpkg -s <package>- pozwala znaleźć wersję, którą zainstalowałeś. ( źródło )
  • apt-cache showpkg <package>- wyświetli listę dostępnych wersji pakietu. Dla każdej wersji podane zostanie źródło pakietu, w postaci nazwy pliku indeksu.

Jeśli chcesz znaleźć źródło aktualnie zainstalowanego pakietu, potrzebujesz danych wyjściowych dpkg -s <package>. W przeciwnym razie możesz po prostu spojrzeć na najnowszą wersję danych wyjściowych przez apt-cache showpkg <package>.

Przykład:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <[email protected]>
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
...

Po pierwszym poleceniu widzę, że Liferea wersja 1.6.2-1ubuntu6 jest zainstalowana. Po drugim poleceniu widzę, że ta wersja jest wymieniona w /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Bez zbytniego wysiłku, mogę wywnioskować, że linia źródło zawiera archive.ubuntu.com, ubuntu, lucid, i main.

I rzeczywiście, mój /etc/apt/sources.listzawiera następujący wiersz.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Michael Crenshaw
źródło
Mac, dziękuję za szczegółową odpowiedź! Niestety nie pomaga mi to z początkowym problemem niezaspokojonej zależności :-( Próbuję zainstalować libqt4-opengl i mówi: Następujące pakiety mają niezaspokojone zależności: libqt4-opengl: Zależy: libqtcore4 (= 4: 4.6.2-0ubuntu5.1), ale należy zainstalować 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 Zależy: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) ale 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 ma zostać zainstalowany
dfme
Z tego trudno dostrzec, na czym polega problem. Powinieneś otworzyć nowe pytanie, aby podać pełne informacje. Jeśli tak, zostaw link w komentarzu. :-)
Michael Crenshaw
4
apt-cache policy <package name>(z: superuser.com/a/236605/37279 )
franzlorenzon
Czy apt-cache {showpkg, polityka} rzeczywiście pokazać, gdzie zainstalowany pakiet został zainstalowany z , lub po prostu gdzie będzie zainstalowany od chwili jest odpytywany?
Croad Langshan
1
Ten ostatni. Jeśli ogólnie używam trustyźródeł pakietów Ubuntu , to tymczasowo dodaj utopicdo mojego sources.list, aby zainstalować wersję 1.20ubuntu3, init-system-helpersa następnie ponownie usuń repozytorium z mojego sources.list, apt-cache showpkg init-system-helperspo prostu kłamię na temat oryginalnej listy pakietów i apt-cache policy init-system-helperspo prostu stwierdzę oczywistość.
blubberdiblub
103

Użyj następującego polecenia. Ma lepszą wydajność:

apt-cache policy <Package Name>

W przypadku Ubuntu 16.04 i nowszych istnieje krótszy sposób:

apt policy <Package Name>
Pod
źródło
11
To poprawna odpowiedź! Polecenia zawarte w odpowiedzi przez mac9416 wymagają żmudnej interpretacji + zgadywania na podstawie ich wyników. Aby uzyskać więcej informacji, apt-cache policyzobacz także superuser.com/a/236605/61370
pabouk
3
apt-cache policyjest dobry, ale czasami trzeba apt-cache showpkgporównać sumy MD5 z pakietu. Zobacz takżedebsums --changed
gavenkoa,
ta policyopcja jest najbardziej użyteczna w porównaniu zsources.list
nieskończonym-etcetera
To powinna być zaakceptowana odpowiedź! @pabouk ma rację. Ta odpowiedź jest bardziej adekwatna do pytania niż obecnie akceptowana.
HEXcube,
Jak zauważył @ pablo-bianchi w swojej odpowiedzi , apt policy <package-name>można użyć jeszcze prostszego , począwszy od 16.04LTS. Gdy 14.04LTS stanie się EOL'em w 2018 roku, odpowiedź ta może być edytowana w celu użycia nowszej komendy.
HEXcube,
9

apt na Ubuntu 16.04+

Poza tym apt-cache policy, showpkga showteraz mamy prostsze, z łatwymi do zapamiętania podkomendami: apt(nie mylić z klasyką apt-*):

apt policy <package> 

Lub alternatywa z większą ilością informacji apt show <package>, wiersz zaczynający się od „APT-Sources:” .

Opis: Ten pakiet zawiera narzędzia wiersza polecenia do wyszukiwania i zarządzania, a także kwerendy o pakietach jako niski poziom dostępu do wszystkich funkcji biblioteki libapt-pkg. Należą do nich: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Podstawowe polecenia z apt --help

Inne również łatwe do zapamiętania podkomendy:

  • apt list - wyświetla listę pakietów na podstawie nazw pakietów
  • apt search - szukaj w opisach pakietów
  • apt show - pokaż szczegóły paczki
  • apt update - zaktualizuj listę dostępnych pakietów
  • apt install - instaluj pakiety
  • apt remove - usuń paczki
  • apt purge- usuń pakiety i pliki konfiguracyjne :

    Usunięcie pakietu usuwa wszystkie spakowane dane, ale zwykle pozostawia za sobą małe (zmodyfikowane) pliki konfiguracyjne użytkownika, na wypadek gdyby usunięcie było wypadkiem. Samo wysłanie żądania instalacji przypadkowo usuniętego pakietu przywróci jego działanie, tak jak poprzednio. Z drugiej strony możesz pozbyć się tych resztek, wywołując purge nawet na już usuniętych pakietach. Pamiętaj, że nie wpływa to na żadne dane ani konfigurację przechowywane w twoim katalogu domowym.

  • apt upgrade - zaktualizuj system, instalując / aktualizując pakiety

  • apt full-upgrade - zaktualizuj system, usuwając / instalując / aktualizując pakiety
  • apt edit-sources - edytuj plik informacji o źródle
Pablo A.
źródło
apt policy xxxwygląda identycznie apt-cache policy xxx, być może powinien to być komentarz. Lub przynajmniej wspomnieć, że apt showwydaje się , że potrzebny jest -aprzełącznik, aby wyświetlić „dodatkowe rekordy” z innych źródeł
Xen2050,
6

Niestety ta informacja nie jest rejestrowana podczas instalacji pakietu. Możesz zgadnąć, czy repozytorium nadal znajduje się na liście źródeł, a repozytorium nadal ma pakiet:

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

Nawet synaptic nie może stwierdzić, czy wyłączysz repozytorium i zaktualizujesz.

kanaka
źródło
4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

źródło

sBlatt
źródło
1

Jest to trochę dokładniejsze:

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

Najnowsza wersja zazwyczaj jest instalowana, chyba że ustawiłeś apt-pinning lub wyraźnie zainstalowałeś konkretną wersję.

mchid
źródło