Warum werden veraltete Pakete von yum unter CentOS installiert? (speziell PHP 5.1) Wie behebe ich das?

14

Ich arbeite an einem neuen CentOS-Server und finde es äußerst ärgerlich, dass yum nicht so reibungslos und brillant funktioniert wie "apt-get install" auf Ubuntu.

Bei der Installation eines LAMP-Stacks habe ich Folgendes ausgeführt:

$ yum install php
$ yum install mysql

Außerdem:

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

Jetzt läuft:

$ rpm -qa | grep php

... zeigt, dass ich alle Arten von PHP 5.1.6-Paketen installiert habe und mindestens 5.2 benötige. Darüber hinaus sehe ich, dass es MySQL 5.0.77 installiert, obwohl die aktuelle Version 5.5.20 ist. Aber hoffentlich wird mysql 5.0 funktionieren. PHP 5.1 wird nicht.

Die eigentliche Frage lautet also:

Wie behebe ich mein PHP, um es zur neuesten stabilen Version zu machen (5.3.9 laut PHP.net)? Wie kann ich meine CentOS-Maschine eher Ubuntu-ähnlich machen, damit ich mich nicht noch einmal darum kümmern muss?

Vielen Dank.

EDIT: CentOS 5.7 wurde letzte Woche von einem Hosting-Unternehmen installiert, daher weiß ich nicht, warum es eine ältere Version von CentOS anstelle der neuesten installiert hätte. Ich brauche mindestens PHP 3.2, daher schätze ich die Vorschläge, wie das geht. Ich bin nicht sehr vertraut mit Paketen und Repositorys, aber es scheint, dass jeder ein Repository starten kann. Daher mache ich mir Sorgen, Dinge von einem zufälligen Repository zu installieren, die den Server infizieren könnten.

Buttle Butkus
quelle
1
Man kann darauf hinweisen, dass, wenn Sie sich an eine LTS-Version von Ubuntu halten, Hardy auf PHP 5.2 und Lucid auf einer etwas nicht ganz glänzenden neuen Version 5.3.2 ist. Es gibt ähnlich "alte" Versionen von MySQL-Server in den Standard-Ubuntu-LTS-Repos. RHEL5 kam ein Jahr vor Hardy heraus, es ist also nicht verwunderlich, dass es auf PHP 5.1 ist. RHEL und Ubuntu LTS sind auf Paketstabilität ausgelegt. Wenn Sie auf dem neuesten Stand sein möchten, verwenden Sie Fedora oder Ubuntu, das nicht von LTS stammt.
cjc
Hier können Sie Ihre PHP-Version auf PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Antworten:

11

CentOS ist ein DERIVAT des sehr konservativen Red Hat Enterprise Linux, daher werden Paketaktualisierungen in der Regel noch weiter verzögert als bei RHEL. Pakete in beiden Distributionen werden etwas älter sein.

Wenn Sie CentOS 5 ausführen, sollten Sie CentOS 6 ausprobieren, um festzustellen, ob es Ihren Anforderungen entspricht.

Wenn Sie etwas benötigen, das aktueller ist als CentOS 6, sollten Sie sich Fedora ansehen.

Follow-up: CentOS wurde "in-house" gebracht und ist enger integriert. Neuere CentOS-Releases bieten die Vorteile eines kürzeren Release-Zyklus. Bei älteren Releases gilt diese Antwort jedoch weiterhin.

Magellan
quelle
2
Die Menge an Fehlinformationen in diesem Thread ist absolut verblüffend. CentOS 5 enthält seit über einem Jahr PHP 5.3, ist jedoch aus Gründen der ABI-Problematik nicht die standardmäßig installierte Version. yum install php53wird dich auf den Weg bringen.
Jgoldschrafe
Wahr. Ich beschloss, ihm das Angeln beizubringen, anstatt ihm einen Fisch zu geben. Und ich nehme an, es war tatsächlich etwas snarky, aber ich habe in 36 Stunden ein paar Stunden geschlafen und werde dieses Wochenende auch wegen SPOF-Ausfalls nicht viel schlafen.
Magellan
2
@jgoldschrafe - Ich würde vorschlagen, eine eigene Antwort zu schreiben - das wäre produktiver, als nur mit Korrekturen zu kommentieren.
EEAA
Es ist ein dedizierter Server bei einem Hosting-Unternehmen. Persönlich hätte ich den Server auf unserem Grundstück haben wollen, aber der Chef fühlte sich auf diese Weise sicherer. Ich frage mich, warum das Hosting-Unternehmen CentOS 5.7 anstelle des neuesten installieren würde.
Buttle Butkus
4
@jgoldschrafe, für mich ging es bei der Frage offenbar nicht speziell um die PHP-Version. Anscheinend handelte es sich bei der Frage um die konservativen Veröffentlichungsrichtlinien, auf die der Beitrag meines Erachtens zu antworten versucht. Ich denke, es ist eine Anstrengung, diese Miss-Information zu nennen.
Zoredache
6

Sie sind nicht veraltet; Sie sind die neuesten, die CentOS 5 in seinen Repositories hat.

Red Hat (und Ubuntu im Übrigen) veröffentlichen aus Stabilitätsgründen niemals eine neue Hauptversion der Software in ihren Paket-Repositorys für eine bestimmte Betriebssystemversion - Sie möchten kein Upgrade ausführen und haben plötzlich Ihre Konfiguration nicht mehr Arbeit.

Stattdessen werden Sicherheitskorrekturen und wichtige Bugfixes in die Version der Software zurückportiert, die zum Zeitpunkt der Veröffentlichung des Betriebssystems "stabil" war, wodurch die Einführung neuer Funktionen (und ihrer Fehler) vermieden wurde.

