(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 listcontexto. 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 fedorana lista de instaladores , pois cada pacote mostra algum @ -repo como sua origem. (Você pode verificar isso executando sudo dnf list installede 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 @fedorana 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, @@commandlinena dnf listlista 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 infoem 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 @commandlineo repositório de origem virtual de onde veio um pacote, quando não veio de nenhum repositório.
O significado de @commandlinee @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( @@commandlineno contexto da lista). dnf infoem 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 remirepositó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 @commandlinecomo 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 infomostra que eles não têm mais nenhum repositório de origem. Por exemplo, sitecopyfoi um pacote do Fedora que foi retirado. Eu o instalei a partir das versões 7 ou 8 do orpo, fedoraou updates7 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 installedmostrará 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 listexecuçã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
--showduplicatesforç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.