CentOS paket sürümünü (resmi) depolarda mı yoksa paketlerin en son kararlı sürümlerinde mi kullanmalıyım?


9

Bu açık uçlu bir soru, ancak bu konuda yapıcı ve yararlı bir tartışma yapmak istiyorum.

Soruyu açıklığa kavuşturmak için: CentOS 7 (veya bu konu için başka bir Linux dağıtım / sürümü) çalıştıran bir sunucuda Base / EPEL deposundaki paket sürümüne bağlı kalmak en iyisi mi yoksa en son kararlı sürümü almak iyi mi? Paket sitesi oluşturmak? Bu durumda daha spesifik olarak nginx, MariaDB ve PHP 7 gibi paketlere atıfta bulunuyorum. Örneğin, nginx 1.8.0'ı EPEL 1.6.3 sürümü üzerine kurmanın avantajları ve dezavantajları neler olurdu? Her iki şekilde de performans farklılıkları veya güvenlik riskleri var mı?

Tüm tartışma ve deneyime açığız, lütfen kaynakları ve gerçekleri belirtmeye çalışın.


4
Ben yükleme önleyeceğini üzerinde bir OS tarafından sağlanan pakette. İlk olarak, dağıtım sağlayıcısının herhangi bir özelleştirmeyle ilgili ne yapabileceğini bilmiyorsunuz - yapılandırma dosyası konumu, vb. Örneğin, dağıtım dağıtımı sağlanan 1.6.3 ve daha sonra dağıtım için nginx 1.8.0 1.9.9'a atlar mı? Özel yüklemenize ne yapacak? Genel olarak - sunucunun ömrü boyunca özelleştirilmiş işletim sistemi kurulumunuzu sürdürmeyi taahhüt etmek istemiyorsanız işletim sistemi tarafından sağlanan hiçbir şeyle uğraşmayın . İşletim sistemi tarafından sağlanan bir uygulamanın daha sonraki bir sürümü için uygulamayı yükleyin . /usr/local
Andrew Henle

Bu iyi bir nokta, buna karşılık benim şudur: Örneğin nginx'i al, en son kararlı 1.8.0 ve en son eski sürüm 1.6.3'tür, ya 1.6.3 dağıtım sürümünde bir güvenlik hatası bulunursa ?
GiggleSquid

5
Red Hat : Güvenlik açıkları tespit edildiğinde, etkilenen yazılımların olası güvenlik risklerini sınırlamak için güncellenmesi gerekir. Yazılım, şu anda desteklenen bir Red Hat Enterprise Linux dağıtımındaki bir paketin parçasıysa, Red Hat, Inc. güvenlik açığını en kısa sürede düzelten güncellenmiş paketleri yayınlamayı taahhüt eder. ... (devam)
Andrew Henle

5
Genellikle, belirli bir güvenlik açığıyla ilgili duyurulara bir düzeltme eki (veya sorunu gideren kaynak kodu) eşlik eder. Bu yama daha sonra Red Hat Enterprise Linux paketine uygulanır, Red Hat kalite güvence ekibi tarafından test edilir ve bir hata güncellemesi olarak yayınlanır . ... Tüm bunlara kaydolmayı planlıyor musunuz?
Andrew Henle

Yanıtlar:


9

Genel olarak, sistem varsayılan paketlerini kullanmak için çok çalışıyorum.

Ancak, bu bazen mümkün değildir. Eğitimli bir seçim yapmak için şu soruları cevaplamanız gerekiyordu:

  1. dağıtım paketleri ihtiyacınız olan özellikleri sağlıyor mu? Öyleyse, başka paketleri aramanıza bile gerek yoktur ; sistem depoları tarafından sağlanan paketleri kullanın.
  2. resmi desteğe ihtiyacınız var mı ve / veya belirli politikalara uymak zorunda kaldınız mı? Öyleyse, resmi olmayan bir depo kullanamazsınız . Bu durumda, muhtemelen yazılım projeniz için yanlış dağıtım kullanıyorsunuzdur.
  3. önceki soruların cevabı "hayır" ise, daha yeni bir yazılım sürümü aramak zorundaydınız. Mu bir mevcut iyi tanınan deposunu gerekli paketi ile? Öyleyse kullanın.
  4. belirli, saygın bir depo yoksa, yukarı akış yazılımını kullanmak zorundaydınız. Bu durumda, düz tar.gz (veya benzeri) yerine paketlenmiş yazılımı (ör: RPM, DEB, ecc) kullanmayı çok deneyin .

3
Ekleyebileceğiniz başka bir şey: Downside. Senin mu işveren (varsa) onlar destek için ödeme yapıyorsanız, özellikle şirket sistemleriyle bunu yaptığını biliyor? Diğer şeylerin yanı sıra, bir şirketin desteklenen bir dağıtım kullanmasının yasal nedenleri olabilir ve kendi şirketinizi yuvarlamak, örneğin kullanıcı verilerinin korunması gerekiyorsa şirketi sorumluluk konularına kadar açabilir. Desteklenmeyen, evde yüklü paketiniz bir güvenlik düzeltmesini kaçırdığınız için kullanıcı verilerine sızdırıyorsa, artık Red Hat'ı işaret edemez ve "İşletim sistemlerini çalıştırıyorduk ve güncel tutmak için onlara ödeme yaptık" diyemezsiniz.
Andrew Henle

