Isto é umPergunta Canônicasobre quando usar software empacotado e quando construí-lo e instalá-lo você mesmo.
Quando devo instalar software a partir de pacotes fornecidos pela distribuição do meu sistema operacional, em vez de compilá-lo e instalá-lo sozinho a partir do código-fonte? Quando é melhor construir a partir do código-fonte?
Responder1
Você deve usar os pacotes da sua distribuição, a menos que tenha um bom motivo para não fazê-lo. Usar os pacotes da distribuição oferece benefícios importantes:
- É menos trabalhoso instalar e desinstalar os pacotes e mantê-los atualizados.
- O sistema de empacotamento instalará automaticamente as dependências do software e também as manterá atualizadas.
- As atualizações de segurança são fornecidas automaticamente pela distribuição, para que você não precise rastreá-las ou se preocupar em perdê-las.
- O sistema de empacotamento configurará as coisas da maneira preferida da sua distribuição. Por exemplo, em sistemas baseados em apt, o Apache vem instalado com links simbólicos em /etc/apache2/*-enabled e ferramentas (a2enconf, a2enmod, ...) para usá-los para ativar ou desativar recursos do Apache. Embora inicialmente isso possa exigir mais trabalho para você aprender, no longo prazo sua vida será mais fácil e sua configuração será melhor integrada se você usar as ferramentas nativas e as formas de fazer as coisas da distro.
Se você precisar usar uma versão mais recente de algum software do que a fornecida pela sua distribuição, ou ativar um recurso que precisa ser compilado, você poderá encontrar versões mais atualizadas ou com recursos do pacote nos repositórios da comunidade. Repositórios de Remisão um exemplo bem conhecido, oferecendo, entre outras coisas, versões de PHP muito mais atualizadas do que aquelas fornecidas com RHEL/CentOS. Usar um repositório da comunidade oferece muitas das vantagens dos repositórios de sistema operacional, mas corre o risco de o autor liberar malware que você instala, com privilégios totais, em seu sistema. Você mesmo terá que fazer o julgamento de risco/recompensa, caso a caso.
Se nenhuma dessas alternativas funcionar para você, você precisará compilar a partir do código-fonte. Ao compilar software a partir do código-fonte, a rota recomendada écrie seus próprios pacotes binários. Construir seus próprios pacotes permite que você:
- Trabalhe com o sistema de gerenciamento de pacotes da sua distribuição para distribuição, instalação, gerenciamento de dependências, relatórios, atualizações, downgrades e remoção.
- Restrinja suas ferramentas de build e bibliotecas de desenvolvimento a um único host de build (em vez de instalá-las em todos os servidores de teste e produção).
- Siga o caminho de lançamento comum de primeiro implantar seus pacotes em um ambiente de teste antes de implantar o mesmo pacote em seu ambiente de produção.
Já que isso fazvocê é o mantenedor do pacote, você precisará se inscrever nas listas de discussão de segurança relevantes para não perder nenhum bug crítico e atualizações de segurança.
Se você acabar instalando software desenvolvido localmente sem empacotá-lo,Armazenamento GNUpode ajudar a mantê-lo bem organizado e facilitar a desinstalação limpa.
Responder2
Gosto da resposta do André.
Quero apontar algo específico para complementar o comentário de Andrew sobre “melhor integração”. Se você instalar um aplicativo a partir do código-fonte (uma dependência de um projeto futuro) e posteriormente tentar instalar um pacote a partir de um binário (por exemplo, um pacote deb ou rpm), esse pacote poderá não reconhecer que uma dependência está instalada. Se você tivesse instalado o aplicativo de dependência inicial de um pacote RPM ou DEB, o pacote futuro saberia que estava instalado. Usar o mesmo método de pacote (por exemplo, yum, pip, rpm, etc.) é uma prática recomendada. Instalar a partir do código-fonte é outro método. Portanto, a facilidade de que Andrew está falando é uma consideração séria.
Quero acrescentar que "criar seus próprios pacotes binários" tem a vantagem de registrar o processo de instalação. A instalação a partir de arquivos de origem não traz o benefício de registro.