Ini adalah pertanyaan terbuka, tetapi saya ingin memiliki diskusi yang konstruktif dan bermanfaat dalam topik ini.
Jadi untuk mengklarifikasi pertanyaan: Pada server yang menjalankan CentOS 7 (atau distro / versi Linux lainnya), apakah yang terbaik adalah tetap menggunakan versi paket di repo Base / EPEL atau tidak apa-apa untuk mendapatkan versi stabil terbaru membentuk situs paket? Dalam hal ini saya lebih khusus merujuk pada paket-paket seperti nginx, MariaDB dan PHP 7. Sebagai contoh, apa pro dan kontra menginstal nginx 1.8.0 di atas versi EPEL 1.6.3? Apakah ada perbedaan kinerja atau risiko keamanan?
Semua diskusi dan pengalaman diterima, silakan coba mengutip sumber daya dan fakta.
linux
centos
package-management
GiggleSquid
sumber
sumber
/usr/local
atau sejenisnya.Jawaban:
Secara umum, saya berusaha sangat keras untuk menggunakan paket standar sistem.
Namun, ini kadang tidak mungkin. Untuk melakukan pilihan yang berpendidikan Anda harus menjawab pertanyaan-pertanyaan ini:
sumber
Jawaban Matthew Ife dan shodanshok mencakup masalah secara umum, tetapi saya ingin mengatasi masalah khusus Anda dengan menempatkan masalah dalam konteks, karena sistem seperti inilah yang saya kelola.
Bangunan saya saat ini untuk menyebarkan aplikasi web PHP / MySQL adalah:
Pertama, mari pertimbangkan mengapa kita memilih distribusi atau paket tertentu. Baik kami menghargai stabilitas di atas fitur terbaru, atau kami menghargai fitur terbaru di atas stabilitas. Secara umum tidak mungkin memiliki keduanya dalam distribusi yang sama, karena perangkat lunak stabilisasi memerlukan waktu untuk memperbaiki bug, dan menambahkan fitur baru memperkenalkan bug, sehingga ketidakstabilan.
Sebagai aturan umum saya ingin sistem operasi di mana aplikasi berjalan menjadi stabil mungkin, tetapi dengan set fitur yang cukup modern. Jadi saya akan memilih CentOS 7 daripada CentOS 6, yang agak lama pada saat ini, dan sementara itu akan berfungsi , ia tidak memiliki banyak waktu tersisa dalam siklus dukungannya, jadi saya tidak akan menggunakannya untuk proyek baru .
Namun, saya kemudian mengalami masalah bahwa versi nginx yang disertakan dengan CentOS terlalu lama dan tidak memiliki beberapa fitur dan perbaikan bug yang diperlukan. Jadi saya pergi mencari paket alternatif, dan menemukan bahwa nginx.org mendistribusikan sendiri. Saya segera beralih ke mereka dan menemukan mereka sangat stabil dalam jangka panjang.
Lalu ada PHP. Saya tahu dari sejarah bahwa versi PHP yang dikirim dengan CentOS akan menjadi satu-satunya versi yang pernah didapatnya, dan hanya akan mendapatkan pembaruan keamanan; tidak ada fitur baru atau perbaikan bug. Jadi, setelah dukungan di luar, saya akhirnya tidak dapat menjalankan aplikasi web PHP modern jika saya menggunakan paket-paket itu. Maka dari itu perlu untuk mengganti ini juga.
Dari pengalaman panjang saya telah belajar bahwa yang terbaik untuk melacak rilis perbaikan bug dengan PHP, tidak hanya membeku pada satu titik rilis dan hanya mengambil perbaikan keamanan, karena aplikasi web yang saya jalankan juga akan diperbarui dan akan membutuhkan perbaikan bug tersebut. Jadi setelah mengevaluasi banyak set paket PHP yang berbeda, saya memutuskan pada pacakges remi. Remi kebetulan menjadi karyawan Red Hat dan juga bertanggung jawab atas paket PHP di RHEL / CentOS. Jadi saya tahu paketnya akan berkualitas tinggi, dan sudah. Mereka adalah pengganti drop-in untuk paket sistem dan bekerja dengan sempurna.
Akhirnya kita sampai ke MariaDB. Anda dapat memilih untuk menyimpan paket sistem di sini dan tidak menderita efek buruk. Saya memilih untuk beralih ke paket 10.0 MariaDB (dan segera akan pergi ke 10.1) untuk mengambil keuntungan dari TokuDB dan beberapa peningkatan kinerja lainnya tidak tersedia dalam versi 5.5 yang dikirimkan dengan CentOS, dan bahwa itu tidak akan pernah menerima peningkatan besar untuk.
Secara keseluruhan Anda membutuhkan stabilitas dalam sistem basis Anda, tetapi aplikasi web berubah jauh lebih cepat daripada, katakanlah, lini perangkat lunak bisnis, dan server Anda harus mengikuti. Jadi saya telah memilih poin yang ditargetkan di mana paket peningkatan akan mendapatkan manfaat yang jelas dengan sedikit overhead administrasi tambahan (alias berfungsi).
sumber
Jawaban singkatnya adalah, selalu gunakan apa yang disediakan oleh repositori sistem. Berhati -hatilah terhadap repositori apa yang Anda instal juga. Beberapa sangat buruk.
Anda tidak harus menulis ulang paket sistem dengan versi yang lebih baru, Redhat dirancang dan diatur dengan sangat hati-hati dan Anda mungkin berakhir dengan bug atau masalah aneh jika Anda melakukannya.
Beberapa hal yang perlu dipertimbangkan dan diwaspadai yang dapat menyebabkan masalah termasuk.
php
paket diletakkan pada sistem tetapi tidak memperbaruipear
paket yang menimbulkan masalah.Tidak pernah membangun paket dari sumber dan menginstal mereka dari atas paket yang ada. Ini merusak integritas paket sistem Anda yang dapat menyebabkan masalah ABI aneh seperti menerima
unresolved symbol
atauundefined reference
pesan. Sangat penting sistem mempertahankan indeks yang andal dan akurat mengenai perangkat lunak apa yang telah digunakan pada sistem yang diberikan untuk memastikan semuanya bekerja dengan baik, inilah alasan kami menggunakan RPM sejak awal.Cara yang layak (dan Redhat diberkati) untuk menyelesaikan masalah ini adalah dengan menggunakan koleksi perangkat lunak.
www.softwarecollections.org
Menginstal adalah perangkat lunak dan dependensi 'baru' di root sendiri. Ini bisa membuatnya sedikit lebih sulit untuk menerapkan paket di lingkungan Anda tetapi melindungi sistem Anda dari kesalahan atau masalah aneh. Itu juga menginstal paket di namespace mereka sendiri, membiarkan Anda menginstal beberapa versi paket secara paralel.
Situs web ini memberikan instruksi cara menginstal dan mengaktifkan paket-paket ini, berisi sebagian besar apa yang orang lewatkan pada versi CentOS dan Redhat yang lama (khususnya EL6). Beberapa hal yang saya gunakan dari situs web ini berhasil.
Perhatikan bahwa posisi default Anda dalam hal ini seharusnya tidak menyesuaikan dari apa yang didorong oleh repositori Redhat. Sebagai gantinya, buatlah penilaian apakah Anda benar-benar membutuhkan versi terbaru dari sebuah paket, khususnya apa persyaratan spesifik Anda, masalah apa yang seharusnya diperbaiki dan risiko apa yang diperkenalkannya.
Sebagai aturan umum, jika Anda mendapati diri Anda terus-menerus membutuhkan perangkat lunak yang diperbarui dan / atau memerlukan beberapa versi paralel dari paket yang sama untuk membuat semuanya berfungsi, itu biasanya merupakan indikator Anda melakukan kesalahan.
sumber
nginx
adalah salah satu paket 'semua dalam satu' seperti itu. Tetapi,httpd
(dependensi libapr) danmysql
(dependensi libmysqlclient) khususnya tidak. Pembaruan buruk dari kedua paket ini telah menyebabkan kesalahan dalampython
danphp
bagi saya di masa lalu. Masalahnya di sini adalah tidak mudah untuk mengetahui bagaimana satu paket berinteraksi dengan yang lain kecuali Anda tahu apa yang harus dicari (terjemahan: sudah dibakar sebelumnya).