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

13

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

Instalando uma pilha LAMP, eu corri 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 eu tenho todos os tipos de pacotes php 5.1.6 instalados e preciso de 5.2 no mínimo. Além disso, vejo que ele instalou o mysql 5.0.77, mesmo que o release atual seja 5.5.20. Mas esperamos que o mysql 5.0 funcione. PHP 5.1 não irá.

Então a (s) pergunta (s) real (is) é (são):

Como eu corrijo meu PHP para torná-lo a última versão estável (5.3.9 de acordo com o PHP.net)? Como faço para que minha máquina CentOS funcione mais como o Ubuntu, então não tenho que lidar com isso de novo?

Muito obrigado.

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

    
por Buttle Butkus 28.01.2012 / 02:29

3 respostas

11

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

Se você está rodando o CentOS 5, você deve tentar o CentOS 6 para ver se ele atende às suas necessidades.

Se você precisa de algo um pouco mais inovador do que o CentOS 6, você deve procurar no Fedora.

Acompanhamento: o CentOS foi trazido "internamente" e está mais integrado. As versões mais recentes do CentOS verão os benefícios de um ciclo de lançamento mais restrito, mas, para versões mais antigas, essa resposta ainda será verdadeira.

    
por 28.01.2012 / 02:42
6

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

A Red Hat (e o Ubuntu) nunca, nunca publicam uma nova versão principal do software em seus repositórios de pacotes para uma determinada versão do sistema operacional, por causa da estabilidade - você não quer rodar um upgrade e de repente sua configuração não funciona.

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

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

Ou, por que não atualizar para o 6?

    
por 28.01.2012 / 02:44
4

Eu diria desinstalar o CentOS e instalar o Ubuntu, se é isso que você quer 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 é Ubuntu. É como dizer "Como faço meu Chrysler dirigir mais como um Ford".

Resposta atualizada:

Eu tenho alguns votos para baixo sobre isso, então eu acho que minhas intenções foram mal interpretadas, 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

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

Ao tentar instalar o php53, ele reclama que existe um conflito, já que este pacote cobrirá as mesmas coisas que o pacote 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 que você faz é 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 muito fácil. Mas o MySQL é outra história, já que o MySQL 5.0 é o único MySQL nos repositórios padrão do CentOS. Eu corro a versão de 64 bits do CentOS, se você não precisa ajustar o seguinte para caber 32 bits em vez disso.

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

Remi exige o repositório EPEL , portanto comece instalando o seguinte:

[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 RPM do repo Remi

[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ê obterá conflitos ao tentar instalar o novo). OBSERVAÇÃO! Se você tiver bancos de dados, faça um backup antes de fazer isso! / p>

[root@centos5 /]# yum remove mysql*

Então você pode instalar o MySQL do repositório Remi:

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

Agora, quando você tenta iniciar o MySQL, ele pode falhar porque o antigo mysql deixou algumas coisas para trás, e isso pode ser um pouco doloroso para se livrar. No meu caso, aqui eu precisava remover algumas coisas para que funcionasse. 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
    
por 28.01.2012 / 02:43