Mengapa paket usang dipasang oleh yum di CentOS? (khusus PHP 5.1) Bagaimana cara memperbaikinya?

14

Saya sedang bekerja pada server CentOS yang baru dan saya sangat kesal mengetahui bahwa yum tidak bekerja dengan lancar dan cemerlang seperti halnya "apt-get install" di Ubuntu.

Menginstal tumpukan LAMP, saya menjalankan yang berikut:

$ yum install php
$ yum install mysql

Selanjutnya:

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

Sedang berjalan:

$ rpm -qa | grep php

... menunjukkan bahwa saya memiliki semua jenis paket php 5.1.6 diinstal dan saya perlu 5,2 minimum. Selain itu, saya melihat bahwa itu menginstal mysql 5.0.77, meskipun rilis saat ini adalah 5.5.20. Tapi semoga mysql 5.0 akan bekerja. PHP 5.1 tidak akan.

Jadi pertanyaan sebenarnya adalah:

Bagaimana cara memperbaiki PHP saya untuk menjadikannya rilis stabil terbaru (5.3.9 menurut PHP.net)? Bagaimana saya membuat mesin CentOS saya bekerja lebih seperti Ubuntu sehingga saya tidak harus berurusan dengan ini lagi?

Terima kasih banyak.

EDIT: CentOS 5.7 diinstal oleh perusahaan hosting minggu lalu, jadi saya tidak tahu mengapa mereka akan menginstal versi CentOS yang lebih lama, daripada yang terbaru. Setidaknya saya membutuhkan PHP 3.2, jadi saya menghargai saran tentang cara melakukannya. Saya tidak terlalu terbiasa dengan paket dan repositori, tetapi tampaknya siapa pun dapat memulai repositori dan saya khawatir tentang menginstal sesuatu dari beberapa repositori acak yang dapat menginfeksi server.

Butkus Buttle
sumber
1
Orang dapat menunjukkan bahwa, jika Anda tetap menggunakan Ubuntu versi LTS, Hardy ada di php 5.2 dan Lucid menggunakan 5.3.2 yang sedikit tidak terlalu mengkilap. Ada versi yang sama "lama" dari server mysql di repos LTS Ubuntu standar. RHEL5 keluar setahun sebelum Hardy, jadi tidak mengejutkan kalau itu ada di php 5.1. RHEL dan Ubuntu LTS dibangun untuk stabilitas paket. Jika Anda menginginkan sesuatu yang lebih baru, gunakan Fedora atau Ubuntu non-LTS.
cjc
Di sinilah Anda dapat memperbarui versi PHP Anda ke PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Jawaban:

11

CentOS adalah DERIVATIF dari Red Hat Enterprise Linux yang sangat konservatif, sehingga pembaruan paket umumnya akan ditunda lebih jauh dari RHEL. Paket dalam distribusi mana pun akan sedikit lebih tua.

Jika Anda menjalankan CentOS 5, Anda harus mencoba CentOS 6 untuk melihat apakah itu sesuai dengan kebutuhan Anda.

Jika Anda membutuhkan sesuatu yang sedikit lebih canggih daripada CentOS 6, Anda harus melihat ke dalam Fedora.

Tindak lanjut: CentOS telah dibawa "in-house", dan lebih terintegrasi. Rilis CentOS yang lebih baru akan melihat manfaat dari siklus rilis yang lebih ketat, tetapi untuk rilis yang lebih lama jawaban ini akan tetap berlaku.

Magellan
sumber
2
Jumlah informasi yang salah di utas ini benar-benar mencengangkan. CentOS 5 telah memuat PHP 5.3 selama lebih dari satu tahun sekarang, tetapi ini bukan versi yang diinstal default karena kekhawatiran ABI. yum install php53akan membuat Anda di jalan.
jgoldschrafe
Benar. Saya memutuskan untuk mengajarinya cara memancing daripada memberinya ikan. Dan saya kira itu sebenarnya sedikit snarky, tapi saya sudah beberapa jam tidur di 36 dan tidak akan tidur banyak akhir pekan ini baik karena pemadaman SPOF.
Magellan
2
@ jgoldschrafe - Saya sarankan menulis jawaban Anda sendiri - yang akan lebih produktif daripada hanya berkomentar dengan koreksi.
EEAA
Ini adalah server khusus di perusahaan hosting. Secara pribadi saya ingin memiliki server di properti kami, tetapi bos merasa lebih aman dengan cara ini. Saya bertanya-tanya mengapa perusahaan hosting akan menginstal CentOS 5.7 bukan yang terbaru.
Buttle Butkus
4
@ jgoldschrafe, bagi saya pertanyaan, tampaknya tidak secara khusus tentang versi php. Sepertinya pertanyaannya adalah tentang kebijakan rilis konservatif, yang menurut saya coba dijawab oleh pos tersebut. Saya pikir ini adalah suatu kesalahan untuk menyebut informasi yang salah ini.
Zoredache
6

Mereka tidak ketinggalan zaman; mereka adalah yang terbaru yang dimiliki CentOS 5 dalam repositori-repositoriya.

Red Hat (dan Ubuntu dalam hal ini) tidak pernah, pernah menerbitkan versi utama perangkat lunak baru ke dalam repositori paket mereka untuk versi OS tertentu, demi stabilitas - Anda tidak ingin menjalankan upgrade dan tiba-tiba konfigurasi Anda tidak kerja.

Sebagai gantinya, mereka mendukung perbaikan keamanan dan perbaikan bug penting ke dalam versi perangkat lunak yang 'stabil' ketika OS dirilis, menghindari pengenalan fitur-fitur baru (dan bug mereka).

