Devo usar a versão do pacote CentOS nos repositórios (oficiais) ou as versões estáveis ​​mais recentes dos pacotes?


9

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.


4
Eu evitaria instalar sobre um pacote fornecido pelo sistema operacional. Primeiro, você realmente não sabe se alguma personalização o provedor de distribuição pode ter feito - local do arquivo de configuração, etc. Por exemplo, o que acontece se você instalar o nginx 1.8.0 sobre o 1.6.3 fornecido pela distribuição e depois a distribuição salta para 1.9.9? O que isso fará com sua instalação personalizada? Em geral - não brinque com nada fornecido pelo sistema operacional, a menos que queira se comprometer a manter a instalação personalizada do sistema operacional durante toda a vida útil do servidor . Para uma versão posterior de um aplicativo fornecido pelo SO, instale-o /usr/localou semelhante.
Andrew Henle

Esse é um bom ponto, minha resposta para isso seria: Novamente, por exemplo, pegue o nginx, o mais estável, o 1.8.0, e a versão mais recente, a 1.6.3. E se uma falha de segurança for descoberta na versão de distribuição do 1.6.3? ?
precisa saber é o seguinte

5
Red Hat : À medida que as vulnerabilidades de segurança são descobertas, o software afetado deve ser atualizado para limitar possíveis riscos à segurança. Se o software fizer parte de um pacote dentro de uma distribuição Red Hat Enterprise Linux atualmente suportada, a Red Hat, Inc. se compromete a liberar pacotes atualizados que corrigem a vulnerabilidade o mais rápido possível. ... (cont)
Andrew Henle 17/01

5
Frequentemente, os anúncios sobre uma determinada exploração de segurança são acompanhados de um patch (ou código-fonte que corrige o problema). Esse patch é aplicado ao pacote Red Hat Enterprise Linux, testado pela equipe de controle de qualidade da Red Hat e lançado como uma atualização de errata . ... Você planeja se inscrever em tudo o que isso implica?
Andrew Henle

Respostas:


9

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:

  1. os pacotes da distribuição fornecem os recursos necessários? Nesse caso, você nem precisa procurar outros pacotes; basta usar os pacotes fornecidos pelos repositórios do sistema.
  2. você precisa de suporte oficial e / ou teve que cumprir políticas específicas? Nesse caso, você não pode usar um repositório não oficial . Nesse caso, você provavelmente está usando a distribuição incorreta para o seu projeto de software.
  3. se a resposta para as perguntas anteriores for "não", você deverá procurar uma versão mais recente do software. Existe um repositório bem reconhecido com o pacote necessário? Se sim, use-o.
  4. se não existirem repositórios específicos e respeitáveis, você precisará usar o software upstream. Nesse caso, tente muito usar o software empacotado (por exemplo: RPM, DEB, ecc) em vez de tar.gz (ou similares).

3
Outra coisa que você pode adicionar: Desvantagem. Seu empregador (se aplicável) sabe que você está fazendo isso com os sistemas da empresa, especialmente se estiver pagando pelo suporte? Entre outras coisas, pode haver razões legais pelas quais uma empresa está usando uma distribuição suportada, e criar sua própria conta pode muito bem abrir a empresa a questões de responsabilidade, se, por exemplo, os dados do usuário tiverem que ser protegidos. Se o seu pacote instalado em casa não suportado vazar os dados do usuário porque você perdeu uma correção de segurança, não poderá mais apontar para a Red Hat e dizer: "Estávamos executando o SO deles e pagamos para mantê-lo atualizado".
Andrew Henle

6

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).


5

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.

  1. Alguns repositórios são simplesmente mal mantidos. Eles não atualizam com correções de segurança para pacotes.
  2. As pessoas tendem a escrever RPMs ruins, não marcam os arquivos de configuração como arquivos de configuração, que substituem sua configuração toda vez que você atualiza, o que pode causar problemas. Eu já vi esse problema antes.
  3. Eles não declaram suficientemente suas dependências adequadamente. Eu já vi isso antes também, onde um phppacote foi colocado no sistema, mas não atualizou o pearpacote que apresentava problemas.
  4. A instalação de vários repositórios, oferecendo todos os mesmos nomes de pacotes, pode levar a problemas imprevistos de dependência em seu sistema.
  5. Alguns pacotes substituem ou reescrevem os arquivos de configuração do sistema dos quais outros pacotes dependem ou esperam existir. Isso leva a problemas com outros pacotes que você não pode esperar.

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 symbolou undefined referencemensagens. É 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.

  • MySQL 5.6 e MySQL 5.7, MariaDB.
  • PHP 5.5 e PHP 5.6
  • Apache 2.4

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.


1
Alguns pacotes de sistema, como aplicativos de usuário, podem ser substituídos por versões mais recentes com segurança e sem efeitos negativos, se o empacotador souber o que está fazendo . Mas é não seguro para atualizar as bibliotecas , desta forma; tentar fazer isso é o que causa os erros ABI que você mencionou. Infelizmente, o conhecimento do que pode ser atualizado com segurança e como fazê-lo não parece ser comum entre os empacotadores. Até a Red Hat ocasionalmente entendeu errado . OTOH, Software coleções são uma dor real na bunda para uso ...
Michael Hampton

1
nginxé um daqueles pacotes 'tudo em um' assim. Porém, httpd(dependências libapr) e mysql(dependências libmysqlclient) em particular não são. As atualizações incorretas de ambos os pacotes causaram erros no passado pythone phppara 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).
Matthew Ife

2
Você pode atualizar algo como o MariaDB sem nenhum problema real, pois ele possui uma biblioteca de compatibilidade para permitir que programas vinculados à versão mais antiga do sistema continuem funcionando. Você só precisa se lembrar de instalar o pacote (e o yum deve reclamar se não o fizer). O PHP é mais complexo, pois possui muitas dependências que também devem ser mantidas atualizadas, e se o empacotador não estiver fazendo isso, os pacotes serão piores que inúteis. Felizmente, como remi também é o mantenedor de PHP do RHEL, ele sabe o que são todos esses e seus pacotes estão bem.
Michael Hampton
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.