Como descubro de qual repositório um pacote vem?

147

Existe um método ou comando que pode dizer de qual repositório um pacote é proveniente?

dfme
fonte
11
Isso é ambíguo. Você quer dizer: quais repositórios ativados no momento fornecem um pacote com o nome determinado ou: qual repositório foi usado para instalar o pacote com o nome que está atualmente instalado? (Ambos são úteis Eu estou olhando para o último, não o primeiro..)
Reinier pós

Respostas:

112

Comandos necessários:

  • dpkg -s <package>- permite encontrar a versão que você instalou. ( fonte )
  • apt-cache showpkg <package>- mostrará uma lista de versões do pacote disponível. Para cada versão, a fonte do pacote, na forma de um nome de arquivo de índice, será fornecida.

Se você deseja encontrar a fonte do pacote que está atualmente instalado, precisará da saída de dpkg -s <package>. Caso contrário, você pode simplesmente olhar para a versão mais recente produzida por apt-cache showpkg <package>.

Exemplo:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Desde o primeiro comando, posso ver que a versão 1.6.2-1ubuntu6 do Liferea está instalada. No segundo comando, posso ver que essa versão está listada /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Sem muito esforço, posso deduzir que a linha de origem contém archive.ubuntu.com, ubuntu, lucid, e main.

E, com certeza, my /etc/apt/sources.listcontém a seguinte linha.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Michael Crenshaw
fonte
mac, obrigado pela sua resposta detalhada! Infelizmente, isso não me ajuda com o problema inicial de um problema de dependência não atendida :-( Estou tentando instalar a libqt4-opengl e diz: Os seguintes pacotes têm dependências não atendidas: libqt4-opengl: Depends: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) mas 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 deve ser instalado Depende: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) mas 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 deve ser instalado
dfme
É difícil ver com isso exatamente qual é o problema. Você deve abrir uma nova pergunta para poder fornecer detalhes completos. Se o fizer, deixe um link em um comentário. :-)
Michael Crenshaw
4
apt-cache policy <package name>(from: superuser.com/a/236605/37279 )
franzlorenzon
O apt-cache {showpkg, policy} realmente mostra de onde um pacote instalado foi instalado ou apenas de onde seria instalado no momento em que é consultado?
Croad Langshan
11
O último. Se eu geralmente uso trustyfontes de pacotes do Ubuntu , adiciono temporariamente utopicao meu sources.listpara instalar a versão 1.20ubuntu3 do init-system-helperse, em seguida, removo o repositório novamente do meu sources.list, apt-cache showpkg init-system-helpersapenas mentiremos sobre a lista de pacotes originais e apt-cache policy init-system-helpersdeclararemos o óbvio.
precisa saber é o seguinte
104

Use o seguinte comando. Tem melhor saída:

apt-cache policy <Package Name>

Para o Ubuntu 16.04 e posterior, há uma maneira mais curta de fazer isso:

apt policy <Package Name>
Sub
fonte
11
Essa é a resposta correta! Os comandos na resposta por mac9416 precisam de interpretação tediosa + suposição com base em sua saída. Para obter mais informações sobre, apt-cache policyconsulte também superuser.com/a/236605/61370
pabouk
3
apt-cache policyé bom, mas algumas vezes você precisa apt-cache showpkgcomparar as somas MD5 do pacote. Veja tambémdebsums --changed
gavenkoa
esta policyopção é a mais útil ao comparar comsources.list
infinite-etcetera
Essa deve ser a resposta aceita! @pabouk está certo. Essa resposta é mais relevante para a pergunta do que a atualmente aceita.
HEXcube
Como @ pablo-bianchi apontou em sua resposta , um apt policy <package-name>método ainda mais simples pode ser usado, a partir das 16.04LTS. Depois que o 14.04LTS se tornar EOL em 2018, essa resposta talvez seja editada para usar o comando mais recente.
HEXcube # 23/17
9

apt no Ubuntu 16.04+

Ao lado apt-cache policy, showpkge showagora temos subcomandos mais simples e fáceis de lembrar: apt(não confunda com clássico apt-*):

apt policy <package> 

Ou a alternativa com mais informações apt show <package>, linha começando com "APT-Sources:" .

Descrição: Este pacote fornece ferramentas de linha de comando para pesquisar e gerenciar, além de consultar informações sobre pacotes como acesso de baixo nível a todos os recursos da biblioteca libapt-pkg. Estes incluem: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Comandos básicos de apt --help

Outros subcomandos também fáceis de lembrar:

  • apt list - listar pacotes com base nos nomes dos pacotes
  • apt search - procure nas descrições dos pacotes
  • apt show - mostrar detalhes do pacote
  • apt update - atualizar lista de pacotes disponíveis
  • apt install - instalar pacotes
  • apt remove - remover pacotes
  • apt purge- remova pacotes e arquivos de configuração :

    A remoção de um pacote remove todos os dados empacotados, mas geralmente deixa para trás pequenos arquivos de configuração do usuário (modificados), caso a remoção tenha sido um acidente. Apenas emitir uma solicitação de instalação para o pacote removido acidentalmente restaurará sua função como antes nesse caso. Por outro lado, você pode se livrar dessas sobras chamando purge, mesmo em pacotes já removidos. Observe que isso não afeta nenhum dado ou configuração armazenada no seu diretório pessoal.

  • apt upgrade - atualize o sistema instalando / atualizando pacotes

  • apt full-upgrade - atualize o sistema removendo / instalando / atualizando pacotes
  • apt edit-sources - edite o arquivo de informações de origem
Pablo A
fonte
apt policy xxxparece idêntico apt-cache policy xxx, talvez esse devesse ter sido um comentário. Ou pelo menos mencione que apt showparece precisar da -aopção para ver "registros adicionais" de outras fontes
Xen2050
6

Infelizmente, essas informações não são registradas durante a instalação do pacote. Você pode adivinhar se o repositório ainda está na lista de fontes e o repositório ainda possui o pacote:

grep -l PKG /var/lib/apt/lists/*

Mesmo o sináptico não pode dizer se você desabilita o repositório e atualiza.

kanaka
fonte
4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

fonte

sBlatt
fonte
1

Isso é um pouco mais preciso:

apt-cache show <packagename> | grep "Version:"

A versão mais recente será normalmente instalada, a menos que você tenha definido o apt-pinning ou explicitamente instale uma versão específica.

mchid
fonte