Jak uzyskać listę dostępnych (odinstalowanych) pakietów w Debianie?


19

Zasadniczo to, czego szukam, to odpowiednik Debiana:

yum list available

aby pokazać mi, które pakiety są dostępne (choć nie są obecnie zainstalowane). Wolę coś, co można uruchomić z konsoli, ponieważ jest to na zdalnym serwerze. Dzięki.

Odpowiedzi:


7

grep-dctrla jego pochodne stanowią świetny sposób na zapytanie o pliki apt cache. (Możesz zainstalować te narzędzia na Ubuntu za pomocą sudo apt-get install dctrl-tools)

W przypadku dostępnych (ale niekoniecznie zainstalowanych) pakietów możesz użyć grep-available. Na przykład, aby wyświetlić listę wszystkich dostępnych pakietów:

grep-available  -s Package .

Edytować:

aptitude może wyświetlić listę niezainstalowanych pakietów, po prostu uruchamiając ją.

Możesz również uzyskać listę niezainstalowanych pakietów aptitude, używając:

aptitude -F "%p" search "?not(?installed)"

Zauważ, że dzięki nowym pakietom multi-arch otrzymasz pakiety dla innych architektur wymienionych w tym wyniku. Na przykład otrzymuję:

aptitude -F "%p" search "?not(?installed)"  | grep "^bash:"
bash:i386

Mam bashzainstalowany pakiet, ale jest to wersja amd64, ponieważ mój system operacyjny jest instalowany z wersją Ubuntu Precise dla amd64. Jeśli nie chcesz widzieć tych pakietów dla innych architektur, możesz wykluczyć wiersze zawierające ::

aptitude -F "%p" search "?not(?installed)"  | grep -v ':'

Dzięki, ale problem polega na tym, że musiałbym przeszukiwać całą listę paczek dla moich wybranych repozytoriów. Być może lepszym sposobem wizualizacji problemu byłoby: wyobraź sobie, że X jest uniwersalnym zestawem wszystkich pakietów w repozytoriach pakietów Debiana, na który wskazuje mój serwer, a Y jest zestawem pakietów, które zainstalowałem na tym serwerze; w istocie szukam X - Y. Teraz zdaję sobie sprawę, że mogę to zrobić programowo, ale miałem nadzieję, że będzie stosunkowo proste polecenie, aby osiągnąć ten sam wynik w systemie Debian.
— freakwincy,

Właśnie zobaczyłem Twoją zredagowaną odpowiedź. Właśnie tego szukałem! Dzięki.
— freakwincy

PS Poparłem twoją odpowiedź, ale nie zgromadziłem jeszcze wystarczającej liczby punktów reputacji.
— freakwincy

Nie ma problemu. Przy okazji,
— witajcie

16

apt-cache służy do zapytania o pamięć podręczną pakietu:

apt-cache pkgnames | sortować
rzecz wyszukiwania apt-cache
apt-cache search - rzecz tylko-nazwy

dzięki, ale obawiam się, że to nie działa. Porównałem listę wygenerowaną przez pierwsze polecenie z poprzednio wygenerowaną listą zainstalowanych pakietów, które tak wyprowadziłem: code„dpkg --get-selections | grep '[[:::]] install $' | awk '{print $ 1}' > install.txt ”i znaleziono duplikaty. Pozostałe dwa polecenia, które podałeś, nie będą działać, ponieważ nie szukam konkretnego pakietu, a raczej każdego pakietu, który nie jest aktualnie zainstalowany.
— freakwincy,

2

Użyj apt-cachedo tego celu:

apt-cache search package

Ponieważ apt-cacheużywa tylko pamięci podręcznej pakietów w systemie, upewnij się, że ta pamięć podręczna jest aktualna:

apt-get update

Możesz także użyć tego narzędzia, apt-filejeśli znasz nazwę pliku, który chcesz wyszukać; należy to jednak dodać do systemu. Na przykład:

apt-file search somefilename

Zwykle używam apt-cachejednego z następujących sposobów:

apt-cache search package | sort | grep item

(To pokazuje rzeczy, które przedmiot faktycznie w ich streszczenia lub nazw.)

apt-cache search thing | sort | less

(Wyszukuje rzecz, a następnie sortuje ją w celu przyjemnego oglądania less.)


2

Moim punktem widzenia jest praca z domyślnie zainstalowanymi poleceniami i unikanie dodatkowych pakietów, jeśli nie ma żadnego konkretnego powodu.

W moim Debianie z GNU bash te proste polecenia

apt list
apt list --all-versions

daje listę wszystkiego (zainstalowanego i niezainstalowanego). Następnie mogę ograniczyć wyniki z grep „Zainstalowany” lub grep -v „Zainstalowany”. Można go również łączyć z jedną lub kilkoma nazwami pakietów (akceptowane są znaki zastępcze).

Przełącznik „-all-wersje” zapewnia w danych wyjściowych osobne wiersze dla każdej wersji pakietu (stabilny, testowy, niestabilny, eksperymentalny).

Prosta „lista apt” daje tylko jedną wersję (o najwyższym priorytecie).


0

Biorąc ściśle swoje pytanie (chcesz wyświetlić listę niezainstalowanych pakietów), spróbuj użyć

(edytowane zgodnie z komentarzami poniżej)

# apt-get update
# dpkg -l '*' | egrep --invert-match '^i'

Nie jestem jednak pewien dokładnej składni, ponieważ piszę to na oknie systemu Windows i nie ma możliwości sprawdzenia. Może spróbuj zmienić to, na co grep


Wyświetla listę zainstalowanych pakietów, które nie zostały odinstalowane .
— ℝaphink,

@Raphink: Przepraszam, edytowałem post, aby to naprawić
— PPC,

Nie ma problemu, ale nadal nie wyświetlasz pakietów, które nie są zainstalowane. Wykluczając pakiety „ii” (które tak naprawdę nie są tym, co robi twoje wyrażenie, powinieneś '^ii'raczej użyć '[ii]'), brakuje pakietów, które są zainstalowane, ale nie skonfigurowane na przykład (jak iFlub iHna przykład).
— ℝaphink,

@PPC: Niestety, to nie działa, ponieważ dpkg -l wyświetla tylko zainstalowane pakiety, tzn. Wszystkie pakiety są poprzedzone przez „ii”, więc pipowanie wyników do grep przy użyciu flag --invert-match lub -v daje tylko seria myślników, która jest separatorem nagłówka listy. W każdym razie dzięki.
— freakwincy,

@ freakwincy: Racja! Przepraszamy za brak testowania przed wysłaniem (działa w systemie Windows). Według manpage, powinieneś użyć "dpkg -l '*'", aby wyświetlić listę wszystkich pakietów.
— PPC,
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.