¿Por qué los paquetes obsoletos son instalados por yum en CentOS? (específicamente PHP 5.1) ¿Cómo solucionarlo?

14

Estoy trabajando en un nuevo servidor CentOS y estoy extremadamente molesto al descubrir que yum no funciona tan bien y de manera tan brillante como lo hace "apt-get install" en Ubuntu.

Instalando una pila LAMP, ejecuté lo siguiente:

$ yum install php
$ yum install mysql

Además:

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

Ahora corriendo:

$ rpm -qa | grep php

... muestra que tengo todo tipo de paquetes php 5.1.6 instalados y necesito un mínimo de 5.2. Además, veo que instaló mysql 5.0.77, aunque la versión actual es 5.5.20. Pero con suerte mysql 5.0 funcionará. PHP 5.1 no lo hará.

Entonces, la verdadera pregunta (s) es (son):

¿Cómo reparo mi PHP para que sea la última versión estable (5.3.9 según PHP.net)? ¿Cómo hago que mi máquina CentOS funcione más como Ubuntu para no tener que lidiar con esto nuevamente?

Muchas gracias.

EDITAR: CentOS 5.7 fue instalado por una empresa de hosting la semana pasada, por lo que no sé por qué habrían instalado una versión anterior de CentOS, en lugar de la más reciente. Necesito PHP 3.2 al menos, así que agradezco las sugerencias sobre cómo hacerlo. No estoy muy familiarizado con los paquetes y repositorios, pero parece que cualquiera puede iniciar un repositorio y, por lo tanto, me preocupa la instalación de cosas desde algún repositorio aleatorio que podría infectar el servidor.

Buttle Butkus
fuente
1
Uno puede señalar que, si se está apegando a una versión LTS de Ubuntu, Hardy está en php 5.2 y Lucid está en un 5.3.2 ligeramente no bastante brillante. Hay versiones similares "antiguas" del servidor mysql en los repositorios estándar de Ubuntu LTS. RHEL5 salió un año antes que Hardy, por lo que no es sorprendente que esté en php 5.1. RHEL y Ubuntu LTS están diseñados para la estabilidad del paquete. Si desea algo más actualizado, use Fedora o Ubuntu no LTS.
cjc
Aquí es donde puede actualizar su versión de PHP a PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Respuestas:

11

CentOS es un DERIVADO del muy conservador Red Hat Enterprise Linux, por lo que las actualizaciones de paquetes generalmente se retrasarán aún más que RHEL. Los paquetes en cualquiera de las distribuciones serán un poco más antiguos.

Si está ejecutando CentOS 5, debe probar CentOS 6 para ver si se adapta a sus necesidades.

Si necesita algo un poco más avanzado que CentOS 6, debe buscar en Fedora.

Seguimiento: CentOS se ha incorporado "internamente" y está más integrado. Las versiones más recientes de CentOS verán los beneficios de un ciclo de lanzamiento más estricto, pero para versiones más antiguas esta respuesta seguirá siendo válida.

Magallanes
fuente
2
La cantidad de información errónea en este hilo es absolutamente asombrosa. CentOS 5 ha contenido PHP 5.3 durante más de un año, pero no es la versión instalada por defecto debido a preocupaciones de ABI. yum install php53te pondrá en tu camino.
jgoldschrafe
Cierto. Decidí enseñarle a pescar en lugar de darle un pez. Y supongo que de hecho fue un poco sarcástico, pero he dormido un par de horas en 36 y tampoco dormiré mucho este fin de semana debido a la interrupción de SPOF.
Magellan
2
@jgoldschrafe - Sugeriría escribir una respuesta propia - eso sería más productivo que solo comentar con correcciones.
EEAA
Es un servidor dedicado en una empresa de hosting. Personalmente, hubiera querido tener el servidor en nuestra propiedad, pero el jefe se sintió más seguro de esta manera. Me pregunto por qué la compañía de hosting instalaría CentOS 5.7 en lugar de la última.
Buttle Butkus
44
@jgoldschrafe, para mí la pregunta, no parecía ser específicamente sobre la versión php. Parece que la pregunta era sobre las políticas conservadoras de publicación, que creo que la publicación intenta responder. Creo que es un estiramiento llamar a esta información faltante.
Zoredache
6

No están desactualizados; son lo último que CentOS 5 tiene en sus repositorios.

Red Hat (y Ubuntu para el caso) nunca, nunca publique una nueva versión principal de software en sus repositorios de paquetes para una versión de sistema operativo dada, en aras de la estabilidad: no desea ejecutar una actualización y de repente su configuración no trabajo.

En su lugar, respaldan las correcciones de seguridad y las correcciones de errores importantes en la versión del software que era 'estable' cuando se lanzó el sistema operativo, evitando la introducción de nuevas características (y sus errores).

