Por que os pacotes desatualizados são instalados pelo yum no CentOS? (especificamente PHP 5.1) Como corrigir?

14

Estou trabalhando em um novo servidor CentOS e estou extremamente irritado ao descobrir que o yum não funciona de maneira tão suave e brilhante quanto o "apt-get install" no Ubuntu.

Instalando uma pilha LAMP, executei o seguinte:

$ yum install php
$ yum install mysql

Além disso:

$ yum install mysql-server
$ yum install mysql-devel
$ yum install php-mysql

Agora em execução:

$ rpm -qa | grep php

... mostra que tenho todos os tipos de pacotes php 5.1.6 instalados e preciso do mínimo de 5,2. Além disso, vejo que ele instalou o mysql 5.0.77, mesmo que a versão atual seja 5.5.20. Mas espero que o mysql 5.0 funcione. PHP 5.1 não.

Portanto, a (s) questão (s) real (is) é (são):

Como faço para corrigir meu PHP para torná-lo a versão estável mais recente (5.3.9 de acordo com o PHP.net)? Como faço para que minha máquina CentOS funcione mais como o Ubuntu, para não precisar lidar com isso novamente?

Muito obrigado.

EDIT: O CentOS 5.7 foi instalado por uma empresa de hospedagem na semana passada, então não sei por que eles instalariam uma versão mais antiga do CentOS, em vez da mais recente. Eu preciso do PHP 3.2, pelo menos, por isso agradeço as sugestões sobre como fazer isso. Eu não estou muito familiarizado com pacotes e repositórios, mas parece que qualquer pessoa pode iniciar um repositório e, portanto, estou preocupado em instalar coisas de algum repositório aleatório que possa infectar o servidor.

Buttle Butkus
fonte
1
Pode-se salientar que, se você está aderindo a uma versão LTS do Ubuntu, Hardy está no php 5.2 e Lucid está em um novo 5.3.2 um pouco não muito brilhante. Existem versões similarmente "antigas" do servidor mysql nos repositórios padrão do Ubuntu LTS. O RHEL5 saiu um ano antes do Hardy, então não é de surpreender que esteja no php 5.1. O RHEL e o Ubuntu LTS são criados para a estabilidade do pacote. Se você quiser algo mais atualizado, use o Fedora ou o Ubuntu não LTS.
CJC
Aqui é onde você pode atualizar sua versão do PHP para PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Respostas:

11

O CentOS é um DERIVATIVO do Red Hat Enterprise Linux, muito conservador; portanto, as atualizações de pacotes geralmente atrasam ainda mais que o RHEL. Pacotes em qualquer distribuição serão um pouco mais antigos.

Se você estiver executando o CentOS 5, tente o CentOS 6 para ver se ele atende às suas necessidades.

Se você precisa de algo um pouco mais avançado que o CentOS 6, deve procurar no Fedora.

Acompanhamento: O CentOS foi trazido "internamente" e está mais integrado. Os lançamentos mais recentes do CentOS verão os benefícios de um ciclo de lançamentos mais apertado, mas para lançamentos mais antigos, essa resposta ainda será verdadeira.

Magalhães
fonte
2
A quantidade de informações erradas neste segmento é absolutamente estupefata. O CentOS 5 contém o PHP 5.3 há mais de um ano, mas não é a versão instalada padrão por causa de preocupações com a ABI. yum install php53irá levá-lo no seu caminho.
Jgoldschrafe
Verdade. Decidi ensiná-lo a pescar, em vez de lhe dar um peixe. E eu suponho que foi de fato um pouco irritante, mas eu dormi algumas horas em 36 e não vou dormir muito neste fim de semana devido à falta de SPOF.
Magalhães
2
@jgoldschrafe - sugiro que escreva uma resposta sua - que seria mais produtivo do que apenas comentar com correções.
EEAA
É um servidor dedicado em uma empresa de hospedagem. Pessoalmente, eu gostaria de ter o servidor em nossa propriedade, mas o chefe se sentia mais seguro dessa maneira. Eu me pergunto por que a empresa de hospedagem instalaria o CentOS 5.7 em vez da mais recente.
Buttle Butkus
4
@jgoldschrafe, para mim a pergunta, não parecia ser especificamente sobre a versão php. Parece que a pergunta era sobre as políticas conservadoras de lançamento, que acho que o post tenta responder. Eu acho que é uma coisa difícil chamar isso de informação perdida.
precisa saber é o seguinte
6

Eles não estão desatualizados; eles são os mais recentes que o CentOS 5 possui em seus repositórios.

A Red Hat (e o Ubuntu) nunca publicam uma nova versão principal de software em seus repositórios de pacotes para uma determinada versão do sistema operacional, por uma questão de estabilidade - você não deseja executar uma atualização e, de repente, sua configuração não está correta. trabalhos.

Em vez disso, eles suportam correções de segurança e importantes correções na versão do software que era 'estável' quando o sistema operacional foi lançado, evitando a introdução de novos recursos (e seus bugs).

Como você está no CentOS 5, os repositórios oficiais têm versões bastante antigas. Mas não tenha medo - você provavelmente pode encontrar facilmente um repositório de terceiros com as versões de software necessárias.

Ou, por que não atualizar para 6?