Da Sie unter CentOS 5 arbeiten, gibt es in den offiziellen Repositories einige relativ alte Versionen. Aber keine Angst - Sie können wahrscheinlich problemlos ein Repository eines Drittanbieters mit den von Ihnen benötigten Softwareversionen finden.

Oder warum nicht auf 6 upgraden?

Shane Madden
quelle
Dies ist nicht ganz richtig - PHP 5.3 ist in den Kern-Repos enthalten und das müssen Sie nur yum install php53.
Jgoldschrafe
1
@jgoldschrafe Guter Anruf. Obwohl es so aussieht, als ob für neueres MySQL noch ein Repo von Drittanbietern benötigt wird.
Shane Madden
"Oder warum nicht auf 6 upgraden?" Die bessere Frage ist, warum uns SingleHop 5.7 auf dem Server gegeben hat. Ersetzt @jgoldschrafe die installierten Pakete oder muss ich sie manuell entfernen?
Buttle Butkus
CentOS 6 wurde erst vor wenigen Monaten verfügbar. Wenn die Box früher im letzten Jahr bestellt worden wäre, wäre es 5,7 gewesen. Wenn Sie die Option haben, das Image der Maschine mit CentOS 6 erneut zu erstellen, können Sie dies auf jeden Fall tun.
cjc
@cjc Es wurde gerade vor etwa 2 Wochen bestellt. Ich habe bereits ca. 80 GB per FTP übertragen, daher denke ich, dass es einfacher wäre, diese Installation einfach zum Laufen zu bringen. Ich versuche zu verwenden, was jgoldschrafe empfiehlt: yum install php53, aber es funktioniert nicht, weil PHP bereits installiert ist.
Buttle Butkus
4

Ich würde sagen, deinstalliere CentOS und installiere Ubuntu, wenn du das verwenden möchtest. Es muss sich jedoch um eine ältere Version von CentOS handeln, die Sie verwenden. CentOS 6.2 verwendet PHP 5.3 und MySQL 5.1.

Sie können das Remi-Repository verwenden , um neuere Versionen von Apache / PHP / MySQL zu erhalten

Und Sie lassen Ihre CentOS-Maschine nicht mehr wie Ubuntu arbeiten, weil es nicht Ubuntu ist. Es ist, als würde man sagen: "Wie kann ich meinen Chrysler dazu bringen, mehr wie ein Ford zu fahren?"


Aktualisierte Antwort:

Ich habe ein paar Abstriche gemacht, daher denke ich, dass meine Absichten missverstanden wurden. Lassen Sie mich versuchen, das zu korrigieren.

Ich habe ein VPS in unserer Umgebung eingerichtet und die Pakete installiert, daher sollte ich dort sein, wo Sie sich gerade befinden:

[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

In meiner ersten Antwort ging ich davon aus, dass Sie die neuesten Releases haben möchten, und dann sollten Sie das Remi-Repository wie oben angegeben verwenden. Wenn jedoch die PHP 5.3-Version in centOS in Ordnung ist (5.3.3), lesen Sie weiter.

Beim Versuch, php53 zu installieren, wird ein Konflikt beanstandet, da dieses Paket die gleichen Dinge abdeckt wie das PHP 5.1-Paket. Um dies zu lösen, müssen Sie zunächst alle PHP-bezogenen Pakete entfernen:

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

Als nächstes installieren Sie die entsprechenden Pakete mit 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

PHP war also ganz einfach. Aber MySQL ist eine andere Geschichte, da MySQL 5.0 das einzige MySQL in den Standard-CentOS-Repositorys ist. Ich verwende die 64-Bit-Version von CentOS. Wenn Sie dies nicht tun, müssen Sie stattdessen Folgendes anpassen, um 32-Bit zu unterstützen.

Es gibt verschiedene Möglichkeiten, dies zu tun, aber ich werde mich für das Remi-Repository entscheiden. Es gibt es schon seit Jahren und die Wartung ist mit einem Repo einfacher als mit einfachen RPM-Dateien.

Remi benötigt das EPEL-Repository. Installieren Sie zunächst Folgendes:

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

Als Nächstes installieren Sie das 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%]

Als nächstes entfernen Sie den aktuellen MySQL-Server (andernfalls treten Konflikte auf, wenn Sie versuchen, den neuen zu installieren). HINWEIS! Wenn Sie Datenbanken dort haben, machen Sie vorher ein Backup!

[root@centos5 /]# yum remove mysql*

Dann können Sie fortfahren und MySQL aus dem Remi-Repository installieren:

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

Wenn Sie nun versuchen, MySQL zu starten, schlägt dies möglicherweise fehl, weil das alte MySQL einige Dinge zurückgelassen hat, und dies kann ziemlich schmerzhaft sein, um es loszuwerden. In meinem Fall musste ich einige Dinge entfernen, damit es funktionierte. Diese haben es für mich getan:

# 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
quelle
1
Welp, es ist im Grunde eine Frage, ob es eine Möglichkeit gibt, aktuelle Pakete anstatt veralteter Pakete zu erhalten.
Buttle Butkus
@ ShuttleButkus Ich weiß nicht, ob Sie benachrichtigt werden, wenn ich aktualisiere, also schreibe ich einen Kommentar, um sicherzustellen, dass Sie dies tun :)
Frands Hansen
Hab gerade dein Update gesehen. Ich habe das Problem gelöst und Ihre Antwort scheint zu dem zu passen, was ich letztendlich getan habe. Müssen meine Notizen jedoch noch einmal überprüfen.
Buttle Butkus
1
Es gibt noch ein paar Quellen für aktuelle RPMs. Rackspace IUS iuscommunity.org/pages/About.html und webtatic webtatic.com/projects/yum-repository
txyoji