Dlaczego nieaktualne pakiety są instalowane przez yum na CentOS? (konkretnie PHP 5.1) Jak to naprawić?


14

Pracuję na świeżym serwerze CentOS i jestem bardzo zirytowany tym, że mniam nie działa tak płynnie i genialnie jak „apt-get install” na Ubuntu.

Instalując stos LAMP, uruchomiłem następujące:

$ yum install php
$ yum install mysql

Ponadto:

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

Teraz działa:

$ rpm -qa | grep php

... pokazuje, że mam zainstalowane wszystkie rodzaje pakietów PHP 5.1.6 i potrzebuję minimum 5.2. Ponadto widzę, że zainstalował mysql 5.0.77, mimo że bieżąca wersja to 5.5.20. Ale mam nadzieję, że mysql 5.0 będzie działał. PHP 5.1 nie będzie.

Tak więc prawdziwe pytanie brzmi:

Jak naprawić PHP, aby był najnowszą stabilną wersją (5.3.9 według PHP.net)? Jak sprawić, aby moja maszyna CentOS działała bardziej jak Ubuntu, aby nie musiałem się z tym ponownie zajmować?

Dziękuję bardzo.

EDYCJA: CentOS 5.7 został zainstalowany w zeszłym tygodniu przez firmę hostingową, więc nie wiem, dlaczego zainstalowałyby starszą wersję CentOS, a nie najnowszą. Potrzebuję przynajmniej PHP 3.2, więc doceniam sugestie, jak to zrobić. Nie znam się zbyt dobrze na pakietach i repozytoriach, ale wygląda na to, że każdy może uruchomić repozytorium, dlatego martwię się instalowaniem rzeczy z jakiegoś losowego repozytorium, które mogłoby zainfekować serwer.


1
Można zauważyć, że jeśli trzymasz się wersji Ubuntu w wersji LTS, Hardy używa php 5.2, a Lucid jest w nieco niezbyt błyszczącej wersji 5.3.2. Istnieją podobnie „stare” wersje serwera mysql w standardowych repozytoriach Ubuntu LTS. RHEL5 ukazał się rok przed Hardy, więc nic dziwnego, że jest na php 5.1. RHEL i Ubuntu LTS są zbudowane dla stabilności pakietu. Jeśli chcesz czegoś bardziej aktualnego, użyj Fedory lub Ubuntu innej niż LTS.
cjc

Tutaj możesz zaktualizować swoją wersję PHP do PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Odpowiedzi:


11

CentOS jest pochodną bardzo konserwatywnego systemu Red Hat Enterprise Linux, więc aktualizacje pakietów będą generalnie opóźnione jeszcze bardziej niż RHEL. Pakiety w dowolnej dystrybucji będą nieco starsze.

Jeśli korzystasz z CentOS 5, powinieneś wypróbować CentOS 6, aby sprawdzić, czy odpowiada Twoim potrzebom.

Jeśli potrzebujesz czegoś bardziej nowocześniejszego niż CentOS 6, powinieneś zajrzeć do Fedory.

Dalsze działania: CentOS został wprowadzony „wewnętrznie” i jest ściślej zintegrowany. Nowsze wersje CentOS zobaczą zalety ściślejszego cyklu wydań, ale w przypadku starszych wersji ta odpowiedź będzie nadal aktualna.


2
Ilość dezinformacji w tym wątku jest absolutnie oszałamiająca. CentOS 5 zawiera PHP 5.3 od ponad roku, ale nie jest to wersja domyślnie instalowana z powodu obaw ABI. yum install php53zabierze cię na swoją drogę.
jgoldschrafe

Prawdziwe. Postanowiłem nauczyć go, jak łowić ryby zamiast dawać mu ryby. I przypuszczam, że było to trochę ponure, ale miałem 36 godzin snu w 36 i nie będę spał dużo w ten weekend z powodu awarii SPOF.
Magellan

2
@ jgoldschrafe - proponuję napisać własną odpowiedź - byłoby to bardziej produktywne niż zwykłe komentowanie z poprawkami.
EEAA

Jest to serwer dedykowany w firmie hostingowej. Osobiście chciałbym mieć serwer na naszej posesji, ale szef czuł się w ten sposób bezpieczniejszy. Zastanawiam się, dlaczego firma hostingowa zainstalowałaby CentOS 5.7 zamiast najnowszej.
Buttle Butkus

4
@jgoldschrafe, dla mnie pytanie, nie wydaje się dotyczyć konkretnie wersji php. Wygląda na to, że pytanie dotyczyło konserwatywnych zasad wydania, na które, jak sądzę, post próbuje odpowiedzieć. Myślę, że nazywanie tej informacji o błędzie jest strech.
Zoredache

6

Nie są przestarzałe; są najnowszymi wersjami CentOS 5 w swoich repozytoriach.

Red Hat (i Ubuntu w tym przypadku) nigdy, nigdy, nigdy nie publikuje nowej głównej wersji oprogramowania w swoich repozytoriach pakietów dla danej wersji systemu operacyjnego, ze względu na stabilność - nie chcesz uruchamiać aktualizacji i nagle Twoja konfiguracja nie praca.

Zamiast tego wprowadzają poprawki bezpieczeństwa i ważne poprawki do wersji oprogramowania, która była „stabilna” w momencie wydania systemu operacyjnego, unikając wprowadzania nowych funkcji (i ich błędów).

