Wenn ich installierte Pakete auflisten möchte, mache ich das normalerweise auf zwei Arten.
Die altmodische Art verwendet rpm -qa | grep <whatever I look for>
, und das ist es.
Aber vor kurzem wollte ich eine umfassendere Darstellung meiner Pakete, und von nun an habe ich verwendet dnf list --installed <whatever I look for>
.
Wenn ich mir das Ergebnis anschaue, gibt es jedoch einige Dinge, die ich nicht verstehe.
Betrachten Sie dieses Beispiel:
# dnf list --installed zsh
Last metadata expiration check: 0:13:25 ago on Mon Jul 11 05:48:04 2016.
Installed Packages
zsh.x86_64 5.2-5.fc24 @@commandline
(Leerzeichen im tatsächlichen Ausdruck sind breiter)
Die resultierenden Einträge sind also: «Paket» «Version» «Repo».
In meinem Beispiel ist das:
- Paket: zsh.x86_64
- Version: 5.2-5.fc24
- Repo: @@ Kommandozeile
Bisher ist die resultierende Tabelle verständlich, aber ich bin verwirrt, was die beiden "@@" vor dem Repo-Namen bedeuten.
Außerdem bedeutet "Befehlszeile", dass das Paket über die Befehlszeile installiert wurde (Herunterladen des RPM und anschließende Ausführung dnf install whatever.rpm
in der Befehlszeile usw.). Ich bin mir jedoch ziemlich sicher, dass ich zsh
über installiert habe dnf install zsh
.
Aber das ist nicht alles.
Ich habe mehrere Pakete auf meinem System aus dem Repo installiert @System
, @fedora
(allerdings gibt es auch fedora
ohne das @
) und solche Sachen @@commandline
.
Also , was bedeutet , dass @
oder @@
genau vor dem Repo - Namen bedeuten?
Und warum habe ich so viele prominente Pakete installiert, @@commandline
obwohl ich mehr als sicher bin, dass ich sie von den Repos installiert habe?
quelle
dnf
darüber unglaublich still ist. Angenommen, '@' bezeichnet ein installiertes Paket. Bedeutet '@@' dann, dass es möglicherweise manuell von einer Nicht-Repo-Quelle installiert wird? Ich würde mir wirklich wünschen, jemand würde das klarstellen.(Haftungsausschluss: Ich kann keine Quellen dafür bereitstellen, da ich noch nie eine Dokumentation gesehen habe, in der diese Dinge tatsächlich besprochen werden. Die folgenden Informationen sind lediglich das, was ich durch Inspektion, Blackbox-Experimente und Zufall herausfinden konnte Versuch und Irrtum und einfache alte Vermutungen. Außerdem, faire Warnung, ist es überbelagert, bis es zu lange dauert .)
DNF fügt ein @ den Repo ein bezeichnen installierte Paket installiert wurde aus , in
dnf list
Zusammenhang. Wie Sie bemerkt haben:In Wirklichkeit wird jedoch niemals ein Paket
fedora
auf der installierten Liste angezeigt, da jedes Paket dort ein @ -repo als Quelle anzeigt. (Sie können dies durch Ausführensudo dnf list installed
und Überprüfen überprüfen . Es sind keine Repos ohne mindestens ein @ -Zeichen aufgeführt.) Wenn Sie die Informationen eines Pakets mit anzeigendnf info
, wird imFrom repo:
Feld " " dieser Reponame ohne das angezeigt@
. (Also "From repo: fedora
" ist absolut möglich und entspricht@fedora
der installierten Liste.)Aber einige repos sind benannt mit einem
@
Schild an der Vorderseite. Wie JohnKoch in den Hawkey-Quellen feststellte, ist "@commandline" als "Repo-Name" für "das Kommandozeilen-Repo" definiert. Also,@@commandline
in derdnf list
lediglich die Auflistung zeigt ein installiertes PaketFrom repo: @commandline
, ein Repo , die zum Verwechseln einen Namen an , beginnt mit seinem eigenen gegeben wurden @ -Zeichen.dnf info
Auf jedem installierten Paket wird angezeigtRepository: @System
, welches das andere@
benannte virtuelle Repo ist. Es scheint, dass dies@System
das virtuelle Repo ist, das die aktuell installierten Pakete enthält, und@commandline
das virtuelle Quell-Repo, von dem ein Paket stammt, wenn es nicht von einem Repo stammt.Die Bedeutung von
@commandline
und@System
und ihre Beziehung zueinander scheinen sich geändert zu haben, seit ich diese Antwort zum ersten Mal geschrieben habe. In gewisser Weise ist es konsistenter und geht auf einige meiner früheren Einwände gegen die@commandline
Verwendung ein. Ich sehe keine installierten Pakete mehr als von@@System
, und Out-of-Band-Installationen werden tatsächlich jetzt angezeigtFrom repo: @commandline
(@@commandline
im Listenkontext).dnf info
Auf einem außerhalb des Band installierten Pakets wird normalerweise Folgendes angezeigt:Wenn ich ein tun
dnf reinstall remi-release
(weil das Paket ist in derremi
Repo - Geschäfte), ändert sich an:Eine andere Sache über Quell-Repos: Die im
From repo:
Feld aufgelisteten Repos sind immer Repos, die im aktuellen Repo-Kontext existieren . Mit anderen Worten, die Installationsquelle eines Pakets ist nicht nur eine Zeichenfolge, die den Reponamen enthält. Installierte Pakete sind mit der Identität des bereitstellenden Repos verknüpft, wie es im System vorhanden ist (oder vorhanden war).Da die meisten Repos eine Distributionsversion haben, werden sie mit jeder neuen Fedora-Version neu definiert. (Zum Beispiel wird das "
fedora
" Repo zu einem Satz von Paketen, aus denen die neue Version besteht, ein völlig anderes Repo als das "fedora
", das in der vorherigen Version vorhanden war.) Wenn also ein System-Upgrade durchgeführt wird, viele alte Repo-Identitäten ungültig gemacht werden.DNF (oder Hawkey) wird verwendet, um Pakete zu verweisen, die von Repos installiert wurden, die nicht mehr
@commandline
als Quell-Repo vorhanden sind. Ich sage "gewohnt", weil das (zum Glück) nicht mehr gemacht wird. Installierte Pakete, die von einem nicht mehr vorhandenen Repo stammen, zeigen ihre Quelle nicht mehr als@@commandline
/ anFrom repo: @commandline
. In der Tatdnf info
zeigt , dass sie nicht mehr jede Quelle Repo. Zum Beispielsitecopy
war ein Fedora-Paket, das seitdem in den Ruhestand gegangen ist. Ich habe es vor 7 oder 8 Releases vonfedora
oderupdates
repo installiert und habe es immer noch installiert:Es ist kein "
From repo:
" aufgeführt.Dies bedeutet zum Verwechseln dass
dnf list installed
zeigen , dass die Verpackung (und andere wie es) mit@System
(einer@
) aufgeführt daneben. In gewissem Sinne haben wir nur eine Inkonsistenz gegen eine andere ausgetauscht, da diese Spalte nicht mehr immer das Quell-Repo mit@
vorangestelltem ist. Trotzdem bevorzuge ich den aktuellen Stand der Dinge.Fußnoten
(Manchmal angezeigt. "Verfügbare Pakete" werden nicht unbedingt bei jedem
dnf list
Lauf angezeigt : Wenn die installierte Version eines Pakets die beste verfügbare Version ist, wird sie unter "Installierte Pakete" aufgeführt. Daher wäre es überflüssig, es auch unter "Verfügbare Pakete" aufzulisten. Wenn Sie "verwenden,--showduplicates
wird ein Abschnitt" Verfügbare Pakete "erzwungen, der alle bekannten Instanzen enthält, unabhängig von der Version, ob installiert oder herunterladbar.)quelle