(Avertissement: je ne peux pas fournir de sources pour tout cela, parce que je n'ai jamais vu de documentation qui traite réellement de ces choses. essais et erreurs, et conjectures simples. En outre, juste avertissement, c'est surexpositif au point d'être waaaay trop long.)
DNF ajoute un @ pour désigner le repo un installé paquet a été installé à partir , dans le dnf list
contexte. Comme vous l'avez noté:
J'ai plusieurs packages sur mon système installés à partir du référentiel @System, @fedora (mais il y a aussi Fedora sans @) et des choses comme @@ commandline.
Mais en réalité, vous ne verrez jamais de paquet provenant de fedora
la liste installée , car chaque paquet montre la source de @ -repo. (Vous pouvez le vérifier en exécutant sudo dnf list installed
et en inspectant; aucun référentiel n'est répertorié sans au moins un signe @.) Lorsque vous affichez les informations d'un package avec dnf info
, le From repo:
champ " " affiche ce nom de référentiel sans le @
. (" From repo: fedora
" Est donc tout à fait possible, et équivalent à @fedora
la liste installée.)
Mais certains repos sont nommés avec un @
signe à l'avant. Comme JohnKoch l'a découvert dans les sources hawkey, "@commandline" est défini comme le "nom du dépôt" pour "le dépôt en ligne de commande". Ainsi, @@commandline
dans la dnf list
liste indique simplement un paquet installé From repo: @commandline
, un dépôt qui a été confus donné un nom qui commence par son propre @ -sign.
dnf info
sur n'importe quel package installé s'affichera Repository: @System
, qui est l'autre @
référentiel virtuel. Il semble que ce @System
soit le référentiel virtuel qui contient l'ensemble des packages actuellement installés, et @commandline
le référentiel source virtuel d'où provient un package, alors qu'il ne provenait d'aucun référentiel.
Le sens de @commandline
et @System
, et leur relation les uns avec les autres, semble avoir changé depuis que j'ai écrit cette réponse pour la première fois. À certains égards, il est plus cohérent et répond à certaines de mes objections précédentes sur la façon dont il @commandline
est utilisé. Je ne vois plus aucun package installé répertorié comme provenant de @@System
, et les installations hors bande s'affichent désormais From repo: @commandline
( @@commandline
dans le contexte de la liste). dnf info
sur un package installé hors bande affiche généralement quelque chose comme ceci:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Si je fais un dnf reinstall remi-release
(car le package est dans le remi
repo), il se transforme en:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
Une autre chose à propos des référentiels source: les référentiels répertoriés dans le From repo:
champ sont toujours des référentiels qui existent dans le contexte de référentiel actuel . En d'autres termes, la source d'installation d'un package n'est pas simplement une chaîne contenant le nom du référentiel; les packages installés sont liés à l' identité du référentiel fournisseur tel qu'il existe (ou existait) dans le système.
Étant donné que la plupart des référentiels sont distribués en versions, ils sont redéfinis à chaque nouvelle version de Fedora. (Comme par exemple le fedora
repo " " devient l'ensemble des packages qui composent la nouvelle version, un repo complètement différent du " fedora
" qui existait sous la version précédente.) Ainsi, chaque fois qu'une mise à niveau du système est effectuée, beaucoup d'anciennes identités de repo être invalidé.
DNF (ou hawkey) utilisé pour reléguer les packages installés à partir de référentiels qui n'existent plus @commandline
comme référentiel source. Je dis «l'habitude», car cela n'est (heureusement) plus fait. Les packages installés provenant d'un dépôt qui n'existe plus ne montreront plus leur source sous @@commandline
/ From repo: @commandline
. En fait, cela dnf info
montre qu'ils n'ont plus de repo source. Par exemple, sitecopy
était un package Fedora qui a depuis été retiré. Je l' ai installé du fedora
ou updates
repo 7 ou 8 il y a des rejets, et ont encore installé:
$ 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
Il n'y a pas de " From repo:
" répertorié.
Cela signifie de manière confuse que dnf list installed
cela montrera ce paquet (et d'autres comme ça) avec @System
(un @
) listé à côté de lui. Donc, dans un sens, nous venons d'échanger une incohérence pour une autre, car cette colonne n'est plus toujours le dépôt source avec @
pré-ajouté. Pourtant, je préfère l'état actuel des choses.
Notes de bas de page
- "... celui qui est affiché ..."
(Parfois affiché. "Packages disponibles" n'apparaîtra pas nécessairement à chaque dnf list
exécution: si la version installée d'un package est la meilleure version disponible, elle est répertoriée sous "Packages installés" il serait donc redondant de le répertorier également sous "Packages disponibles". L'utilisation
--showduplicates
forcera une section "Packages disponibles" qui comprend toutes les instances connues, quelle que soit la version, qu'elles soient installées ou téléchargeables.)
dnf
soit incroyablement silencieuse à ce sujet. Supposons que «@» désigne un package installé, «@@» signifie-t-il alors qu'il est installé manuellement à partir d'une source non repo, peut-être? J'aimerais vraiment que quelqu'un clarifie.