Como encontro as dependências de compilação de um pacote?


48

Eu gostaria de descobrir quais pacotes

sudo apt-get build-dep <package>

instalaria (se eu já tiver algumas dependências instaladas, também gostaria de vê-las → então executar ou simular o acima não é suficiente). Linha de comando preferida.


1
Estou confuso, não sudo apt-get build-dep <package>mostra a lista de pacotes (se o pacote tiver alguma dependência de compilação) ele será instalado?
Isaiah

1
Infelizmente, isso mostra apenas pacotes que não estão instalados.
htorque

Respostas:


45

Para uma lista completa de dependências, incluindo as dependências das dependências, você pode usar:

apt-rdepends --build-depends openoffice.org

O comando pode lembrá-lo para instalar apt-rdependsprimeiro.

Você pode usar o seguinte comando para mostrar apenas os que não estão instalados:

apt-rdepends --build-depends --print-state openoffice.org | grep NotInstalled

Veja apt-rdepends --helppara todas as opções.

Nota : Isso irá gerar uma lista enorme .
apt-rdepends -b xterm, por exemplo, gera 8773 linhas de saída e leva tempo para fazê-lo.

Se você deseja apenas ver os pacotes necessários para compilar o pacote superior, ou seja, o que eu preciso instalar para compilar o nautilus, execute:

apt-rdepends --build-depends --follow=DEPENDS nautilus

Isso é aproximadamente equivalente à resposta de Carsten Thiel ( The following NEW packages will be installed), mas o formato de saída é um pouco melhor. Ele também mostra apenas o pacote mais alto, enquanto o apt-get simulado também mostra os pacotes instalados como dependências deles.

Isso também mostra os pacotes que estão instalados. Mas também pode mostrar pacotes instalados por padrão. Infelizmente, nenhum dos métodos é de grande ajuda quando você tenta limpar seu sistema após executar o apt-get build-dep. Até onde eu sei, não existe um método confiável para descobrir quais foram instaladas, exceto olhando o arquivo de log do apt /var/log/apt/history.log.


1
Obrigado, a versão com --follow=DEPENDSé exatamente o que eu estava procurando. Você também pode encontrar essas dependências de compilação no Launchpad, por exemplo. para Nautilus: launchpad.net/ubuntu/natty/+source/nautilus (role para baixo).
htorque

17

A opção -s( --simulate) produzirá tudo o que seria feito sem fazer nada. Você nem precisa de privilégios de root para isso.

apt-get -s build-dep <package>

6
Veja meu comentário acima - isso não mostra os pacotes já instalados. Desculpe por não ser preciso na minha pergunta.
Htorque 13/01/11

Não funciona - falha comE: Unable to find a source package for inkscape
anatoly techtonik

17
apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrcexibe o arquivo debian / control para um determinado pacote fonte. Então, grep para as linhas que começam com 'Build-Depends', que possui a lista de pacotes necessários para compilar a partir do código-fonte.


+1 se você explicar o que apt-cache showsrce o que | grepfaz. Ainda assim, boa resposta. Obrigado por reservar um tempo para fornecê-lo.
madmike

sudo apt-cache showsrc inkscapenão funciona inkscapeno Ubuntu 18.10 - givesW: Unable to locate package inkscape N: No packages found
anatoly techtonik

O @anatolytechtonik acabou de testar no Ubuntu 18.10 no Docker, funciona para mim. Você apt-get updateprimeiro?
Stéphane Gourichon 04/11

Essa deve ser a resposta aceita, pois fornece a ferramenta necessária e não precisa de nenhum pacote extra.
Stéphane Gourichon 04/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.