Pourquoi les packages obsolètes sont-ils installés par yum sur CentOS? (spécifiquement PHP 5.1) Comment résoudre ce problème?

14

Je travaille sur un nouveau serveur CentOS et je suis extrêmement ennuyé de découvrir que yum ne fonctionne pas aussi facilement et brillamment que "apt-get install" sur Ubuntu.

En installant une pile LAMP, j'ai exécuté ce qui suit:

$ yum install php
$ yum install mysql

En outre:

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

En cours d'exécution:

$ rpm -qa | grep php

... montre que j'ai toutes sortes de paquets php 5.1.6 installés et que j'ai besoin de 5.2 au minimum. De plus, je vois qu'il a installé mysql 5.0.77, même si la version actuelle est 5.5.20. Mais espérons que mysql 5.0 fonctionnera. PHP 5.1 ne le fera pas.

Donc la vraie question (s) est (sont):

Comment réparer mon PHP pour en faire la dernière version stable (5.3.9 selon PHP.net)? Comment faire en sorte que ma machine CentOS fonctionne davantage comme Ubuntu pour que je ne doive plus y faire face?

Merci beaucoup.

EDIT: CentOS 5.7 a été installé par une société d'hébergement la semaine dernière, donc je ne sais pas pourquoi ils auraient installé une ancienne version de CentOS, plutôt que la plus récente. J'ai besoin de PHP 3.2 au moins, donc j'apprécie les suggestions sur la façon de le faire. Je ne suis pas très familier avec les packages et les référentiels, mais il semble que n'importe qui puisse démarrer un référentiel et je suis donc préoccupé par l'installation de choses à partir d'un référentiel aléatoire qui pourraient infecter le serveur.

Buttle Butkus
la source
1
On peut souligner que, si vous vous en tenez à une version LTS d'Ubuntu, Hardy est sur php 5.2 et Lucid sur une version 5.3.2 légèrement pas assez brillante. Il existe également des "anciennes" versions du serveur mysql dans les référentiels Ubuntu LTS standard. RHEL5 est sorti un an avant Hardy, il n'est donc pas surprenant qu'il soit en php 5.1. RHEL et Ubuntu LTS sont conçus pour la stabilité des packages. Si vous voulez quelque chose de plus à jour, utilisez Fedora ou Ubuntu non LTS.
cjc
Voici où vous pouvez mettre à jour votre version PHP vers PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Réponses:

11

CentOS est un DÉRIVÉ du très conservateur Red Hat Enterprise Linux, donc les mises à jour des packages seront généralement retardées encore plus loin que RHEL. Les packages dans l'une ou l'autre distribution vont être un peu plus anciens.

Si vous utilisez CentOS 5, vous devez essayer CentOS 6 pour voir s'il convient à vos besoins.

Si vous avez besoin de quelque chose d'un peu plus avancé que CentOS 6, vous devriez regarder Fedora.

Suivi: CentOS a été introduit "en interne" et est plus étroitement intégré. Les versions plus récentes de CentOS verront les avantages d'un cycle de version plus serré, mais pour les versions plus anciennes, cette réponse restera vraie.

Magellan
la source
2
La quantité de désinformation dans ce fil est absolument stupéfiante. CentOS 5 contient PHP 5.3 depuis plus d'un an maintenant, mais ce n'est pas la version installée par défaut en raison de problèmes ABI. yum install php53vous fera avancer.
jgoldschrafe
Vrai. J'ai décidé de lui apprendre à pêcher au lieu de lui donner un poisson. Et je suppose que c'était en fait légèrement sarcastique, mais j'ai dormi quelques heures sur 36 et je ne dormirai pas beaucoup ce week-end en raison d'une panne de SPOF.
Magellan
2
@jgoldschrafe - Je suggère d'écrire votre propre réponse - ce serait plus productif que de simplement commenter avec des corrections.
EEAA
Il s'agit d'un serveur dédié dans une société d'hébergement. Personnellement, j'aurais voulu avoir le serveur sur notre propriété, mais le patron se sentait plus en sécurité de cette façon. Je me demande pourquoi la société d'hébergement installerait CentOS 5.7 au lieu de la dernière.
Buttle Butkus
4
@jgoldschrafe, pour moi la question, ne semblait pas concerner spécifiquement la version php. Il semble bien que la question portait sur les politiques de publication conservatrices, auxquelles je pense que l'article tente de répondre. Je pense que c'est un étirement d'appeler cette information manquée.
Zoredache
6

Ils ne sont pas obsolètes; ce sont les derniers que CentOS 5 possède dans ses référentiels.

