Tại sao các gói lỗi thời được yum cài đặt trên CentOS? (cụ thể là PHP 5.1) Cách khắc phục?


14

Tôi đang làm việc trên một máy chủ CentOS mới và vô cùng khó chịu khi phát hiện ra rằng yum không hoạt động trơn tru và rực rỡ như "apt-get install" trên Ubuntu.

Cài đặt ngăn xếp LAMP, tôi chạy như sau:

$ yum install php
$ yum install mysql

Hơn nữa:

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

Hiện đang chạy:

$ rpm -qa | grep php

... cho thấy tôi đã cài đặt tất cả các loại gói php 5.1.6 và tôi cần tối thiểu 5.2. Ngoài ra, tôi thấy rằng nó đã cài đặt mysql 5.0.77, mặc dù bản phát hành hiện tại là 5.5.20. Nhưng hy vọng mysql 5.0 sẽ hoạt động. PHP 5.1 sẽ không.

Vì vậy, câu hỏi thực sự là (đang):

Làm cách nào để sửa lỗi PHP của tôi để làm cho nó trở thành bản phát hành ổn định mới nhất (5.3.9 theo PHP.net)? Làm cách nào để làm cho máy CentOS của tôi hoạt động giống Ubuntu hơn để tôi không phải đối phó với vấn đề này nữa?

Cảm ơn rất nhiều.

EDIT: CentOS 5.7 đã được cài đặt bởi một công ty lưu trữ vào tuần trước, vì vậy tôi không biết tại sao họ lại cài đặt phiên bản cũ hơn của CentOS, thay vì gần đây nhất. Tôi cần PHP 3.2 ít nhất, vì vậy tôi đánh giá cao những gợi ý về cách làm điều đó. Tôi không quen thuộc lắm với các gói và kho lưu trữ, nhưng có vẻ như bất kỳ ai cũng có thể bắt đầu một kho lưu trữ và vì vậy tôi lo ngại về việc cài đặt mọi thứ từ một kho lưu trữ ngẫu nhiên có thể lây nhiễm máy chủ.


1
Mọi người có thể chỉ ra rằng, nếu bạn đang sử dụng phiên bản LTS của Ubuntu, Hardy sẽ sử dụng php 5.2 và Lucid nằm trên phiên bản 5.3.2 không mấy sáng bóng. Có các phiên bản "cũ" tương tự của máy chủ mysql trong kho lưu trữ Ubuntu LTS tiêu chuẩn. RHEL5 xuất hiện một năm trước Hardy, vì vậy không có gì đáng ngạc nhiên khi nó trên php 5.1. RHEL và Ubuntu LTS được xây dựng để ổn định gói. Nếu bạn muốn một cái gì đó cập nhật hơn, hãy sử dụng Fedora hoặc không phải LTS Ubuntu.
cjc

Đây là nơi bạn có thể cập nhật phiên bản PHP của mình lên PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Câu trả lời:


11

CentOS là một KHAI THÁC của Red Hat Enterprise Linux rất bảo thủ, do đó, các bản cập nhật gói thường sẽ bị trì hoãn hơn nữa so với RHEL. Các gói trong một trong hai phân phối sẽ cũ hơn một chút.

Nếu bạn đang chạy CentOS 5, bạn nên thử CentOS 6 để xem nó có phù hợp với nhu cầu của bạn không.

Nếu bạn cần thứ gì đó tiên tiến hơn một chút so với CentOS 6, bạn nên xem xét Fedora.

Theo dõi: CentOS đã được mang "nội bộ" và được tích hợp chặt chẽ hơn. Các bản phát hành CentOS mới hơn sẽ thấy lợi ích của chu kỳ phát hành chặt chẽ hơn, nhưng đối với các bản phát hành cũ hơn, câu trả lời này vẫn sẽ đúng.


2
Số lượng thông tin sai trong chủ đề này là hoàn toàn đáng kinh ngạc. CentOS 5 đã chứa PHP 5.3 trong hơn một năm nay, nhưng nó không phải là phiên bản được cài đặt mặc định vì những lo ngại của ABI. yum install php53sẽ giúp bạn trên con đường của bạn.
jgoldschrafe

