(Isenção de responsabilidade: não posso fornecer fontes para nada disso, porque nunca vi nenhuma documentação que realmente discuta essas coisas. As informações a seguir são meramente as que consegui analisar através de inspeção, experimentação de caixa preta, aleatória de tentativa e erro, e simples conjecturas de idade. Além disso, aviso justo, é overexpository ao ponto de ser waaaay muito tempo.)
DNF adiciona um @ para designar o repo um instalado pacote foi instalado a partir de , no dnf list
contexto. Como você observou:
Eu tenho vários pacotes no meu sistema instalados a partir do repositório @System, @fedora (no entanto, também há o fedora sem o @) e coisas como @@ commandline.
Mas, na realidade, você nunca verá nenhum pacote fedora
na lista de instaladores , pois cada pacote mostra algum @ -repo como sua origem. (Você pode verificar isso executando sudo dnf list installed
e inspecionando; não há repositórios listados sem pelo menos um sinal @.) Quando você visualiza as informações de um pacote dnf info
, o From repo:
campo " " mostrará esse nome de repositório sem o @
. (" From repo: fedora
" Portanto, é absolutamente possível e equivalente a @fedora
na lista instalada.)
Mas alguns repositórios são nomeados com uma @
placa na frente. Como JohnKoch descobriu nas fontes do hawkey, "@commandline" é definido como o "nome do repo" para "o repo da linha de comando". Portanto, @@commandline
na dnf list
lista simplesmente indica um pacote instalado From repo: @commandline
, um repositório que recebeu um nome confuso que começa com seu próprio @ -sign.
dnf info
em qualquer pacote instalado será exibido Repository: @System
, que é o outro @
repositório virtual nomeado. Parece que @System
é o repositório virtual que contém o conjunto de pacotes atualmente instalados e @commandline
o repositório de origem virtual de onde veio um pacote, quando não veio de nenhum repositório.
O significado de @commandline
e @System
, e seu relacionamento um com o outro, parece ter mudado desde que escrevi esta resposta. De certa forma, é mais consistente e aborda algumas das minhas objeções anteriores sobre como @commandline
é usado. Não vejo mais nenhum pacote instalado listado como sendo de @@System
, e as instalações fora da banda serão exibidas agora From repo: @commandline
( @@commandline
no contexto da lista). dnf info
em um pacote instalado fora da banda normalmente mostra algo como o seguinte:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Se eu fizer um dnf reinstall remi-release
(porque o pacote está no remi
repositório), ele muda para:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
Outra coisa sobre repositórios de origem: os repositórios listados no From repo:
campo são sempre repositórios existentes no contexto atual de repositório . Em outras palavras, a fonte de instalação de um pacote não é apenas uma sequência que contém o nome do repo; os pacotes instalados estão vinculados à identidade do repositório de fornecimento como ele existe (ou existia) no sistema.
Como a maioria dos repositórios tem a versão distribuída, eles são redefinidos a cada novo lançamento do Fedora. (Como, por exemplo, o " fedora
" repo se torna o conjunto de pacotes que compõem o novo lançamento, um repo completamente " fedora
" diferente do que existia no release anterior.) Portanto, sempre que uma atualização do sistema é feita, muitas identidades antigas do repo ser invalidado.
DNF (ou hawkey) usado para relegar pacotes instalados a partir de repositórios que não existem mais @commandline
como repositório de origem. Eu digo "costumava", porque isso (felizmente) não é mais feito. Pacotes instalados que vieram de um repositório que não existe mais não mostrarão mais sua origem como @@commandline
/ From repo: @commandline
. De fato, dnf info
mostra que eles não têm mais nenhum repositório de origem. Por exemplo, sitecopy
foi um pacote do Fedora que foi retirado. Eu o instalei a partir das versões 7 ou 8 do orpo, fedora
ou updates
7 e 8, e ainda o tenho 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
Não há " From repo:
" listado.
Isso significa confuso que dnf list installed
mostrará esse pacote (e outros semelhantes) com @System
(um @
) listado ao lado. Portanto, de certa forma, trocamos uma inconsistência por outra, pois essa coluna nem sempre é o repositório de origem com o @
prefixo. Ainda assim, prefiro o estado atual das coisas.
Notas de rodapé
- "... o que é mostrado ..."
(Às vezes mostrado. "Pacotes disponíveis" não são necessariamente exibidos a cada dnf list
execução: se a versão instalada de um pacote for a melhor versão disponível, ela será listada em "Pacotes Instalados" portanto, seria redundante listá-lo também em "Pacotes disponíveis". O uso
--showduplicates
forçará uma seção "Pacotes disponíveis" que inclui todas as instâncias conhecidas, independentemente da versão, instaladas ou disponíveis para download.)
dnf
é incrivelmente silenciosa sobre isso. Suponha que '@' denota um pacote instalado, '@@' significa que ele é instalado manualmente a partir de uma fonte que não é de repositório, talvez? Eu realmente gostaria que alguém esclarecesse.