Você pode me ajudar com meu problema de dependência de software?

12

Esta é uma pergunta canônica sobre dependências de compilação e gerenciamento de pacotes.

Tenho uma pergunta sobre a compilação de portas / software ou a instalação de RPMs no meu servidor * nix. Quando tento fazer isso, recebo muitas mensagens sobre dependências ausentes.

A comunidade de falha do servidor pode ajudar?

dunxd
fonte

Respostas:

10

Bem-vindo à falha do servidor. Em geral, esse tipo de pergunta não é abordado aqui. Espera-se que a maioria dos administradores de sistemas já tenha enfrentado esse problema antes de se tornarem administradores de sistema, mexendo nas próprias estações de trabalho. No entanto, os administradores de sistema provenientes de um plano de fundo do Windows podem não ter enfrentado isso, então, aqui estão algumas coisas a considerar:

Por que não usar um gerenciador de pacotes para instalar o software em seu servidor?

Os gerenciadores de pacotes como yumou aptmanipulam essas dependências para você. Além disso, eles também podem ser usados ​​para gerenciar atualizações do software em seu servidor. A maioria dos tipos de * nix terá um gerenciador de pacotes instalado por padrão, especialmente no VPS fornecido com o SO pré-instalado. Se você é realmente novo nisso, use um deles em seu sistema de produção e salve aventuras na compilação ou instalação de RPMs de ponta para o seu ambiente de teste.

Mas sou obrigado a usar um pacote mais atualizado do que o que está disponível no meu gerenciador de pacotes!

A maioria dos gerenciadores de pacotes pode ser configurada para usar repositórios diferentes - você pode achar que existe um que fornece a versão do pacote necessária e ainda permite tirar proveito das funções do gerenciador de pacotes.

O pacote que eu preciso não está disponível por meio de repositórios ou gerenciadores de pacotes

Nesse caso, você provavelmente fazer precisa descobrir as dependências (ou chupa-lo e usar um estábulo versão mais / comum do software). Você provavelmente deve fazer o seguinte em um ambiente de teste e fazer anotações cuidadosas do que faz:

  • Certifique-se de ler a documentação do software que está instalando - isso provavelmente listará o que você precisa instalar primeiro, mas não o necessário para esse software.
  • Use seu gerenciador de pacotes para instalar as coisas necessárias - na maioria dos casos, elas estarão disponíveis.
  • Depois de concluir isso, tente instalar.
  • Se você ainda vir mensagens sobre dependências ausentes, anote todas elas e tente instalar o maior número possível usando o gerenciador de pacotes.
  • Se uma dependência não for encontrada, você deve considerá-la uma subtarefa e tratá-la recursivamente (encontre o tarball de origem, encontre dependências, instale).
  • É um processo iterativo.

Eu ainda estou tendo problemas!

Se você seguiu todas as etapas acima e ainda está tendo problemas, pode ter encontrado um problema estranho com o qual outros servidores Faulters podem ajudar. Crie uma nova pergunta, fornecendo detalhes de qual software você está tentando instalar, qual versão e as mensagens de erro exatas que você está vendo.

Conselho específico para os principais sistemas de gerenciamento de pacotes

Gerenciamento de pacotes RPM (RHEL / Fedora e clones) e DEB (Debian / Ubuntu e clones)

  • yum whatprovides filename é uma excelente maneira de encontrar o pacote que fornece um arquivo ou biblioteca específica em um sistema do tipo RHEL.
  • Não use ./configure && make && make installcegamente, se possível! O gerenciamento de pacotes foi inventado por esse mesmo motivo, para evitar a bagunça incômoda e insustentável resultante da instalação não rastreável de muitos arquivos conflitantes.
  • Muitas bibliotecas são divididas em duas partes: binário (objetos compartilhados, por exemplo) e desenvolvimento (cabeçalhos). Assim, você precisaria de ambos libfooe libfoo-devel(ou -dev) pacotes.
  • Considere usar fpm( https://github.com/jordansissel/fpm ) para converter tarballs em RPMs e DEBs
  • Se você estiver lançando seus próprios pacotes, VOCÊ é a pessoa responsável por suas atualizações, testes e manutenção. Se você não tem infra-estrutura para isso, definitivamente está mirando muito alto.

Localizando dependências pelo nome do arquivo para RPMs

http://rpmfind.net é um bom lugar para procurar nomes de pacotes, se você souber o nome do arquivo do qual o procedimento de instalação está reclamando. Porém, não é recomendado combinar e misturar pacotes de diferentes distribuições.

dunxd
fonte
Eu acho que seria útil fornecer uma seção que discuta a questão das dependências da biblioteca que pode ser um pouco mais difícil de resolver - mas eu tenho menos experiência nisso - alguém quer contribuir?
dunxd
Os itens que eu recomendo incluiriam detalhes sobre os RPMs do src e como manter um repositório local personalizado. A criação de arquivos deb ou rpm deve fazer parte do cinto de ferramentas de qualquer pessoa que precise trabalhar com requisitos de pacotes pouco comuns.
Tim Brigham
Pode valer a pena expandir isso para abordar o tópico de pilhas de aplicativos e suas armadilhas. A pergunta "pacote mais atualizado" me lembrou uma pergunta recente .
Andrew B
É uma comunidade wiki tão à vontade para adicionar coisas, ou, claro, fornecer sua própria resposta :-)
dunxd