Thật. Tôi quyết định dạy anh cách câu cá thay vì cho anh một con cá. Và tôi cho rằng thực tế nó hơi ngớ ngẩn, nhưng tôi đã có một vài giờ ngủ ở 36 và sẽ không ngủ nhiều vào cuối tuần này do bị cúp SPOF.
Magellan

2
@jgoldschrafe - Tôi khuyên bạn nên viết câu trả lời cho riêng mình - điều đó sẽ hiệu quả hơn là chỉ bình luận với sửa chữa.
EEAA

Nó là một máy chủ chuyên dụng tại một công ty lưu trữ. Cá nhân tôi muốn có máy chủ trong tài sản của chúng tôi, nhưng ông chủ cảm thấy an toàn hơn theo cách này. Tôi tự hỏi tại sao công ty lưu trữ sẽ cài đặt CentOS 5.7 thay vì mới nhất.
Butussy Butkus

4
@jgoldschrafe, với tôi câu hỏi, dường như không cụ thể về phiên bản php. Có vẻ như câu hỏi là về các chính sách phát hành bảo thủ, mà tôi nghĩ rằng bài viết cố gắng trả lời. Tôi nghĩ rằng đó là một strech để gọi thông tin bỏ lỡ này.
Zoredache

6

Chúng không lỗi thời; chúng là phiên bản mới nhất mà CentOS 5 có trong kho của nó.

Red Hat (và Ubuntu vì vấn đề đó) chưa bao giờ xuất bản phiên bản phần mềm chính mới vào kho lưu trữ gói của họ cho một phiên bản HĐH nhất định, vì sự ổn định - bạn không muốn chạy nâng cấp và đột nhiên không có cấu hình của bạn công việc.

Thay vào đó, họ đưa các bản sửa lỗi bảo mật và sửa lỗi quan trọng vào phiên bản phần mềm 'ổn định' khi HĐH được phát hành, tránh giới thiệu các tính năng mới (và lỗi của chúng).

Vì bạn đang ở trên CentOS 5, nên các kho chính thức có một số phiên bản khá cũ. Nhưng đừng sợ - bạn có thể dễ dàng tìm thấy kho lưu trữ của bên thứ ba với các phiên bản phần mềm mà bạn cần.

Hoặc, tại sao không nâng cấp lên 6?


Điều này không hoàn toàn đúng - PHP 5.3 nằm trong repos cốt lõi và bạn chỉ cần yum install php53.
jgoldschrafe

1
@jgoldschrafe Gọi tốt. Mặc dù có vẻ như một repo của bên thứ ba vẫn có thể cần thiết cho MySQL mới hơn.
Shane Madden

"Hoặc, tại sao không nâng cấp lên 6?" Câu hỏi hay hơn là tại sao SingleHop cho chúng tôi 5.7 trên máy chủ? @jgoldschrafe sẽ thay thế các gói đã cài đặt hay tôi đã gỡ bỏ chúng bằng tay?
Butussy Butkus

CentOS 6 đã có sẵn chỉ một vài tháng trước. Nếu hộp được đặt hàng vào đầu năm ngoái, nó sẽ là 5,7. Nếu bạn có một tùy chọn để chụp ảnh lại máy bằng CentOS 6, bạn chắc chắn có thể làm điều đó.
cjc

@cjc Nó mới được đặt hàng khoảng 2 tuần trước. Tôi đã có FTP khoảng 80 GB, vì vậy tôi nghĩ việc cài đặt này sẽ dễ dàng hơn. Tôi đang cố gắng sử dụng những gì jgoldschrafe khuyên dùng: yum cài đặt php53, nhưng nó không hoạt động vì php đã được cài đặt.
Butussy Butkus

4

Tôi muốn nói gỡ cài đặt CentOS và cài đặt Ubuntu, nếu đó là những gì bạn muốn sử dụng. Nhưng nó phải là phiên bản cũ hơn của CentOS mà bạn sử dụng. CentOS 6.2 sử dụng PHP 5.3 và MySQL 5.1.