Shane Madden
fonte
Isso não é completamente verdade - o PHP 5.3 está nos repositórios principais e você só precisa yum install php53.
Jgoldschrafe
1
@jgoldschrafe Good call. Embora pareça que um repositório de terceiros ainda possa ser necessário para o MySQL mais recente.
Shane Madden
"Ou, por que não atualizar para 6?" A melhor pergunta é por que o SingleHop nos deu 5,7 no servidor? @jgoldschrafe substituirá os pacotes instalados ou os removerei manualmente?
Buttle Butkus
O CentOS 6 ficou disponível apenas alguns meses atrás. Se a caixa tivesse sido encomendada no início do ano passado, teria sido 5,7. Se você tiver a opção de criar uma nova imagem da máquina com o CentOS 6, certamente poderá fazer isso.
CJC
@cjc Foi encomendado apenas cerca de duas semanas atrás. Eu já fiz o FTP com cerca de 80 GB, então acho que seria mais fácil fazer essa instalação funcionar. Estou tentando usar o que o jgoldschrafe recomendou: yum install php53, mas não funciona porque o php já está instalado.
Buttle Butkus
4

Eu diria que desinstale o CentOS e instale o Ubuntu, se é isso que você deseja usar. Mas deve ser uma versão mais antiga do CentOS que você usa. O CentOS 6.2 usa PHP 5.3 e MySQL 5.1.

Você pode usar o repositório Remi para obter versões mais recentes do Apache / PHP / MySQL

E você não faz sua máquina CentOS funcionar mais como o Ubuntu, porque não é o Ubuntu. É como dizer "Como eu faço meu Chrysler dirigir mais como um Ford".


Resposta atualizada:

Tive alguns votos negativos, então acho que minhas intenções foram mal compreendidas, deixe-me tentar corrigir isso.

Eu configurei um VPS em nosso ambiente e instalei os pacotes, então eu deveria estar onde você está agora:

[root@centos5 /]# cat /etc/issue
CentOS release 5.7 (Final)
Kernel \r on an \m

[root@centos5 /]# rpm -qa |grep php
php-common-5.1.6-27.el5_7.4
php-mysql-5.1.6-27.el5_7.4
php-cli-5.1.6-27.el5_7.4
php-pdo-5.1.6-27.el5_7.4
php-5.1.6-27.el5_7.4

Na minha primeira resposta, presumi que você desejava os últimos lançamentos, então você deveria usar o repositório Remi, como afirmei acima. No entanto, se a versão do PHP 5.3 no centOS estiver correta (5.3.3), continue lendo.

Ao tentar instalar o php53, ele reclama que há um conflito, já que este pacote cobre as mesmas coisas que o pacote do PHP 5.1. Para resolver isso, você precisa remover todos os pacotes relacionados ao PHP para começar:

[root@centos5 /]# yum remove php*
[root@centos5 /]# rpm -qa |grep php
[root@centos5 /]# 

A próxima coisa a fazer é instalar os pacotes equivalentes com o php53:

[root@centos5 /]# yum install php53 php53-cli php53-mysql
[root@centos5 /]# rpm -qa |grep php
php53-common-5.3.3-1.el5_7.5
php53-cli-5.3.3-1.el5_7.5
php53-pdo-5.3.3-1.el5_7.5
php53-5.3.3-1.el5_7.5
php53-mysql-5.3.3-1.el5_7.5

Então, o PHP foi bem fácil. Mas o MySQL é outra história, uma vez que o MySQL 5.0 é o único MySQL nos repositórios padrão do CentOS. Eu executo a versão de 64 bits do CentOS, se você não precisar ajustar o seguinte para caber em 32 bits.

Existem várias maneiras de fazer isso, mas eu vou com o repositório Remi. Já existe há anos e é mais fácil manter um repositório do que usar arquivos RPM simples.

O Remi requer o repositório EPEL, então comece instalando:

[root@centos5 /]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.lvLBMJ: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

Em seguida, você instala o Remi repo RPM

[root@centos5 /]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
warning: /var/tmp/rpm-xfer.ztjinG: Header V3 DSA signature: NOKEY, key ID 00f97f56
Preparing...                ########################################### [100%]
   1:remi-release           ########################################### [100%]

Em seguida, você remove o servidor MySQL atual (caso contrário, você terá conflitos ao tentar instalar o novo). NOTA! Se você possui bancos de dados, faça um backup antes de fazer isso!

[root@centos5 /]# yum remove mysql*

Então você pode continuar e instalar o MySQL a partir do repositório Remi:

[root@centos5 /]# yum --enablerepo=remi install mysql.x86_64 mysql-server.x86_64

Agora, quando você tenta iniciar o MySQL, pode falhar porque o antigo mysql deixou algumas coisas para trás, e isso pode ser meio difícil de se livrar. No meu caso aqui, eu precisava remover algumas coisas para fazê-lo funcionar. Eles fizeram isso por mim:

# rm -rf /usr/share/mysql
# rm -rf /var/lib/mysql
# yum --enablerepo=remi reinstall mysql-libs
# /usr/libexec/mysqld --skip-grant &
# mysql_install_db
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start
Frands Hansen
fonte
1
Bem, é basicamente uma questão de saber se existe ou não uma maneira de obter pacotes atualizados, em vez de pacotes desatualizados.
Buttle Butkus
@ButtleButkus Eu não sei se você ser notificado quando eu atualizar por isso estou escrevendo um comentário para se certificar de que você faz :)
Frands Hansen
Acabei de ver sua atualização. Resolvi o problema e sua resposta parece corresponder ao que acabei fazendo. Preciso verificar novamente minhas anotações.
Buttle Butkus
1
Existem mais algumas fontes para rpms atualizados. Rackspace IUS iuscommunity.org/pages/About.html e webtatic webtatic.com/projects/yum-repository
txyoji