(Descargo de responsabilidad: no puedo proporcionar fuentes para nada de esto, porque nunca he visto ninguna documentación que realmente discuta estas cosas. La información a seguir es simplemente lo que he podido averiguar a través de la inspección, la experimentación de blackbox, al azar prueba y error, y simples conjeturas antiguas. Además, una advertencia justa, es sobreexpositoria hasta el punto de ser muuuuucho demasiado tiempo).
DNF añade un @ para denotar la cesión temporal de un instalado el paquete se instaló a partir , en el dnf list
contexto. Como notaste:
Tengo varios paquetes en mi sistema instalados desde el repositorio @System, @fedora (sin embargo, también hay fedora sin @) y cosas como @@ línea de comando.
Pero en realidad, nunca verá ningún paquete proveniente de fedora
la lista instalada , ya que cada paquete muestra algunos @ -repo como su fuente. (Puede verificarlo ejecutando sudo dnf list installed
e inspeccionando; no hay repositorios listados sin al menos un signo @). Cuando vea la información de un paquete con dnf info
, el From repo:
campo " " mostrará ese nombre de repositorio sin el @
. (Entonces " From repo: fedora
" es absolutamente posible, y equivalente a @fedora
en la lista instalada).
Pero algunos repos se nombran con un @
signo en el frente. Como JohnKoch descubrió en las fuentes de Hawkey, "@commandline" se define como el "nombre del repositorio" para "el repositorio de la línea de comandos". Entonces, @@commandline
en el dnf list
listado simplemente indica un paquete instalado From repo: @commandline
, un repositorio que confusamente recibió un nombre que comienza con su propio @ -sign.
dnf info
en cualquier paquete instalado se mostrará Repository: @System
, que es el @
repositorio virtual con otro nombre. Parece que @System
es el repositorio virtual que contiene el conjunto de paquetes instalados actualmente, y @commandline
el repositorio de origen virtual de donde vino un paquete, cuando no provenía de ningún repositorio.
El significado de @commandline
y @System
, y su relación entre ellos, parece haber cambiado desde la primera vez que escribí esta respuesta. De alguna manera es más consistente y aborda algunas de mis objeciones anteriores sobre cómo @commandline
se usa. Ya no veo ningún paquete instalado listado como de origen @@System
, y las instalaciones fuera de banda ahora se mostrarán From repo: @commandline
( @@commandline
en el contexto de la lista). dnf info
en un paquete instalado fuera de banda generalmente muestra algo como lo siguiente:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Si hago un dnf reinstall remi-release
(porque el paquete está en el remi
repositorio), cambia a:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
Otra cosa sobre los repositorios de origen: los repositorios enumerados en el From repo:
campo siempre son repositorios que existen en el contexto de repositorio actual . En otras palabras, la fuente de instalación de un paquete no es simplemente una cadena que contiene el nombre del repositorio; los paquetes instalados están vinculados a la identidad del repositorio proveedor tal como existe (o existió) en el sistema.
Como la mayoría de los repos están versionados en distro, se redefinen con cada nueva versión de Fedora. (Por ejemplo, el " fedora
" repositorio se convierte en el conjunto de paquetes que componen la nueva versión, un repositorio completamente diferente del " fedora
" que existía en la versión anterior). Entonces, cada vez que se realiza una actualización del sistema, muchas identidades de repositorio antiguas ser invalidado
DNF (o hawkey) utilizado para relegar paquetes instalados desde repos que ya no existen @commandline
como repositorio de origen. Digo "solía", porque eso (afortunadamente) ya no se hace. Los paquetes instalados que provienen de un repositorio que ya no existe ya no mostrarán su fuente como @@commandline
/ From repo: @commandline
. De hecho, dnf info
muestra que ya no tienen ningún repositorio fuente. Por ejemplo, sitecopy
fue un paquete de Fedora que desde entonces ha sido retirado. Lo instalé desde las versiones fedora
o updates
repo 7 u 8, y todavía lo tengo instalado:
$ 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
No hay " From repo:
" en la lista.
Esto significa de manera confusa que dnf list installed
mostrará ese paquete (y otros similares) con @System
(uno @
) al lado. Entonces, en cierto sentido, solo hemos cambiado una inconsistencia por otra, ya que esa columna ya no es siempre el repositorio de origen con @
antepuesto. Aún así, prefiero el estado actual de las cosas.
Notas al pie
- "... el que se muestra ..."
(a veces se muestra. "Los paquetes disponibles" no se mostrarán necesariamente en cada dnf list
ejecución: si la versión instalada de un paquete es la mejor versión disponible, aparece en "Paquetes instalados" sería redundante incluirlo también en "Paquetes disponibles". El uso
--showduplicates
forzará una sección de "Paquetes disponibles" que incluye todas las instancias conocidas, independientemente de la versión, ya sea instalada o descargable).
dnf
es increíblemente silenciosa sobre esto. Supongamos que '@' denota un paquete instalado, ¿significa '@@' que significa que se instaló manualmente desde una fuente que no sea repositorio, tal vez? Realmente desearía que alguien lo aclarara.