Bạn có thể sử dụng kho lưu trữ Remi để có các phiên bản mới hơn của Apache / PHP / MySQL

Và bạn không làm cho máy CentOS của bạn hoạt động giống Ubuntu hơn, vì đó không phải là Ubuntu. Nó giống như nói "Làm thế nào để tôi làm cho chiếc Chrysler của mình lái giống một chiếc Ford hơn".


Cập nhật phản hồi:

Tôi đã nhận được một số phiếu giảm về điều này, vì vậy tôi nghĩ rằng ý định của tôi đã bị hiểu lầm, hãy để tôi cố gắng sửa nó.

Tôi đã thiết lập một VPS trong môi trường của chúng tôi và cài đặt các gói, vì vậy tôi nên ở ngay bây giờ:

[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

Trong phản hồi đầu tiên của tôi, tôi giả sử bạn muốn các bản phát hành mới nhất, sau đó bạn nên sử dụng kho lưu trữ Remi như tôi đã nêu ở trên. Tuy nhiên, nếu phiên bản PHP 5.3 trong centOS vẫn ổn (5.3.3) thì hãy đọc tiếp.

Khi cố gắng cài đặt php53, nó phàn nàn rằng có một xung đột, vì gói này sẽ bao gồm những thứ tương tự như gói PHP 5.1. Để giải quyết vấn đề này, bạn cần xóa tất cả các gói liên quan đến PHP để bắt đầu:

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

Điều tiếp theo bạn làm là cài đặt các gói tương đương với 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

Vì vậy, PHP khá dễ dàng. Nhưng MySQL là một câu chuyện khác, vì MySQL 5.0 là MySQL duy nhất trong kho lưu trữ CentOS mặc định. Tôi chạy phiên bản 64 bit của CentOS, nếu bạn không cần điều chỉnh những điều sau đây để phù hợp với 32 bit thay vào đó.

Có một số cách để làm điều này nhưng tôi sẽ đi với kho Remi. Nó đã tồn tại trong nhiều năm và việc duy trì dễ dàng hơn với repo so với sử dụng các tệp RPM đơn giản.

Remi yêu cầu kho lưu trữ EPEL vì vậy hãy bắt đầu bằng cách cài đặt:

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

Tiếp theo, bạn cài đặt 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%]

Tiếp theo, bạn xóa máy chủ MySQL hiện tại (nếu không bạn sẽ gặp xung đột khi cố gắng cài đặt máy chủ mới) .. LƯU Ý! Nếu bạn có cơ sở dữ liệu trên đó, hãy tạo một bản sao lưu trước khi làm điều này!

[root@centos5 /]# yum remove mysql*

Sau đó, bạn có thể tiếp tục và cài đặt MySQL từ kho Remi:

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

Bây giờ khi bạn cố gắng khởi động MySQL, nó có thể thất bại vì mysql cũ đã bỏ lại một số thứ và điều này có thể là một nỗi đau để loại bỏ. Trong trường hợp của tôi ở đây tôi cần phải loại bỏ một số thứ để làm cho nó hoạt động. Họ đã làm điều đó cho tôi:

# 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, về cơ bản đó là một câu hỏi về việc có hay không có cách để có được các gói cập nhật hơn là các gói lỗi thời.
Butussy Butkus

@BriptButkus Tôi không biết nếu bạn được thông báo khi tôi cập nhật nên tôi đang viết bình luận để đảm bảo bạn sẽ làm :)
Frands Hansen

Chỉ cần xem cập nhật của bạn. Tôi đã giải quyết vấn đề và câu trả lời của bạn có vẻ phù hợp với những gì tôi đã làm. Cần phải kiểm tra lại ghi chú của tôi.
Butussy Butkus

1
Có một vài nguồn nữa cho các rpms cập nhật. Rackspace IUS iuscommunity.org/pages/ về.html và webtatic webtatic.com/projects/yum-reposeective
txyoji
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.