Red Hat (et Ubuntu d'ailleurs) ne publie jamais, jamais une nouvelle version majeure de logiciel dans leurs référentiels de packages pour une version de système d'exploitation donnée, par souci de stabilité - vous ne voulez pas exécuter une mise à niveau et tout à coup votre configuration ne travail.

Au lieu de cela, ils rétroportent des correctifs de sécurité et des correctifs de bogues importants dans la version du logiciel qui était «stable» lorsque le système d'exploitation a été publié, évitant l'introduction de nouvelles fonctionnalités (et leurs bogues).

Puisque vous êtes sur CentOS 5, les dépôts officiels ont des versions assez anciennes de choses. Mais n'ayez crainte - vous pouvez probablement facilement trouver un référentiel tiers avec les versions de logiciels dont vous avez besoin.

Ou, pourquoi ne pas passer à 6?

Shane Madden
la source
Ce n'est pas tout à fait vrai - PHP 5.3 est dans les dépôts de base et vous avez juste besoin de le faire yum install php53.
jgoldschrafe
1
@jgoldschrafe Bon appel. Bien qu'il semble qu'un dépôt tiers soit toujours nécessaire pour les nouveaux MySQL.
Shane Madden
"Ou, pourquoi ne pas passer à 6?" La meilleure question est de savoir pourquoi SingleHop nous a donné 5.7 sur le serveur? @jgoldschrafe cela remplacera-t-il les packages installés ou dois-je les supprimer manuellement?
Buttle Butkus
CentOS 6 est devenu disponible il y a seulement quelques mois. Si la boîte avait été commandée au début de l'année dernière, elle aurait été de 5,7. Si vous avez la possibilité de recréer l'image de la machine avec CentOS 6, vous pouvez certainement le faire.
cjc
@cjc Il vient d'être commandé il y a environ 2 semaines. J'ai déjà FTP sur environ 80 Go, donc je pense qu'il serait plus facile de faire fonctionner cette installation. J'essaie d'utiliser ce que jgoldschrafe a recommandé: yum install php53, mais cela ne fonctionne pas car php est déjà installé.
Buttle Butkus
4

Je dirais désinstaller CentOS et installer Ubuntu, si c'est ce que vous souhaitez utiliser. Mais il doit s'agir d'une ancienne version de CentOS que vous utilisez. CentOS 6.2 utilise PHP 5.3 et MySQL 5.1.

Vous pouvez utiliser le dépôt Remi pour obtenir des versions plus récentes d'Apache / PHP / MySQL

Et vous ne faites pas fonctionner votre machine CentOS plus comme Ubuntu, car ce n'est pas Ubuntu. C'est comme dire "Comment faire pour que ma Chrysler conduise plus comme une Ford".


Réponse mise à jour:

J'ai obtenu quelques votes négatifs à ce sujet, donc je pense que mes intentions ont été mal comprises, permettez-moi d'essayer de corriger cela.

J'ai installé un VPS dans notre environnement et installé les packages, donc je devrais être là où vous en êtes en ce moment:

[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

Dans ma première réponse, j'ai supposé que vous vouliez les dernières versions, alors vous devriez utiliser le dépôt Remi comme je l'ai indiqué ci-dessus. Cependant, si la version PHP 5.3 de centOS est correcte (5.3.3), poursuivez votre lecture.

Lorsque vous essayez d'installer php53, il se plaint qu'il y a un conflit, car ce paquet couvrira les mêmes choses que le paquet PHP 5.1. Pour résoudre ce problème, vous devez d'abord supprimer tous les packages liés à PHP:

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

La prochaine chose à faire est d'installer les packages équivalents avec 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

Donc, PHP était assez facile. Mais MySQL est une autre histoire, puisque MySQL 5.0 est le seul MySQL dans les référentiels CentOS par défaut. J'exécute la version 64 bits de CentOS, si vous n'avez pas besoin d'ajuster ce qui suit pour s'adapter à la place 32 bits.

Il existe plusieurs façons de le faire, mais je vais utiliser le référentiel Remi. Il existe depuis des années et la maintenance est plus facile avec un dépôt que d'utiliser des fichiers RPM standard.

Remi nécessite le référentiel EPEL alors commencez par installer cela:

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

Ensuite, vous installez le 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%]

Ensuite, vous supprimez le serveur MySQL actuel (sinon vous obtiendrez des conflits en essayant d'installer le nouveau). REMARQUE! Si vous avez des bases de données dessus, faites une sauvegarde avant de faire ça!

[root@centos5 /]# yum remove mysql*

Ensuite, vous pouvez continuer et installer MySQL à partir du référentiel Remi:

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

Maintenant, lorsque vous essayez de démarrer MySQL, il peut échouer parce que l'ancien mysql a laissé certaines choses derrière, et cela peut être assez difficile à éliminer. Dans mon cas ici, je devais supprimer certaines choses pour le faire fonctionner. Ceux-ci l'ont fait pour moi:

# 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
la source
1
Welp, c'est essentiellement une question de savoir s'il existe ou non un moyen d'obtenir des packages à jour plutôt que des packages obsolètes.
Buttle Butkus
@ButtleButkus Je ne sais pas si vous recevez une notification lorsque je mets à jour, donc j'écris un commentaire pour vous assurer que vous le faites :)
Frands Hansen
Je viens de voir votre mise à jour. J'ai résolu le problème et votre réponse semble correspondre à ce que j'ai fini par faire. Besoin de revérifier mes notes cependant.
Buttle Butkus
1
Il existe quelques autres sources de rpms à jour. Rackspace IUS iuscommunity.org/pages/About.html et webtatic webtatic.com/projects/yum-repository
txyoji