(Dichiarazione di non responsabilità: non posso fornire fonti per nulla di tutto ciò, perché non ho mai visto alcuna documentazione che discuti effettivamente di queste cose. Le informazioni da seguire sono semplicemente quelle che sono stato in grado di scoprire attraverso l'ispezione, la sperimentazione di blackbox, a casaccio tentativi ed errori, e pianura vecchio congetture. Inoltre, fair warning, è overexpository al punto di essere troppo sopravvalutato troppo a lungo.)
DNF aggiunge un @ per indicare il repo un installato il pacchetto è stato installato da , nel dnf listcontesto. Come hai notato:
Ho diversi pacchetti sul mio sistema installati dal repository @System, @fedora (tuttavia c'è anche fedora senza il @) e cose come @@ commandline.
Ma in realtà, non vedrai mai qualsiasi pacchetto proveniente dal fedorasul installato lista, come ogni pacchetto ci mostra alcuni @ -repo come la sua fonte. (È possibile verificarlo eseguendo sudo dnf list installede ispezionando; non ci sono repository elencati senza almeno un segno @.) Quando si visualizzano le informazioni di un pacchetto con dnf info, il From repo:campo " " mostrerà quel nome di repository senza il @. (Quindi " From repo: fedora" è assolutamente possibile ed equivale a @fedoranell'elenco installato.)
Ma alcuni repository sono denominati con un @segno nella parte anteriore. Come ha scoperto JohnKoch nelle fonti di hawkey, "@commandline" è definito come "nome repository" per "repository commandline". Quindi, @@commandlinenella dnf listlista indica semplicemente un pacchetto installatoFrom repo: @commandline , un repository a cui è stato confuso un nome che inizia con il proprio @ -sign.
dnf infosu qualsiasi pacchetto installato mostrerà Repository: @System, che è il @repository virtuale con altri nomi. Sembra che @Systemsia il repository virtuale che contiene l'insieme dei pacchetti attualmente installati e @commandlineil repository di origine virtuale da cui proviene un pacchetto, quando non proviene da nessun repository.
Il significato di @commandlinee @System, e la loro relazione reciproca, sembra essere cambiato da quando ho scritto questa risposta per la prima volta. In un certo senso è più coerente e affronta alcune delle mie precedenti obiezioni su come @commandlineviene utilizzato. Non vedo più alcun pacchetto installato elencato come originario @@Systeme le installazioni fuori banda ora verranno mostrate From repo: @commandline( @@commandlinenel contesto dell'elenco). dnf infosu un pacchetto installato fuori banda in genere mostra qualcosa di simile al seguente:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Se faccio un dnf reinstall remi-release(perché il pacchetto è nel remirepository), cambia in:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
Un'altra cosa sui repository di origine: i repository elencati nel From repo:campo sono sempre repository che esistono nel contesto di repository corrente . In altre parole, l'origine dell'installazione di un pacchetto non è semplicemente una stringa contenente il nome del repository; i pacchetti installati sono collegati a all'identità del repository di fornitura così come esiste (o esisteva) nel sistema.
Poiché la maggior parte dei repository sono distro-versionati, vengono ridefiniti con ogni nuova versione di Fedora. (Ad esempio, il " fedora" repository diventa il set di pacchetti che compongono la nuova versione, un repository completamente diverso dal "fedora " esistente nella versione precedente. Quindi, ogni volta che viene eseguito un aggiornamento del sistema, molte vecchie identità repository essere invalidato.
DNF (o hawkey) utilizzato per relegare i pacchetti installati dai repository che non esistono più @commandlinecome repository di origine. Dico "abituato", perché (per fortuna) non è più fatto. I pacchetti installati che provengono da un repository che non esiste più non mostreranno più la loro fonte come @@commandline/ From repo: @commandline. In effetti, dnf infodimostra che non hanno più alcun repository di origine. Ad esempio, sitecopyera un pacchetto Fedora che da allora è stato ritirato. L'ho installato dalle versioni fedorao updatesrepo 7 o 8 fa e l'ho ancora installato:
$ 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
Non è From repo:elencato " ".
Questo significa confusamente che dnf list installedmostrerà quel pacchetto (e altri simili) con @System(uno @) elencato accanto ad esso. Quindi, in un certo senso, abbiamo appena scambiato un'incoerenza con un'altra, poiché quella colonna non è più sempre il repository di origine con @anteposto. Preferisco tuttavia lo stato attuale delle cose.
Le note
- "... quello mostrato ..."
(A volte mostrato. "Pacchetti disponibili" non compariranno necessariamente ad ogni dnf listesecuzione: se la versione installata di un pacchetto è la migliore versione disponibile, è elencata sotto "Pacchetti installati" pertanto sarebbe ridondante elencarlo anche in "Pacchetti disponibili". L'uso
--showduplicatesimporrà una sezione "Pacchetti disponibili" che include tutte le istanze note, indipendentemente dalla versione, installata o scaricabile.)
dnfsia incredibilmente silenziosa al riguardo. Supponiamo che "@" indichi un pacchetto installato, "@@" significa che è installato manualmente da una fonte non repo, forse? Vorrei davvero che qualcuno chiarisse.