Mit aptitude können Sie nach installierten Paketen außerhalb des Stable-Zweigs suchen:
aptitude search "?narrow(?installed,?not(?archive(stable)))"
Um Versionen sowie Paketnamen (und anstelle von Beschreibungen) anzuzeigen, können Sie den Befehl mit der Formatoption ( -F
kurz) wie folgt verwenden.
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
Weitere Formate finden Sie in der Manpage (Dokumentation mit verfügbaren Optionen ).
Das funktioniert zum Beispiel in Debian, wenn Sie Pakete außerhalb von Squeeze installiert haben (zum Beispiel durch Ausführen von apt-get install -t sid package-name
.
Sie können nachsehen, woher ein installiertes Paket stammt apt-cache policy
. Die Verwendung ist wie folgt:
apt-cache policy <package-name>
Beispielsweise gibt mein Paket python-numpy die folgende Ausgabe aus:
$ 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
Das bedeutet, dass ich eine Version hinter dem aktuellen sid / main-Zweig bin, also habe ich eine alte Sid-Version installiert. Ich sehe, ich habe noch keinen Stall, weil er noch ist 1.4.1-5
, und ich bin gerade bei 1.6.2-1
.
Zum Zeitpunkt der Einreichung wurde dieses Paket bereits aktualisiert:)
?any-version()
, weil~narrow(pat1, pat2)
es genauso ist?any-version(pat1 pat2)
und es unterstützt,?any-version(pat1 pat2 pat3)
ohne dumm auszusehen.Nachdem ich die Infoseite von aptitude und ein Dutzend Versuche gelesen hatte, bekam ich endlich Folgendes:
oder gleichwertig) :
Es wird Paketen suchen aus instabilen Archiven der installierten beliebigen Repository. Sie müssen Pakete aus Ihrem Standardarchiv herausfiltern (Test in obigem Beispiel).
Wenn Sie Pakete filtern möchten, die von www.debian-multimedia.org/unstable installiert wurden:
Bearbeiten: "Archiv", "Herkunft" usw. werden von der
Release
Datei des Repository abgezogen . Leider können nicht alle Tools alle diese Zeilen anzeigen und verwenden für sie unterschiedliche Syntax. Sie finden diese Dateien als/var/lib/apt/lists/*Release
. Oder tippen Sie einfachapt-cache policy
, um sich einen Überblick zu verschaffen. apt-cache hat das Ausgabeformat geändert: In späteren Versionen wird der Stil apt_preferences verwendet.Suite:
oderArchive:
(alter Name!)?archive(___)
oder~A___
%t
release a=___
natty-backports
,trusty-security
,stable
Origin:
?origin(___)
oder~O___
release o=___
Canonical
,Google, Inc.
,LP-PPA-dockbar-main
,Ubuntu
quelle
Untersuchen Sie das Origin-Tag (wie z. B. o = Debian ) für jedes Ihrer aktuellen Repositorys:
Dann suchen Sie nach Paketen von (oder nicht von) einem bestimmten Ursprung:
Dies ist für eine Sicherheitsüberprüfung nicht geeignet, da jedes Repository seine eigenen Herkunftsinformationen bereitstellt. Es kann jedoch hilfreich sein, um die Herkunft von Paketen zu ermitteln, die in mehreren Repositorys vorhanden sind.
quelle
aptitude search
Muster sind nicht gut. - Sie wählen wie folgt "Pakete auflisten, bei denen eine Version installiert ist und eine andere Version in Debian vorhanden ist" oder "eine installierte Version und mindestens eine Version dieses Pakets, die auf Nicht-Debian verfügbar ist". - Was wir suchen, ist "die installierte Version ist von Debian (oder nicht)". Dies muss mit?narrow()
oder geschehen?any-version()
.nemo-fileroller
auslinuxmint
, aber es existiert inDebian
auch. Also erscheint es in der Liste, weil es irgendwo von Debian installiert ist und existiert.Der Vollständigkeit halber: Auf Ubuntu-Systemen können Sie Synaptic auch für diese Aufgabe verwenden. In der linken Spalte können Sie Pakete nach ihrer Herkunft filtern.
quelle
Ich habe folgendes gefunden:
Hier finden Sie auch eine Liste der Suchbegriffe, die von "aptitude search" unterstützt werden .
quelle
sudo
? Es scheint mir, dass dies auch funktioniert, ohne es als root auszuführen.Suchen Sie zuerst in / var / lib / apt / lists die entsprechende (n) Datei (en) für das Repository von Interesse. Es sollte möglich sein, dies programmatisch zu tun, aber ich musste es nicht tun.
Versuchen Sie es am Beispiel von Google Chrome:
und ich bekomme die Ausgabe:
dpkg -s gibt 0 zurück, wenn das Paket installiert ist, andernfalls ungleich Null. Für zukünftige Referenzzwecke wird die Ausgabe von
war
quelle
Die anderen Antworten sind tatsächlich falsch, da der Parameter to
?archive()
ein regulärer Ausdruck ist. Also?archive(stable)
passt beidesstable
undunstable
. Um nur auszuschließenstable
, müssen Sie das Regex-Muster verankern:So schließen Sie mehrere Repositorys aus:
Beachten Sie auch, dass einige Pakete zu mehreren Repositorys gehören, z
xenial-security,xenial-updates
.?archive()
wertet das Regex-Muster für jedes Repository einzeln aus, sodass?archive("^xenial-updates$")
es mit allen Paketen übereinstimmt, die zu gehörenxenial-updates
, auch wenn es zu anderen Repositorys gehört.quelle