Como estás en CentOS 5, los repositorios oficiales tienen algunas versiones bastante antiguas de cosas. Pero no temas, probablemente puedas encontrar fácilmente un repositorio de terceros con las versiones de software que necesitas.

O, ¿por qué no actualizar a 6?

Shane Madden
fuente
Esto no es completamente cierto: PHP 5.3 está en los repositorios principales y solo necesita hacerlo yum install php53.
jgoldschrafe
1
@jgoldschrafe Buena llamada. Aunque parece que aún puede ser necesario un repositorio de terceros para MySQL más nuevos.
Shane Madden
"O, ¿por qué no actualizar a 6?" La mejor pregunta es ¿por qué SingleHop nos dio 5.7 en el servidor? @jgoldschrafe, ¿eso reemplazará los paquetes instalados o tengo que eliminarlos manualmente?
Buttle Butkus
CentOS 6 estuvo disponible hace solo unos meses. Si la caja se ordenó a principios del año pasado, habría sido 5.7. Si tiene una opción para volver a crear imágenes de la máquina con CentOS 6, ciertamente puede hacerlo.
cjc
@cjc Se acaba de ordenar hace aproximadamente 2 semanas. Ya hice FTP de unos 80 GB, así que creo que sería más fácil hacer que esta instalación funcione. Estoy tratando de usar lo que jgoldschrafe recomienda: yum install php53, pero no funciona porque php ya está instalado.
Buttle Butkus
4

Yo diría que desinstale CentOS e instale Ubuntu, si eso es lo que quiere usar. Pero debe ser una versión anterior de CentOS que use. CentOS 6.2 usa PHP 5.3 y MySQL 5.1.

Puede usar el repositorio Remi para obtener versiones más recientes de Apache / PHP / MySQL

Y no haces que tu máquina CentOS funcione más como Ubuntu, porque no es Ubuntu. Es como decir "¿Cómo hago que mi Chrysler conduzca más como un Ford"?


Respuesta actualizada:

Obtuve algunos votos negativos sobre esto, así que creo que mis intenciones han sido mal entendidas, déjenme tratar de corregir eso.

Configuré un VPS en nuestro entorno e instalé los paquetes, así que debería estar donde estás ahora:

[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

En mi primera respuesta, supuse que querías las últimas versiones, luego deberías usar el repositorio de Remi como he dicho anteriormente. Sin embargo, si la versión PHP 5.3 dentro de centOS está bien (5.3.3), siga leyendo.

Al intentar instalar php53, se queja de que hay un conflicto, ya que este paquete cubrirá las mismas cosas que el paquete PHP 5.1. Para resolver esto, necesita eliminar todos los paquetes relacionados con PHP para comenzar:

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

Lo siguiente que debe hacer es instalar los paquetes equivalentes con 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

Entonces, PHP fue bastante fácil. Pero MySQL es otra historia, ya que MySQL 5.0 es el único MySQL en los repositorios CentOS predeterminados. Ejecuto la versión de 64 bits de CentOS, si no es necesario, debe ajustar lo siguiente para que se ajuste a 32 bits.

Hay varias formas de hacer esto, pero voy a ir con el repositorio de Remi. Ha existido durante años y el mantenimiento es más fácil con un repositorio que el uso de archivos RPM simples.

Remi requiere el repositorio EPEL, así que comience instalando eso:

[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%]

Luego, instalas el 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%]

A continuación, elimine el servidor MySQL actual (de lo contrario, obtendrá conflictos al intentar instalar el nuevo). ¡NOTA! Si tiene bases de datos allí, haga una copia de seguridad antes de hacer esto.

[root@centos5 /]# yum remove mysql*

Luego puede continuar e instalar MySQL desde el repositorio de Remi:

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

Ahora, cuando intentas iniciar MySQL, puede fallar porque el viejo mysql dejó algunas cosas atrás, y esto puede ser un poco doloroso de eliminar. En mi caso aquí, necesitaba eliminar algunas cosas para que funcionara. Estos lo hicieron por mí:

# 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
fuente
1
Bien, es básicamente una cuestión de si hay una forma de obtener paquetes actualizados en lugar de paquetes desactualizados.
Buttle Butkus
@ButtleButkus No sé si recibirás una notificación cuando actualice, así que escribo un comentario para asegurarme de que lo hagas :)
Frands Hansen
Acabo de ver tu actualización. Resolví el problema y parece que tu respuesta podría coincidir con lo que terminé haciendo. Sin embargo, necesito revisar mis notas.
Buttle Butkus
1
Hay un par de fuentes más para rpms actualizados. Rackspace IUS iuscommunity.org/pages/About.html y webtatic webtatic.com/projects/yum-repository
txyoji