Karena Anda menggunakan CentOS 5, repositori resmi memiliki beberapa versi barang yang cukup lama. Tapi jangan takut - Anda mungkin dapat dengan mudah menemukan repositori pihak ketiga dengan versi perangkat lunak yang Anda butuhkan.

Atau, mengapa tidak meningkatkan ke 6?

Shane Madden
sumber
Ini tidak sepenuhnya benar - PHP 5.3 ada di repo inti dan Anda hanya perlu melakukannya yum install php53.
jgoldschrafe
1
@ jgoldschrafe Panggilan bagus. Meskipun sepertinya repo pihak ketiga mungkin masih diperlukan untuk MySQL yang lebih baru.
Shane Madden
"Atau, mengapa tidak meningkatkan ke 6?" Pertanyaan yang lebih baik adalah mengapa SingleHop memberi kami 5,7 di server? @ jgoldschrafe akankah itu menggantikan paket yang diinstal atau apakah saya harus menghapusnya secara manual?
Buttle Butkus
CentOS 6 menjadi tersedia hanya beberapa bulan yang lalu. Jika kotak dipesan awal tahun lalu, itu akan menjadi 5.7. Jika Anda memiliki opsi untuk mem-image ulang mesin dengan CentOS 6, Anda tentu bisa melakukannya.
cjc
@cjc Baru dipesan sekitar 2 minggu yang lalu. Saya sudah meng-FTP sekitar 80GB jadi saya pikir akan lebih mudah untuk membuat instalasi ini berfungsi. Saya mencoba menggunakan apa yang direkomendasikan jgoldschrafe: yum instal php53, tetapi tidak berfungsi karena php sudah diinstal.
Buttle Butkus
4

Saya akan mengatakan uninstall CentOS dan instal Ubuntu, jika itu yang ingin Anda gunakan. Tapi itu harus versi CentOS lama yang Anda gunakan. CentOS 6.2 menggunakan PHP 5.3 dan MySQL 5.1.

Anda dapat menggunakan repositori Remi untuk mendapatkan versi yang lebih baru dari Apache / PHP / MySQL

Dan Anda tidak membuat mesin CentOS Anda bekerja lebih seperti Ubuntu, karena itu bukan Ubuntu. Itu seperti mengatakan "Bagaimana cara membuat Chrysler saya mengemudi lebih seperti Ford".


Respons yang diperbarui:

Saya mendapat beberapa suara pada ini, jadi saya pikir niat saya telah disalahpahami, izinkan saya mencoba untuk memperbaikinya.

Saya telah menyiapkan VPS di lingkungan kami dan menginstal paket, jadi saya harus berada di tempat Anda sekarang:

[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

Dalam tanggapan pertama saya, saya berasumsi Anda menginginkan rilis terbaru, maka Anda harus menggunakan repositori Remi seperti yang telah saya nyatakan di atas. Namun, jika versi PHP 5.3 dalam centOS baik-baik saja (5.3.3) maka baca terus.

Ketika mencoba menginstal php53 itu mengeluh bahwa ada konflik, karena paket ini akan mencakup hal yang sama dengan paket PHP 5.1. Untuk mengatasi ini, Anda harus menghapus semua paket terkait PHP untuk memulai dengan:

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

Hal berikutnya yang Anda lakukan adalah menginstal paket yang setara dengan 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

Jadi, PHP cukup mudah. Tetapi MySQL adalah cerita lain, karena MySQL 5.0 adalah satu-satunya MySQL dalam repositori default CentOS. Saya menjalankan versi 64 bit CentOS, jika tidak, Anda perlu menyesuaikan yang berikut agar sesuai dengan 32 bit sebagai gantinya.

Ada beberapa cara untuk melakukan ini, tetapi saya akan pergi dengan repositori Remi. Sudah ada selama bertahun-tahun dan pemeliharaannya lebih mudah dengan repo daripada menggunakan file RPM biasa.

Remi membutuhkan repositori EPEL jadi mulailah dengan menginstalnya:

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

Selanjutnya, Anda menginstal Remo 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%]

Selanjutnya Anda menghapus server MySQL saat ini (jika tidak, Anda akan mendapatkan konflik ketika mencoba menginstal yang baru) .. CATATAN! Jika Anda memiliki basis data di sana, buat cadangan sebelum melakukan ini!

[root@centos5 /]# yum remove mysql*

Kemudian Anda dapat melanjutkan dan menginstal MySQL dari repositori Remi:

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

Sekarang ketika Anda mencoba untuk memulai MySQL mungkin gagal karena mysql lama meninggalkan beberapa hal di belakang, dan ini bisa agak menyakitkan untuk disingkirkan. Dalam kasus saya di sini saya perlu menghapus beberapa hal agar bisa berfungsi. Ini melakukannya untuk saya:

# 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
sumber
1
Yah, pada dasarnya pertanyaan apakah ada atau tidak cara untuk mendapatkan paket terbaru daripada paket out-of-date.
Buttle Butkus
@ButtleButkus Saya tidak tahu apakah Anda diberitahu ketika saya memperbarui jadi saya menulis komentar untuk memastikan Anda melakukannya :)
Frands Hansen
Baru saja melihat pembaruan Anda. Saya memang memecahkan masalah dan jawaban Anda sepertinya cocok dengan apa yang akhirnya saya lakukan. Perlu memeriksa ulang catatan saya.
Buttle Butkus
1
Ada beberapa sumber lagi untuk rpms terbaru. Rackspace IUS iuscommunity.org/pages/About.html dan webtatic webtatic.com/projects/yum-repository
txyoji