Чому застарілі пакети встановлюються yum на CentOS? (зокрема PHP 5.1) Як виправити?


14

Я працюю на свіжому сервері CentOS і я дуже роздратований, коли з'ясував, що yum працює не так гладко і блискуче, як "apt-get install" на Ubuntu.

Встановивши стек LAMP, я запустив наступне:

$ yum install php
$ yum install mysql

Крім того:

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

Зараз працює:

$ rpm -qa | grep php

... показує, що у мене встановлені всі види пакетів php 5.1.6 і мені потрібно 5,2 мінімуму. Крім того, я бачу, що він встановив mysql 5.0.77, хоча поточний реліз становить 5.5.20. Але, сподіваємось, mysql 5.0 спрацює. PHP 5.1 не буде.

Тож справжні питання:

Як мені виправити PHP, щоб зробити його останнім стабільним випуском (5.3.9 відповідно до PHP.net)? Як змусити свою машину CentOS працювати більше як Ubuntu, тому мені більше не доведеться з цим боротися?

Дуже дякую.

EDIT: CentOS 5.7 була встановлена ​​хостинговою компанією минулого тижня, тому я не знаю, чому вони встановили б більш стару версію CentOS, а не найновішу. Мені потрібен PHP 3.2 принаймні, тому я вдячний для пропозицій, як це зробити. Я не дуже знайомий з пакетами та сховищами, але, схоже, кожен може запустити сховище, тому я переживаю за встановлення речей із якогось випадкового сховища, яке могло б заразити сервер.


1
Можна вказати, що якщо ви дотримуєтесь LTS-версії Ubuntu, Харді працює на php 5.2, а Lucid - на трохи не зовсім блискучому-новому 5.3.2. Існують аналогічні "старі" версії сервера mysql у стандартних репортах Ubuntu LTS. RHEL5 вийшов за рік до Харді, тому не дивно, що він знаходиться на php 5.1. RHEL і Ubuntu LTS створені для стабільності пакету. Якщо ви хочете щось більш сучасне, використовуйте Fedora або не-LTS Ubuntu.
cjc

Тут ви можете оновити свою PHP-версію на PHP5.5 webtatic.com/packages/php55
Мірза Селімович

Відповіді:


11

CentOS є ДЕРИВАТИВНОМО дуже консервативним Red Hat Enterprise Linux, тому оновлення пакетів, як правило, затримується навіть далі, ніж RHEL. Пакети в будь-якій дистрибуції будуть трохи старшими.

Якщо ви використовуєте CentOS 5, вам варто спробувати CentOS 6, щоб перевірити, чи відповідає вашим потребам.

Якщо вам потрібно щось трохи більш сучасне, ніж CentOS 6, варто заглянути в Fedora.

Подальші дії: CentOS був внесений "внутрішнім" та більш тісно інтегрований. Більш новіші версії CentOS побачать переваги більш жорсткого циклу випусків, але для старих версій ця відповідь все-таки справедлива.


2
Кількість дезінформації в цій нитці абсолютно вражає. CentOS 5 містить PHP 5.3 вже більше року, але це не встановлена ​​за замовчуванням версія через проблеми ABI. yum install php53приведе вас у дорогу.
jgoldschrafe

Правда. Я вирішив навчити його ловити рибу, а не давати йому рибу. І я гадаю, що насправді це було трохи химерно, але я спав пару годин у 36, і не буду спати сильно ці вихідні через відключення SPOF.
Магеллан

2
@jgoldschrafe - Я б запропонував написати власну відповідь - це було б більш продуктивно, ніж просто коментувати виправлення.
EEAA

Це спеціалізований сервер хостингової компанії. Особисто я хотів би мати сервер у нашій власності, але начальник почував себе таким безпечнішим. Цікаво, чому хостинг-компанія встановила б CentOS 5.7 замість останнього.
Buttle Butkus

4
@jgoldschrafe, на мене, питання, схоже, не стосується саме php-версії. Звичайно, схоже, що питання стосувалося консервативної політики щодо випуску, на яку я думаю, що пост намагається відповісти. Я думаю, що цілком важливо називати цю міс-інформацію.
Зоредаче

6

Вони не застаріли; вони є останніми, що CentOS 5 має у своїх сховищах.

Red Hat (і Ubuntu з цього приводу) ніколи і ніколи не публікуйте нову основну версію програмного забезпечення у своїх сховищах пакетів для даної версії ОС, задля стабільності - ви не хочете запускати оновлення і раптом у вас конфігурація не буде робота.

Натомість вони підтримують виправлення безпеки та важливі виправлення у версії програмного забезпечення, яке було «стабільним» після виходу ОС, уникаючи впровадження нових функцій (та їх помилок).