6

Matthew Ife ve shodanshok'un cevapları genel olarak meseleleri kapsıyor, ancak sorunları tam olarak yönettiğim bu tür sistemler olduğu için bağlam içine koyarak özel endişenizi ele almak istiyorum.

PHP / MySQL web uygulamalarını dağıtmak için kullandığım derleme:

İlk olarak, neden belirli bir dağıtım veya paket setini seçtiğimizi düşünelim. Ya en son özelliklere göre kararlılığa değer veriyoruz ya da en son özelliklere kararlılığa göre değer veriyoruz. Dengeleme yazılımı hataları düzeltmek için zaman gerektirdiğinden ve yeni özellikler eklemek hataları ve dolayısıyla kararsızlığı beraberinde getirdiğinden, her ikisinin de aynı dağıtımda olması mümkün değildir.

Genel bir kural olarak, uygulamanın çalıştığı işletim sisteminin olabildiğince kararlı olmasını, ancak oldukça modern bir özellik kümesi olmasını istiyorum. Bu nedenle, bu noktada oldukça eski olan CentOS 7'yi CentOS 6'dan seçeceğim ve işe yarayacak olsa da, destek yaşam döngüsünde çok fazla zaman kalmadı, bu yüzden yeni bir proje için kullanmayacağım .

Ancak, daha sonra CentOS dahil nginx sürümünün çok eski ve bazı gerekli özellikleri ve hata düzeltmeleri yoktu sorunu ile karşılaştı . Böylece alternatif paketler aramaya gittim ve nginx.org'un kendi paketlerini dağıttığını gördüm. Onlara hemen geçtim ve uzun yol boyunca mükemmel bir şekilde kararlı buldum.

Sonra PHP var. Geçmişten CentOS ile gönderilen PHP sürümünün şimdiye kadar aldığı tek sürüm olacağını ve sadece güvenlik güncellemelerini alacağını biliyorum; yeni özellik veya hata düzeltmesi yok. Bu nedenle, bir kez akış yukarı desteksiz olduğunda, sonunda bu paketleri kullanırsam modern PHP web uygulamalarını çalıştıramayacağım. Bu yüzden bunları değiştirmek de gereklidir.

Uzun deneyimlerden öğrendiğim kadarıyla, PHP ile hata düzeltme sürümlerini izlemenin en iyi yol olduğunu öğrendim, sadece bir nokta sürümünde donmak ve sadece güvenlik düzeltmeleri almak değil, çalıştırdığım web uygulamaları da güncellenecek ve bu hata düzeltmelerine ihtiyaç duyacak. Bu yüzden birçok farklı PHP paketini değerlendirdikten sonra, remi'nin pacaklarına yerleştim. Remi bir Red Hat çalışanıdır ve ayrıca RHEL / CentOS'taki PHP paketlerinden de sorumludur. Bu yüzden paketlerinin yüksek kalitede olacağını biliyorum ve öyleydi. Bunlar sistem paketleri için bırakılan yedeklerdir ve mükemmel çalışırlar.

