Esta é uma pergunta em aberto, mas desejo ter uma discussão construtiva e útil sobre este tópico.
Para esclarecer a questão: Em um servidor executando o CentOS 7 (ou qualquer outra distribuição / versão do Linux), é melhor manter a versão do pacote no repositório Base / EPEL ou é bom obter a versão estável mais recente formar o site do pacote? Neste caso, estou me referindo mais especificamente a pacotes como nginx, MariaDB e PHP 7. Por exemplo, quais seriam os prós e os contras de instalar o nginx 1.8.0 na versão 1.6.3 do EPEL? Existem diferenças de desempenho ou riscos de segurança de qualquer maneira?
Todas as discussões e experiências são bem-vindas, tente citar recursos e fatos.
linux
centos
package-management
GiggleSquid
fonte
fonte
/usr/local
ou semelhante.Respostas:
Geralmente, eu tento muito usar os pacotes padrão do sistema.
No entanto, isso às vezes não é possível. Para fazer uma escolha educada, você teve que responder a estas perguntas:
fonte
As respostas de Matthew Ife e shodanshok cobrem os problemas em geral, mas quero abordar sua preocupação específica colocando os problemas em contexto, pois são exatamente esses tipos de sistemas que eu gerencio.
Minha versão atual para a implantação de aplicativos Web PHP / MySQL é:
Primeiro, vamos considerar por que escolhemos uma determinada distribuição ou conjunto de pacotes. Valorizamos a estabilidade sobre os recursos mais recentes ou valorizamos os recursos mais recentes sobre a estabilidade. Geralmente, não é possível ter os dois na mesma distribuição, pois o software de estabilização requer tempo para corrigir bugs, e a adição de novos recursos introduz bugs, portanto, instabilidade.
Como regra geral, quero que o sistema operacional no qual o aplicativo seja executado seja o mais estável possível, mas com um conjunto de recursos razoavelmente moderno. Portanto, escolherei o CentOS 7 em vez do CentOS 6, que já é bastante antigo e, embora funcione , não resta tanto tempo no ciclo de vida de suporte, portanto não o utilizarei em um novo projeto .
No entanto, deparei-me com o problema de que a versão do nginx incluída no CentOS era muito antiga e não tinha alguns recursos necessários e correções de bugs. Assim, procurei pacotes alternativos e descobri que o nginx.org distribui os seus próprios. Mudei para eles quase imediatamente e os encontrei perfeitamente estáveis a longo prazo.
Depois, há PHP. Sei pela história que a versão do PHP enviada com o CentOS será a única versão que já obteve e receberá apenas atualizações de segurança; sem novos recursos ou correções de bugs. Assim, uma vez que o suporte está fora do suporte, eu acabarei incapaz de executar aplicativos da Web PHP modernos se eu usar esses pacotes. Portanto, é necessário substituí-los também.
Por experiência longa, aprendi que é melhor rastrear lançamentos de correções de bugs com PHP, não simplesmente congelar em um ponto e fazer apenas correções de segurança, pois os aplicativos da web que eu executo também serão atualizados e precisarão dessas correções. Então, depois de avaliar muitos conjuntos diferentes de pacotes PHP, decidi pelos pacakges de remi. Remi passa a ser um funcionário da Red Hat e também é responsável pelos pacotes PHP no RHEL / CentOS. Então eu sei que os pacotes dele serão de alta qualidade e foram. Eles são substitutos para os pacotes do sistema e funcionam perfeitamente.
Finalmente chegamos ao MariaDB. Você pode optar por manter os pacotes do sistema aqui e não sofrer efeitos negativos. Optei por mudar para os pacotes 10.0 do MariaDB (e em breve chegarei à 10.1) para aproveitar o TokuDB e alguns outros aprimoramentos de desempenho não disponíveis na versão 5.5 fornecida com o CentOS, e que nunca receberá grandes atualizações.
No geral, você precisa de estabilidade em seu sistema básico, mas os aplicativos da Web mudam muito mais rapidamente do que, digamos, o software da linha de negócios, e seu servidor precisará acompanhá-lo. Portanto, escolhi pontos direcionados nos quais a atualização de pacotes obterá benefícios claros com pouca sobrecarga administrativa adicional (também conhecida como trabalho).
fonte
A resposta curta é: sempre use o que é fornecido pelos repositórios do sistema. Tenha muito cuidado com os repositórios que você instala também. Alguns são simplesmente ruins.
Você não deve escrever os pacotes do sistema com versões mais recentes, o Redhat é projetado e orquestrado com muito cuidado e você pode acabar com bugs ou problemas estranhos.
Algumas coisas a considerar e procurar, que podem causar problemas, incluem.
php
pacote foi colocado no sistema, mas não atualizou opear
pacote que apresentava problemas.Nunca crie pacotes a partir da fonte e instale-os por cima dos pacotes existentes. Isso interrompe a integridade do pacote do sistema, o que pode levar a problemas estranhos na ABI, como recebimento
unresolved symbol
ouundefined reference
mensagens. É bastante crítico que o sistema mantenha um índice confiável e preciso de qual software foi implantado em um determinado sistema para garantir que tudo funcione corretamente entre si; é por isso que usamos RPMs em primeiro lugar.A maneira viável (e abençoada pela Redhat) de resolver isso é usar coleções de software.
www.softwarecollections.org
Ele instala o software e suas 'novas' dependências em sua própria raiz. Isso pode dificultar um pouco a aplicação do pacote em seu ambiente, mas protege seu sistema contra erros ou problemas estranhos. Ele também instala os pacotes em seu próprio espaço para nome, permitindo instalar várias versões de um pacote em paralelo.
O site fornece instruções sobre como instalar e ativar esses pacotes. Ele contém a maior parte do que as pessoas sentem falta nas versões mais antigas do CentOS e Redhat (EL6 em particular). Algumas coisas que usei neste site com sucesso.
Observe que sua posição padrão sobre esse assunto não deve ser a de ajustar o que os repositórios Redhat estão pressionando. Em vez disso, faça uma avaliação se você realmente precisa de uma versão atualizada de um pacote, em particular quais são seus requisitos específicos, quais problemas ele deve corrigir e quais riscos ele apresenta.
Como regra geral, se você precisar constantemente de um software atualizado e / ou exigir várias versões paralelas dos mesmos pacotes para fazer as coisas funcionarem, geralmente é um indicador de que você está fazendo algo errado.
fonte
nginx
é um daqueles pacotes 'tudo em um' assim. Porém,httpd
(dependências libapr) emysql
(dependências libmysqlclient) em particular não são. As atualizações incorretas de ambos os pacotes causaram erros no passadopython
ephp
para mim. O problema aqui não é simples de saber como um pacote interage com outro, a menos que você saiba o que procurar (tradução: já foi gravado por ele).