Korzystając z aptitude, aby wyszukać zainstalowane pakiety poza stabilną gałęzią, możesz użyć:
aptitude search "?narrow(?installed,?not(?archive(stable)))"
Aby zobaczyć wersje, a także nazwy pakietów (i zamiast opisów), możesz użyć polecenia z opcją formatowania ( -F
w skrócie) w następujący sposób.
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
Więcej formatów można znaleźć na stronie podręcznika (tutaj jest dokumentacja z dostępnymi opcjami ).
Działa to na przykład w Debianie, jeśli zainstalowałeś pakiety poza Squeeze (na przykład przez uruchomienie apt-get install -t sid package-name
.
Możesz sprawdzić, skąd pochodzi zainstalowany pakiet apt-cache policy
, użycie jest następujące:
apt-cache policy <package-name>
Na przykład mój pakiet python-numpy renderuje następujące dane wyjściowe:
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages
Oznacza to, że jestem jedną wersją za obecną gałęzią sid / main, więc mam zainstalowaną wersję starszego sida. Widzę, że nie mam stabilnego, ponieważ jest jeszcze 1.4.1-5
i jestem obecnie na 1.6.2-1
.
W chwili przesłania pakiet ten był już zaktualizowany:)
?any-version()
, ponieważ~narrow(pat1, pat2)
jest taki sam?any-version(pat1 pat2)
i obsługuje?any-version(pat1 pat2 pat3)
bez wyglądania głupio.Po przeczytaniu strony informacyjnej o umiejętnościach i kilkunastu próbach w końcu otrzymałem:
lub odpowiednik) :
Przeszukuje pakiety zainstalowane z niestabilnych archiwów dowolnego repozytorium. Musisz odfiltrować pakiety z domyślnego archiwum (testowanie w powyższym przykładzie).
Jeśli chcesz filtrować pakiety zainstalowane z www.debian-multimedia.org/unstable:
Edycja: „Archiwum”, „pochodzenie” itp. Są odejmowane z
Release
pliku repozytorium. Niestety nie wszystkie narzędzia mogą patrzeć na wszystkie te linie i używają dla nich innej składni. Możesz znaleźć te pliki jako/var/lib/apt/lists/*Release
. Lub po prostu wpisz,apt-cache policy
aby uzyskać przegląd. apt-cache zmienił format wyjściowy: nowsze wersje używają stylu apt_preferences.Suite:
lubArchive:
(stara nazwa!)?archive(___)
lub~A___
%t
release a=___
natty-backports
,trusty-security
,stable
Origin:
?origin(___)
lub~O___
release o=___
Canonical
,Google, Inc.
,LP-PPA-dockbar-main
,Ubuntu
źródło
Sprawdź znacznik pochodzenia (taki jak o = Debian ) dla każdego z twoich bieżących repozytoriów:
Następnie wyszukaj paczki z określonego źródła (lub nie z niego):
To nie nadaje się do kontroli bezpieczeństwa, ponieważ opiera się na każdego repozytorium, aby zapewnić własne informacje o pochodzeniu, ale może to być pomocne w rozwiązywaniu problemów pochodzenie pakietów, które są obecne w wielu repozytoriach.
źródło
aptitude search
wzory nie są dobre. - Wybierają tak, jak ta „lista pakietów, na której zainstalowana jest jedna wersja, a każda inna wersja istnieje w Debianie” lub „jakaś wersja zainstalowana, i co najmniej jedna wersja tego pakietu dostępna na non-Debian”. - Szukamy „zainstalowanej wersji pochodzi z Debiana (lub nie)”. Należy to zrobić za pomocą?narrow()
lub?any-version()
.nemo-fileroller
zlinuxmint
, ale też istniejeDebian
. Tak więc pojawia się na liście, ponieważ jest zainstalowany i istnieje gdzieś w Debianie.Dla kompletności: w systemach Ubuntu możesz również użyć Synaptic do tego zadania. W lewej kolumnie możesz filtrować paczki według ich pochodzenia.
źródło
Znalazłem to:
Możesz również znaleźć listę wyszukiwanych haseł obsługiwanych przez „wyszukiwanie umiejętności” tutaj .
źródło
sudo
? Wydaje mi się, że działa to również bez uruchamiania go jako root.Najpierw znajdź odpowiedni plik (i) dla interesującego repozytorium w / var / lib / apt / list. Powinno być możliwe zrobienie tego programowo, ale nie musiałem tego robić.
Korzystając z Google Chrome jako przykładu, spróbuj tego:
i otrzymuję wynik:
dpkg -s zwraca 0, jeśli pakiet jest zainstalowany, a niezerowe w przeciwnym razie. Do celów odniesienia w przyszłości wynik
było
źródło
Pozostałe odpowiedzi są w rzeczywistości niepoprawne, ponieważ parametr to
?archive()
jest wyrażeniem regularnym. Więc?archive(stable)
pasuje zarówno do, jakstable
i dounstable
. Aby wykluczyćstable
, musisz zakotwiczyć wzór wyrażenia regularnego:Aby wykluczyć wiele repozytoriów:
Należy również pamiętać, że niektóre pakiety należą do wielu repozytoriów, np
xenial-security,xenial-updates
.?archive()
ocenia wzorzec wyrażenia regularnego dla każdego repozytorium indywidualnie, więc?archive("^xenial-updates$")
dopasuje wszystkie pakiety należące doxenial-updates
, nawet jeśli należą one również do innych repozytoriów.źródło