(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 list
contesto. 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 fedora
sul installato lista, come ogni pacchetto ci mostra alcuni @ -repo come la sua fonte. (È possibile verificarlo eseguendo sudo dnf list installed
e 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 @fedora
nell'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, @@commandline
nella dnf list
lista indica semplicemente un pacchetto installatoFrom repo: @commandline
, un repository a cui è stato confuso un nome che inizia con il proprio @ -sign.
dnf info
su qualsiasi pacchetto installato mostrerà Repository: @System
, che è il @
repository virtuale con altri nomi. Sembra che @System
sia il repository virtuale che contiene l'insieme dei pacchetti attualmente installati e @commandline
il repository di origine virtuale da cui proviene un pacchetto, quando non proviene da nessun repository.
Il significato di @commandline
e @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 @commandline
viene utilizzato. Non vedo più alcun pacchetto installato elencato come originario @@System
e le installazioni fuori banda ora verranno mostrate From repo: @commandline
( @@commandline
nel contesto dell'elenco). dnf info
su 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 remi
repository), 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ù @commandline
come 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 info
dimostra che non hanno più alcun repository di origine. Ad esempio, sitecopy
era un pacchetto Fedora che da allora è stato ritirato. L'ho installato dalle versioni fedora
o updates
repo 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 installed
mostrerà 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 list
esecuzione: 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
--showduplicates
imporrà una sezione "Pacchetti disponibili" che include tutte le istanze note, indipendentemente dalla versione, installata o scaricabile.)
dnf
sia 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.