Instale apenas dependências de um determinado pacote no Debian ou Ubuntu (apt)

18

Existe uma maneira melhor de instalar apenas as dependências necessárias de um pacote, em vez de instalá-lo diretamente com o apt-get (ou qualquer outro frontend do dpkg) e removê-lo imediatamente, deixando de fora suas dependências?

Vinícius Ferrão
fonte

Respostas:

22

apt-cache depends pkgname mostrará as dependências de um pacote.

Se você quiser tudo em um comando, poderá fazer pior do que:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
fonte
16

O apt-get fornece um comando exatamente para isso ...

apt-get build-dep <package name>

Nas páginas de manual que você obtém

O build-dep faz com que o apt-get instale / remova pacotes na tentativa de satisfazer as dependências de compilação de um pacote de origem. Por padrão, as dependências são satisfeitas para criar o pacote nativamente. Se desejado, uma arquitetura de host pode ser especificada com a opção --host-architecture.

Nathan Crock
fonte
9
Não poderia haver uma diferença entre build dependenciese dependencies? Por exemplo, se você normalmente instala um programa, obtém dependências que ele realmente precisa executar e, com dependências de compilação, penso mais em bibliotecas, compiladores, coisas assim. Então, como não tenho certeza (esta resposta tem votos positivos), mas parece-me que não é trivial que obter dependências de compilação seja o mesmo que obter dependências (executadas) que os pacotes possuem?
Nanne
11
Você está certo. No momento de responder a isso, há muito tempo, eu não tinha um entendimento completo da diferença entre dependências de compilação (tempo de compilação) e dependências (tempo de execução). Obrigado por esclarecer Nanne!
Nathan Crock
4

O aptitude permitirá que você especifique uma consulta em vez de um nome de pacote durante a instalação. Se você deseja instalar as dependências do pacote nomeado foo, é possível instalar os pacotes que possuem uma dependência reversa foo:

aptitude install '?reverse-depends(foo)'

ou

aptitude install '~Rfoo'

O problema de instalar um pacote e removê-lo é que todos os pacotes instalados como dependências serão marcados como "instalados automaticamente" e serão removidos por qualquer ação de instalação / remoção / atualização do aptitude ou quando você executar, a apt-get autocleanmenos que você execute marque-os como instalados manualmente usando aptitude markou o apt-markcomando

No entanto, isso levanta a questão de por que você desejaria fazer isso, meu melhor palpite é que você está tentando instalar dependências para alguns softwares que você irá compilar manualmente. Nesse caso, você deve instalar primeiro as dependências de compilação apt-get build-dep packagename, mas deve criar um pacote fictício que possua as dependências de tempo de execução (que geralmente diferem das dependências de compilação) usando o equivpacote para criar um pacote fictício com as dependências corretas para seu programa compilado manualmente. Veja informações sobre equivsem O APT HOWTO

ensopado
fonte
3

No caso de construir pkgname a partir de fontes

apt-get build-dep pkgname
eri
fonte
11
dependências de compilação são dependências não em tempo de execução
sehe
>> No caso de construir pkgname a partir de fontes
eri
Não sei onde isso é garantido / documentado. Além disso, ainda não faz o mesmo para qualquer finalidade. Eu uso o build-dep o tempo todo, mas gostaria realmente de uma resposta melhor para a pergunta atual. Eu também preciso disso.
sehe