Ponieważ korzystasz z CentOS 5, oficjalne repozytoria zawierają kilka dość starych wersji rzeczy. Ale nie bój się - prawdopodobnie możesz łatwo znaleźć repozytorium strony trzeciej z potrzebnymi wersjami oprogramowania.

Lub dlaczego nie uaktualnić do 6?


To nie do końca prawda - PHP 5.3 znajduje się w podstawowych repozytoriach i po prostu musisz yum install php53.
jgoldschrafe

1
@jgoldschrafe Good call. Chociaż wygląda na to, że repozytorium strony trzeciej może być nadal potrzebne dla nowszej wersji MySQL.
Shane Madden

„Albo dlaczego nie uaktualnić do 6?” Lepszym pytaniem jest, dlaczego SingleHop dał nam 5.7 na serwerze? @ jgoldschrafe czy zastąpi zainstalowane pakiety, czy też muszę je usunąć ręcznie?
Buttle Butkus

CentOS 6 stał się dostępny zaledwie kilka miesięcy temu. Gdyby pudełko zostało zamówione wcześniej w zeszłym roku, byłoby to 5,7. Jeśli masz opcję ponownego zobrazowania maszyny za pomocą CentOS 6, na pewno możesz to zrobić.
cjc

@cjc Zostało to zamówione około 2 tygodni temu. Mam już FTP około 80 GB, więc myślę, że łatwiej byłoby po prostu uruchomić tę instalację. Próbuję użyć tego, co zalecił jgoldschrafe: yum zainstaluj php53, ale to nie działa, ponieważ php jest już zainstalowany.
Buttle Butkus

4

Powiedziałbym, że odinstaluj CentOS i zainstaluj Ubuntu, jeśli tego chcesz użyć. Ale musi to być starsza wersja używanego CentOS. CentOS 6.2 używa PHP 5.3 i MySQL 5.1.

Możesz użyć repozytorium Remi, aby uzyskać nowsze wersje Apache / PHP / MySQL

I nie sprawiasz, że twoja maszyna CentOS działa bardziej jak Ubuntu, ponieważ to nie jest Ubuntu. To tak, jakby powiedzieć „Jak sprawić, by mój Chrysler prowadził bardziej jak Ford”.


Zaktualizowana odpowiedź:

Mam trochę głosów w tej sprawie, więc myślę, że moje intencje zostały źle zrozumiane, pozwólcie, że spróbuję to poprawić.

Skonfigurowałem VPS w naszym środowisku i zainstalowałem pakiety, więc powinienem być tam, gdzie teraz jesteś:

[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

W mojej pierwszej odpowiedzi założyłem, że chcesz mieć najnowsze wersje, a następnie powinieneś użyć repozytorium Remi, jak już wspomniałem powyżej. Jeśli jednak wersja PHP 5.3 w CentOS jest w porządku (5.3.3), czytaj dalej.

Próbując zainstalować php53, skarży się na konflikt, ponieważ ten pakiet obejmie te same rzeczy, co pakiet PHP 5.1. Aby rozwiązać ten problem, musisz na początku usunąć wszystkie pakiety związane z PHP:

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

Następnie musisz zainstalować równoważne pakiety z 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 było więc dość łatwe. Ale MySQL to inna historia, ponieważ MySQL 5.0 jest jedynym MySQL w domyślnych repozytoriach CentOS. Korzystam z 64-bitowej wersji CentOS, jeśli nie, musisz dopasować poniższe, aby pasowały do ​​32-bitowej.

Można to zrobić na kilka sposobów, ale przejdę do repozytorium Remi. Jest już od lat, a obsługa repo jest łatwiejsza niż przy użyciu zwykłych plików RPM.

Remi wymaga repozytorium EPEL, więc zacznij od zainstalowania:

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

Następnie instalujesz RPM Remi repo

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

Następnie usuń bieżący serwer MySQL (w przeciwnym razie wystąpią konflikty podczas próby zainstalowania nowego). UWAGA! Jeśli masz tam bazy danych, wykonaj kopię zapasową, zanim to zrobisz!

[root@centos5 /]# yum remove mysql*

Następnie możesz przejść do instalacji MySQL z repozytorium Remi:

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

Teraz, gdy próbujesz uruchomić MySQL, może się to nie udać, ponieważ stary mysql zostawił pewne rzeczy za sobą, a pozbycie się tego może być trochę bolesne. W moim przypadku musiałem usunąć niektóre rzeczy, aby działało. Zrobili to dla mnie:

# 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

1
Welp, w zasadzie chodzi o to, czy istnieje sposób na uzyskanie aktualnych pakietów, a nie na nieaktualne.
Buttle Butkus

@ButtleButkus Nie wiem, czy dostaniesz powiadomienie podczas aktualizacji, więc piszę komentarz, aby się upewnić :)
Frands Hansen

Właśnie zobaczyłem twoją aktualizację. Rozwiązałem problem, a twoja odpowiedź wygląda tak, jakby pasowała do tego, co skończyłem. Muszę jednak dokładnie sprawdzić moje notatki.
Buttle Butkus

1
Istnieje kilka innych źródeł aktualnych RPM. Rackspace IUS iuscommunity.org/pages/About.html i webtatic webtatic.com/projects/yum-repository
txyoji
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.