Sonunda MariaDB'ye gidiyoruz. Sen edebilirsiniz Burada sistem paketlerini tutmayı tercih ve hiçbir kötü etkisi muzdarip. TokuDB ve CentOS ile birlikte gelen 5.5 sürümünde bulunmayan diğer performans geliştirmelerinden yararlanmak için MariaDB'nin 10.0 paketlerine geçmeyi (ve yakında 10.1'e geçmeyi) seçtim ve asla büyük yükseltmeler almayacak.


Genel olarak temel sisteminizde kararlılığa ihtiyacınız vardır, ancak web uygulamaları, iş dünyası yazılımlarından çok daha hızlı değişir ve sunucunuzun devam etmesi gerekir. Bu nedenle, yükseltme paketlerinin ek yönetim yükü (iş olarak da bilinir) ile net faydalar sağlayacağı hedeflenen noktaları seçtim.


5

Kısa cevap, her zaman sistem depoları tarafından sağlananları kullanın. Be çok dikkatli sen de kurarım havuzlarınıza neyi. Bazıları sadece kötüdür.

Sistem paketlerini daha yeni sürümlerle birlikte yazmamalısınız, Redhat çok dikkatli bir şekilde tasarlanmış ve düzenlenmiştir ve bunu yaparsanız garip hatalar veya sorunlar yaşayabilirsiniz.

Dikkate alınması gereken ve dikkat edilmesi gereken bazı hususlar şunlardır.

  1. Bazı depolar kötü bir şekilde korunur. Paketler için güvenlik düzeltmeleriyle güncelleme yapmazlar.
  2. İnsanlar kötü RPM yazma eğilimindedirler, yapılandırma dosyalarını yapılandırma dosyaları olarak işaretlemezler, bu da her güncelleme yaptığınızda yapılandırmanızın üzerine yazar ve bu da sorunlara neden olabilir. Bu sorunu daha önce görmüştüm.
  3. Bağımlılıklarını yeterince beyan etmiyorlar. Bunu daha önce de gördüm, burada bir phppaket sisteme kondu, ancak pearsorunları tanıtan paketi güncellemedim .
  4. Tümü aynı paket adlarını sunan birden çok havuz yüklemek, sisteminizde öngörülemeyen bağımlılık sorunlarına yol açabilir.
  5. Bazı paketler, diğer paketlerin bağımlı veya var olmasını beklediği sistem yapılandırma dosyalarının üzerine yazar veya bunları yeniden yazar. Bu, beklemeyebileceğiniz diğer paketlerle ilgili sorunlara yol açar.

Asla paketleri kaynaktan oluşturmayın ve orada bulunan paketlerin üzerine kurmayın. Bu, sistem paketinizin bütünlüğünü bozarak, alma unresolved symbolveya undefined referencemesajlar gibi garip ABI sorunlarına yol açabilir . Sistemin, belirli bir sistemde hangi yazılımın dağıtıldığına dair güvenilir ve doğru bir indeks tutması oldukça önemlidir, her şeyin birbiriyle düzgün bir şekilde çalışmasını sağlamak için, RPM'leri ilk etapta kullanmamızın nedeni budur.

Bunu çözmenin geçerli (ve Redhat kutsanmış) yolu yazılım koleksiyonlarını kullanmaktır.

www.softwarecollections.org

Yazılım ve onun 'yeni' bağımlılıklarını kendi kökünde kurar. Bu, paketi ortamınıza uygulamayı biraz zorlaştırabilir, ancak sisteminizi garip hatalardan veya sorunlardan korur. Ayrıca paketleri kendi ad alanlarına yükler ve bir paketin birden çok sürümünü paralel olarak yüklemenize olanak tanır.

Web sitesi, bu paketlerin nasıl kurulacağı ve etkinleştirileceği hakkında talimatlar verir, insanların eski CentOS ve Redhat sürümlerinde (özellikle EL6) özlediklerinin çoğunu içerir. Bu web sitesinden başarıyla kullandığım bazı şeyler.

  • MySQL 5.6 ve MySQL 5.7, MariaDB.
  • PHP 5.5 ve PHP 5.6
  • Apache 2.4

Bu konudaki varsayılan konumunuzun, Redhat veri havuzlarının ittiklerini ayarlamak olmamalıdır. Bunun yerine, bir paketin gerçekten güncellenmiş bir sürümüne gerçekten ihtiyacınız olup olmadığına, özellikle de özel gereksinimlerinizin ne olduğuna, hangi sorunları düzeltmesi gerektiğine ve hangi riskleri ortaya çıkardığına dair bir değerlendirme yapın.

Genel bir kural olarak, sürekli güncellenen yazılıma ihtiyaç duyduğunuzu ve / veya işleri paketlemek için aynı paketlerin birden fazla paralel versiyonunu gerektiriyorsanız, bu genellikle yanlış bir şey yaptığınızın bir göstergesidir.


1
Kullanıcı uygulamaları gibi bazı sistem paketleri, paketleyicinin ne yaptığını biliyorsa , güvenli bir şekilde ve hiçbir olumsuz etkisi olmadan daha yeni sürümlerle değiştirilebilir . Ancak kütüphaneleri bu şekilde yükseltmek güvenli değildir ; bunu yapmaya çalıştığınız, bahsettiğiniz ABI hatalarına neden olan şeydir. Ne yazık ki neyin güvenle yükseltilebileceği ve nasıl yapılacağı bilgisi paketleyiciler arasında yaygın görünmüyor. Red Hat bile bazen bunu yanlış anladı . OTOH, Yazılım Koleksiyonları kullanmak için kıçından bir kraliyet ağrısı ...
Michael Hampton

1
nginxböyle 'hepsi bir arada' paketlerinden biridir. Ancak, httpd(libapr bağımlılıkları) ve mysql(libmysqlclient bağımlılıkları) özellikle değildir. Bu paketlerin her ikisinin de kötü güncellemeleri geçmişte pythonve phpbenim için hatalara neden oldu . Buradaki sorun, ne arayacağınızı bilmediğiniz sürece, bir paketin diğeriyle nasıl etkileşime girdiğini bilmek basit değildir (çeviri: daha önce yanmıştı).
Matthew Ife

2
MariaDB gibi bir şeyi gerçek bir sorun olmadan yükseltebilirsiniz, çünkü eski sistem sürümüne bağlı programların çalışmaya devam etmesine izin vermek için bir uyumluluk kütüphanesi taşır. Sadece paketi yüklemeyi hatırlamanız gerekir (ve eğer yapmazsanız yum şikayet etmelidir). PHP, onunla birlikte güncel tutulması gereken bir çok bağımlılığa sahip olduğu için daha karmaşıktır ve paketleyici bunu yapmazsa, paketler işe yaramaz. Neyse ki, remi de RHEL'in PHP bakıcısı olduğu için, bunların ne olduğunu biliyor ve paketleri iyi.
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.