Оскільки ви перебуваєте на CentOS 5, в офіційних сховищах є кілька досить старих версій матеріалів. Але не бійтеся - ви, мабуть, легко можете знайти сторонній сховище з потрібними версіями програмного забезпечення.

Або, чому б не оновити до 6?


Це не зовсім вірно - PHP 5.3 знаходиться в основній репозиції, і вам просто потрібно yum install php53.
jgoldschrafe

1
@jgoldschrafe Гарний дзвінок. Хоча це схоже, що репост стороннього виробника все ж може знадобитися для нової MySQL.
Шейн Медден

"Або чому б не оновити до 6?" Краще питання - чому SingleHop дав нам 5,7 на сервері? @jgoldschrafe замінить встановлені пакети чи я їх видалюю вручну?
Buttle Butkus

CentOS 6 став доступний лише кілька місяців тому. Якби ящик був замовлений на початку минулого року, це було б 5,7. Якщо у вас є можливість переобразувати апарат із CentOS 6, ви, звичайно, можете це зробити.
cjc

@cjc Це було замовлено близько 2 тижнів тому. Я вже FTP'ed близько 80 Гб, тому я думаю, що було б простіше просто зробити цю установку роботою. Я намагаюся використовувати те, що рекомендував jgoldschrafe: yum install php53, але це не працює, оскільки php вже встановлено.
Buttle Butkus

4

Я б сказав, видаліть CentOS і встановіть Ubuntu, якщо це саме ви хочете використовувати. Але це повинна бути старіша версія CentOS, яку ви використовуєте. CentOS 6.2 використовує PHP 5.3 та MySQL 5.1.

Ви можете використовувати репозиторій Remi, щоб отримати новіші версії Apache / PHP / MySQL

І ви не змушуєте вашу машину CentOS працювати так, як Ubuntu, тому що це не Ubuntu. Це як сказати "Як я змушу мого Chrysler заженуть більше як Ford".


Оновлена ​​відповідь:

Я отримав кілька голосів за це, тому я думаю, що мої наміри були неправильно зрозумілі, дозвольте спробувати це виправити.

Я створив VPS в нашому середовищі та встановив пакунки, тож я повинен бути там, де ви зараз знаходитесь:

[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

У своїй першій відповіді я припускав, що ви хочете останнього випуску, тоді вам слід використовувати репозиторій Remi, як я вже говорив вище. Однак якщо версія PHP 5.3 в центОС нормально (5.3.3), читайте далі.

При спробі встановити php53 він скаржиться на конфлікт, оскільки цей пакет охоплюватиме ті ж речі, що й пакет PHP 5.1. Для вирішення цього питання потрібно видалити всі пакети, пов’язані з PHP, для початку:

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

Наступне, що потрібно зробити - це встановити еквівалентні пакети з 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 було досить легко. Але MySQL - це інша історія, оскільки MySQL 5.0 є єдиним MySQL у сховищах CentOS за замовчуванням. Я запускаю 64-бітну версію CentOS, якщо вам не потрібно, відрегулюйте наступну для 32-бітової версії.

Існує кілька способів зробити це, але я збираюся перейти до сховища Remi. Це вже багато років, а репостування простіше підтримувати, ніж використовувати прості файли RPM.

Remi вимагає сховище EPEL, тому почніть з установки, що:

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

Далі ви встановлюєте РПМ-репо 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%]

Далі ви видаляєте поточний сервер MySQL (інакше у вас виникнуть конфлікти при спробі встановити новий). ПРИМІТКА! Якщо у вас там є бази даних, зробіть резервну копію перед цим!

[root@centos5 /]# yum remove mysql*

Потім ви можете продовжити та встановити MySQL з репозиторію Remi:

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

Тепер, коли ви намагаєтеся запустити MySQL, це може бути невдалим, оскільки старий mysql залишив деякі речі позаду, і це може бути дуже болісно позбутися. У моєму випадку тут мені потрібно було зняти деякі речі, щоб спрацювати. Це зробили для мене:

# 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, це в основному питання про те, чи існує спосіб отримання сучасних пакетів, а не застарілих пакетів.
Buttle Butkus

@ButtleButkus Я не знаю, чи отримуєте ви повідомлення, коли я оновлююсь, тому я пишу коментар, щоб переконатися, що ви робите :)
Frands Hansen

Щойно побачив ваше оновлення. Я вирішив проблему, і ваша відповідь виглядає так, що вона може відповідати тому, що я закінчила. Потрібно хоч двічі перевірити мої нотатки.
Buttle Butkus

1
Є ще кілька джерел для оновлених rpms. Rackspace IUS iuscommunity.org/pages/ About.html та webtatic webtatic.com/projects/yum-repository
txyoji
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.