Devo usar a versão do pacote do CentOS nos repositórios (oficiais) ou nas últimas versões estáveis dos pacotes?

9

Esta é uma pergunta aberta, mas eu gostaria de ter uma discussão construtiva e útil sobre este tópico.

Então, para esclarecer sobre a questão: Em um servidor rodando o CentOS 7 (ou qualquer outra distribuição / versão do Linux) É melhor ficar com a versão do pacote no repositório Base / EPEL ou não há problema em obter a última versão estável do 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 contras da instalação do nginx 1.8.0 na versão 1.6.3 do EPEL? Existem diferenças de desempenho ou riscos de segurança?

Toda a discussão e experiência são bem-vindas, por favor, tente citar recursos e fatos.

    
por GiggleSquid 17.01.2016 / 14:32

3 respostas

9

Geralmente, eu tento muito usar pacotes padrão do sistema.

No entanto, isso às vezes não é possível. Para fazer uma escolha educada, você precisava responder a essas perguntas:

  1. os pacotes da distribuição fornecem os recursos necessários? Se assim for, você não precisa nem para procurar outros pacotes; simplesmente use os pacotes fornecidos pelos repositórios do sistema.
  2. você precisa de apoio oficial e / ou teve que cumprir políticas específicas? Se assim for, você não pode usar um repositório não oficial . Neste caso, você provavelmente está usando a distribuição errada para o seu projeto de software.
  3. Se a resposta para as perguntas anteriores fosse "não", você teria que procurar por uma versão de software mais recente. Existe um repositório bem reconhecido com o pacote requerido? Em caso afirmativo, use-o.
  4. se não houver repositórios específicos e confiáveis, você deve usar o software upstream. Neste caso, tente muito usar software empacotado (por exemplo: RPM, DEB, ecc) em vez de simples tar.gz (ou semelhantes).
por 17.01.2016 / 18:27
6

As respostas de Matthew Ife e shodanshok cobrem as questões em geral, mas quero abordar sua preocupação específica colocando as questões em contexto, já que são exatamente esses tipos de sistemas que eu gerencio.

Minha versão atual para a implantação de aplicativos da Web em PHP / MySQL é:

Primeiro, vamos considerar por que escolhemos uma distribuição ou um conjunto de pacotes específico. Queremos valorizar a estabilidade nos recursos mais recentes ou valorizamos os recursos mais recentes em vez de estabilidade. Geralmente, não é possível ter os dois na mesma distribuição, pois a estabilização de software requer tempo para corrigir bugs, e a adição de novos recursos introduz erros, 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. Assim, escolherei o CentOS 7 com o CentOS 6, que é bastante antigo neste momento e, embora funcione , não resta muito tempo em seu ciclo de vida de suporte, então ganhei ' t usá-lo para um novo projeto.

No entanto, eu encontrei 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, fui procurar por pacotes alternativos e descobri que o nginx.org distribui seus próprios pacotes. Mudei para eles quase que imediatamente e os encontrei perfeitamente estáveis a longo prazo.

Depois, há o PHP. Eu sei da história que a versão do PHP lançada com o CentOS será a única versão que ela obtém, e só receberá atualizações de segurança; sem novos recursos ou correções de bugs. Assim, uma vez que esteja fora do suporte upstream, eventualmente, serei incapaz de executar aplicativos web PHP modernos se eu usar esses pacotes. Assim, é necessário substituí-los também.

A partir de uma longa experiência, aprendi que é melhor acompanhar as liberações de correções com o PHP, não apenas congelar em um ponto e tomar apenas correções de segurança, pois os aplicativos da web que eu executar também serão atualizados e precisarão dessas correções. Então, depois de avaliar muitos conjuntos diferentes de pacotes PHP, decidi sobre os pacakges do remi. Remi é 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 eles foram. Eles são substitutos diretos dos pacotes do sistema e funcionam perfeitamente.

Finalmente chegamos ao MariaDB. Você pode escolher manter os pacotes do sistema aqui e não sofrer efeitos nocivos. Eu escolhi mudar para os pacotes 10.0 do MariaDB (e em breve irá para 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 ele nunca receberá grandes atualizações para.

No geral, você precisa de estabilidade em seu sistema básico, mas os aplicativos da Web mudam muito mais rapidamente do que, digamos, software de linha de negócios, e seu servidor precisará acompanhar. Assim, eu escolhi pontos direcionados, onde a atualização de pacotes ganhará benefícios claros com pouca sobrecarga administrativa adicional (também trabalho).

    
por 17.01.2016 / 18:57
5

A resposta curta é sempre usar o que é fornecido pelos repositórios do sistema. Seja muito cuidadoso com quais repositórios você também instala. Alguns são simplesmente ruins.

Você não deve ignorar os pacotes de sistemas com versões mais recentes, o Redhat é projetado e orquestrado com muito cuidado e você pode acabar com bugs ou problemas estranhos se o fizer.

Algumas coisas a considerar e que podem causar problemas incluem.

  1. Alguns repositórios são simplesmente mal mantidos. Eles não são atualizados com correções de segurança para pacotes.
  2. As pessoas tendem a escrever RPMs incorretos, elas não marcam arquivos de configuração como arquivos de configuração, o que substitui 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. Já vi isso antes, em que um pacote php foi colocado no sistema, mas não atualizou o pacote pear que introduziu problemas.
  4. A instalação de vários repositórios, todos oferecendo os mesmos nomes de pacotes, pode levar a problemas imprevistos de dependência em seu sistema.
  5. Alguns pacotes sobrescrevem ou reescrevem arquivos de configuração do sistema que outros pacotes dependem ou esperam existir. Isso leva a problemas com outros pacotes que talvez você não espere.

Nunca crie pacotes a partir do código-fonte e instale-os no topo dos pacotes que estão lá. Isso quebra a integridade do pacote de sistemas, o que pode levar a problemas estranhos de ABI, como receber unresolved symbol ou undefined reference messages. É bastante crítico que o sistema mantenha um índice confiável e preciso sobre qual software foi implantado em um determinado sistema para garantir que tudo funcione corretamente entre si, por isso, usamos RPMs.

A maneira viável (e Redhat abençoada) 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 namespace, permitindo que você instale 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 perdem em versões mais antigas do CentOS e Redhat (EL6 em particular). Algumas coisas que usei deste site com sucesso.

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

Note que a sua posição padrão sobre este assunto não deve ser ajustada a partir do que os repositórios do 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 os seus requisitos específicos, quais problemas devem ser corrigidos e quais riscos são apresentados.

Como regra geral, se você estiver constantemente precisando de um software atualizado e / ou precisar de várias versões paralelas dos mesmos pacotes para fazer as coisas funcionarem, geralmente é um indicador de que você está fazendo algo errado.

    
por 17.01.2016 / 18:58