Lorsque je veux répertorier les packages installés, je le fais généralement de deux manières.
L'ancienne façon est d'utiliser rpm -qa | grep <whatever I look for>
, et c'est tout.
Mais récemment, je voulais un affichage plus complet de mes packages, et désormais, j'ai utilisé dnf list --installed <whatever I look for>
.
Cependant, en regardant le résultat, il y a quelques choses que je ne comprends pas.
Considérez cet exemple:
# 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
(les espaces dans l'impression réelle sont plus larges)
Ainsi, les entrées résultantes sont: «package» «version» «repo».
Dans mon exemple, c'est:
- paquet: zsh.x86_64
- version: 5.2-5.fc24
- repo: @@ commandline
Jusqu'à présent, le tableau résultant est compréhensible, mais je ne comprends pas ce que les deux «@@» signifient devant le nom du référentiel.
En outre, la "ligne de commande" suggère que le package a été installé à partir de la ligne de commande (téléchargement du RPM, puis exécution dnf install whatever.rpm
dans la ligne de commande , etc.). Cependant, je suis presque sûr d'avoir installé zsh
via dnf install zsh
.
Mais ce n'est pas tout.
J'ai plusieurs packages sur mon système installés à partir du dépôt @System
, @fedora
(mais il y en a aussi fedora
sans @
) et des choses comme @@commandline
.
Alors qu'est - ce que @
ou @@
dire exactement en face du nom de pension?
Et comment se fait-il que j'aie installé autant de packages importants @@commandline
bien que je sois plus que sûr de les avoir installés à partir des dépôts?
la source
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.(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é: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écutantsudo 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 avecdnf info
, leFrom 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 ladnf 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'afficheraRepository: @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ésormaisFrom 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:Si je fais un
dnf reinstall remi-release
(car le package est dans leremi
repo), il se transforme en: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, celadnf 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é dufedora
ouupdates
repo 7 ou 8 il y a des rejets, et ont encore installé: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
(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.)la source