Jak mogę wyświetlić listę wszystkich pakietów, które zainstalowałem z określonego repozytorium?


51

Jak mogę wyświetlić listę wszystkich pakietów, które zainstalowałem z określonego repozytorium?

Jak mogę wyświetlić listę wszystkich zainstalowanych pakietów, które nie są dostępne z głównych archiwów Ubuntu, a także zobaczyć, z których repozytoriów pochodzą? (Gdybym znał odpowiedź na to pytanie, mógłbym przeszukać tę listę dla konkretnej nazwy PPA, aby znaleźć odpowiedź na moje pierwsze pytanie).


Ponieważ wydaje się, że nie ma w tym celu narzędzia wiersza poleceń (niestety), zaakceptuję jedną z odpowiedzi GUI.
Marius Gedminas

Odpowiedzi:


24

Rozwiń pozycję „Zainstalowane oprogramowanie” w Centrum oprogramowania Ubuntu. Zobaczysz listę wszystkich różnych repozytoriów, które włączyłeś. Kliknięcie repo pokaże pakiety, które zainstalowałeś z każdego z nich.

alternatywny tekst


Obawiam się, że ta opcja jest dostępna tylko w Ubuntu 10.10, czy coś mi brakuje? Moje Centrum oprogramowania nie wyświetla źródeł poniżej tego menu.
lovinglinux

2
W mojej wersji mam menu „Zainstalowane” u góry. Kiedy wybiorę tę opcję, mogę wybrać różne źródła (rdzeń, do zakupu, PPA ...)
Alexis Wilke,

W Ubuntu 16.04 ta strona nie jest już dostępna. Jednak synaptic ma podobną funkcję - kliknij „Pochodzenie” w lewym dolnym rogu.
Josh

26

Wydaje się, że nie ma zapisu pochodzenia zainstalowanego pakietu.

Jeśli nie masz nic przeciwko uzyskaniu lokalizacji, z której można pobrać pakiet o tej samej nazwie, jest to możliwe poprzez apt-cache policy. Poniższy (raczej brzydki) skrypt załatwia sprawę:

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
  | fgrep ':install ok installed' \
  | cut -d: -f1 \
  | (while read pkg; do 
       inst_version=$(apt-cache policy $pkg \
                                | fgrep Installed: \
                                | awk '{ print $2 }'); 
       origin=$(apt-cache policy "$pkg" \
                          | fgrep " *** ${inst_version}" -C1 \
                          | tail -n 1 \
                          | cut -c12-); 
       echo $pkg $origin; 
     done)

Pamiętaj, że jest dość delikatny, ponieważ przyjmuje założenia dotyczące wyników apt-cache policy, które mogą się zmieniać w różnych wersjach ...


Tak, to w zasadzie oznaczałoby napisanie narzędzia od zera. I myślę, że parsowanie / var / lib / apt / list za pomocą Perla lub Pythona byłoby szybsze i bardziej niezawodne.
Marius Gedminas

Działa normalnie tutaj, w 2018 roku :) Dziękujemy!
N0rbert,

Opracowałem podobne rozwiązanie przetestowane na Ubuntu i Debianie.
famzah

23

Otwórz Menedżera pakietów Synaptic i kliknij przycisk „Początek” u dołu lewego paska bocznego. Spowoduje to wyświetlenie listy źródeł. Wybierz źródło, aby zobaczyć dostępne / zainstalowane pakiety.


4

Ten skrypt wyświetla pakiety, które są zainstalowane i dostępne w PPA:

#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers

name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null  | awk '/^[^ ]+ ok installed/{print $4}'

Zastosowałem to .

BTW Jeśli chodzi o usuwanie PPA z użycia, użyj programu ppa-purge; Stworzyłem ulepszoną wersję nim tutaj .


3

Pod Quantal (12.10) należy usunąć spację w linii początkowej.

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
 | fgrep ':install ok installed' \
 | cut -d: -f1 \
 | (while read pkg; do 
   inst_version=$(apt-cache policy $pkg \
                            | fgrep Installed: \
                            | cut -d: -f2-); 
   origin=$(apt-cache policy "$pkg" \
                      | fgrep " ***${inst_version}" -C1 \
                      | tail -n 1 \
                      | cut -c12-); 
   echo $pkg $origin; 
 done)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.