(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:
Ich habe mehrere Pakete auf meinem System vom Repo @System, @fedora (es gibt jedoch auch Fedora ohne das @) und Dinge wie @@ Befehlszeile installiert.
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ühren sudo 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 anzeigen dnf info
, wird im From 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 der dnf list
lediglich die Auflistung zeigt ein installiertes Paket From repo: @commandline
, ein Repo , die zum Verwechseln einen Namen an , beginnt mit seinem eigenen gegeben wurden @ -Zeichen.
dnf info
Auf jedem installierten Paket wird angezeigt Repository: @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 angezeigt From repo: @commandline
( @@commandline
im Listenkontext). dnf info
Auf einem außerhalb des Band installierten Pakets wird normalerweise Folgendes angezeigt:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Wenn ich ein tun dnf reinstall remi-release
(weil das Paket ist in der remi
Repo - Geschäfte), ändert sich an:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
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
/ an From repo: @commandline
. In der Tat dnf info
zeigt , dass sie nicht mehr jede Quelle Repo. Zum Beispiel sitecopy
war ein Fedora-Paket, das seitdem in den Ruhestand gegangen ist. Ich habe es vor 7 oder 8 Releases von fedora
oder updates
repo installiert und habe es immer noch installiert:
$ dnf info sitecopy
Installed Packages
Name : sitecopy
Version : 0.16.6
Release : 14.fc22
Architecture : x86_64
Size : 373 k
Source : sitecopy-0.16.6-14.fc22.src.rpm
Repository : @System
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
- "... die angezeigte ..."
(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.)
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.