Kaynaktan bina ve bir yükleme paketi kullanmak arasındaki fark nedir?


46

Merak ediyordum: bir şeyi kurarken, yüklenebilir bir dosyayı çift tıklamanın kolay bir yolu var, öte yandan, kaynaktan oluşturmanın bir yolu var.

İkincisi, bir kaynak paket indirirken, gerçekten hantal.

Ancak bu iki yöntem arasındaki temel fark nedir?

Yanıtlar:


44

Tüm yazılımlar kaynak paket olarak da adlandırılan programlardır . Tüm kaynak paketleri gereken Yani inşa öncelikle sisteminizde çalıştırmak için.

İkili paketler zaten gelen derlenecekleri biri kaynağın kullanıcıları çok sayıda yüklemek ve kullanmak, böylece yazılımda verilen genel özellikleri ve parametreleri ile birileri tarafından.

İkili paketlerin kurulumu kolaydır .
Ancak yukarı akış paketindeki tüm seçeneklere sahip olmayabilir .

Bu yüzden kaynaktan kurmak için kaynak kodunu kendiniz oluşturmanız gerekir. Bu, bağımlılıklara kendiniz bakmanız gerektiği anlamına gelir. Ayrıca paketin tüm özelliklerinin de farkında olmalısınız ki böylelikle onu uygun şekilde oluşturabilirsiniz.

Kaynaktan yükleme avantajları:

  • En son sürümü yükleyebilir ve bir güvenlik düzeltme eki veya yeni bir özellik olsun, her zaman güncel kalabilirsiniz.
  • Gereksinimlerinize uygun şekilde kurulum yaparken özellikleri kısaltmanıza izin verir.
  • Benzer şekilde, ikili sistemde bulunmayabilecek bazı özellikler ekleyebilirsiniz.
  • İstediğiniz bir yere kurun.
  • Bazı yazılımlarda, uygun bir kurulum için donanıma özgü bilgileri sağlayabilirsiniz.

Kısacası kaynaktan yükleme, size ağır kişiselleştirme seçeneği sunar, aynı zamanda çok fazla çaba gerektirir, bununla birlikte ikili sistemden kurulum daha kolaydır, ancak istediğiniz gibi özelleştiremeyebilirsiniz .

Güncelleme : Güvenlik ile ilgili argümanı aşağıdaki açıklamalara ekleyin. Evet, ikiliden kurulum yaparken kaynak kodun bütünlüğüne sahip olmadığınız doğru. Ama o zaman ikiliyi nereden aldığına bağlı. Herhangi bir yeni projenin ikilisini alabileceğiniz birçok güvenilir kaynak var, tek olumsuz zaman . Güncellemelerin ikilisinin ya da güvenilir havuzlarımızda ortaya çıkacak yeni bir projenin zaman alması biraz zaman alabilir.

Ve her şeyden önce, yazılım güvenliği hakkında , aşağıdaki yorumlarda Joe tarafından sağlanan çan laboratuarlarında bu eğlenceli sayfayı vurgulamak istiyorum .


4
kaynak da sisteminiz için optimize edilmiş bir şekilde derlenebilir (ki bu iyi bir fikir olmayabilir, çünkü o zaman derlenen şeyler sisteme özeldir ve yedeklemede işe yaramayabilir ... ama kaynak, (eğer bunun için zamanınız varsa) yeniden
derleyebilirsiniz

Bu, "yedekleme sistemi" nizin olup olmadığına bağlıdır. Sadece biraz araştırma yapıyorsanız, genellikle yapmazsınız.
h22

1
Hiperparanoid için, kaynaktan yükleme yapmanın bir avantajı güvenlik ve aşağıdakileri yapabilmeniz ve istemeniz durumunda kodu inceleme yeteneğidir: kaynaktan yüklediğinizde, bu kaynak kodundan bir ikili dosyaya sahip olduğunuzu biliyorsunuzdur. bilinmeyen değişikliklere sahip bir ikili (kaynağa ilk etapta güvendiğinizi varsayarsak).
LawrenceC,

6
@ultrasawblade - Belli ki yeterince paranoyak değilsin! <G> - tam mont için cm.bell-labs.com/who/ken/trust.html adresini ziyaret edin.
Joe

32

Kaynak dosya, hangi dilde seçerse (C, C ++, Python vb.) Geliştirici tarafından yazılmış orijinal kodu içerir ve geneldir. Herhangi bir dağıtıma ve birçok durumda herhangi bir işletim sistemine özgü değildir.

Bir paket (örneğin RPM veya DEB), özel dağıtımınız için önceden hazırlanmış olan ikili çalıştırılabilir dosyadır (veya yorumlanmış komut dosyası vb.). Kaynağı derlemek için hazırlık görevi (gerekli yamaları ekleyerek, vb.), Asıl derlemeyi, distro'ya özgü yapılandırma dosyalarını oluşturma, yükleme öncesi ve sonrası komut dosyaları oluşturma vb.

Başka bir deyişle, tüm eşek işleri sizin için bir pakette yapıldı, ancak kaynaktan yüklemeyi seçerseniz, kendiniz yapmanız gerekecek.

Neredeyse her durumda bir paketi kullanmak çok daha kolaydır:

  • Yüklemeleri çok daha kolaydır
  • Dağıtımınızla çalışmak için özel olarak tasarlanmıştır
  • Bazen, belirli sorunları gidermek için paket koruyucu tarafından eklenirler
  • Paket yöneticisi bunları kaldıracak
  • Paket yöneticisi sizin için tüm bağımlılıkları yönetecektir
  • Paket yöneticisi güncellemeleri halleder
  • Sisteminize geliştirici araçları kurmanıza gerek yoktur (derleyiciler, make vb.)

Bununla birlikte, bazen paketlenmiş sürüm eski bir sürümdür veya daha da kötüsü, paketlenmiş sürüm yoktur; bu durumda tek seçeneğin kendini derlemektir. Bunu yaparsanız, aşağıdakileri göz önünde bulundurmanız gerekir:

  • Tüm geliştirici araçlarını sisteminize yüklemeniz gerekecek
  • Bir güncellemeyi kontrol etmekten ve yeniden derlemekten siz sorumlusunuz
  • devPaketler de dahil olmak üzere tüm bağımlılıkların yüklendiğinden emin olmanız gerekir - çoğu olabilir.
  • Durumunuzda beklendiği gibi çalışmazsa, sorunları ayıklamanız gerekebilir

Ekstra çaba göstermeye istekliysen, kaynaktan derlemek sana şu avantajları sağlayabilir:

  • Mevcut en son sürüme erişim
  • Derleme işlemini performans / istikrar için optimize etme seçeneği
  • Keyfi!

Bazı dağıtımların önceden oluşturulmuş paketlerinin kurulmaya ve çalışmaya hazır olan ikili çalıştırılabilir dosyalar sunarken (RPM ve DEB örneklerdir), diğer dağıtımların yalnızca derleme işlemini otomatikleştiren paketler sağladığını unutmayın.

Gentoo'nun buna ebuildsbir örneği - paket temelde çalıştırılabilir paketin nasıl derlenip kurulacağını açıklayan paket yöneticisine talimat verir. Bu, kullanıcının derleme işlemini kendi zevkine göre optimize etmesine izin verirken, geleneksel paket yöneticilerinin (otomatik güncellemeler, kaldırma vb.) Avantajlarının çoğuna sahiptir.

Arch Linux, ana paketlerin ikili olduğu bir paketleme sistemine sahipken, sistemde birçok ek paket PKGBUILDdosyalar kullanarak derlenmiştir .


19

Diğer cevapların yanı sıra bir şeyler eklemek istiyorum:

Bir programı kendiniz derlemeye karar verirseniz, derlemenin sadece bir kez yaptığınız bir şey olmadığını düşünmeniz gerekir. Derlemeye karar verdiğiniz uygulamaların geliştirme posta listesine abone olmanız ve yeni sürümlerle ve özellikle de güvenlik güncellemeleriyle güncel kalmanız gerekecek.

Uygulama her güncellendiğinde, yeni sürümü yeniden derlemeniz gerekecek, her hafta zamanınızı biraz ayırmanız gerekeceğini unutmayın.

Bunu karşılayamazsanız, paket sorumlusunun bu işi sizin için yapmasına izin vermek daha iyidir.


6

Kaynaktan inşa etmek, tam olarak makinenizin mimarisini belirlemenizi sağlar. Yeni CPU'larda, derleyicilerin anladığı, biraz performans gösterdiği sıkıştıran ek talimatlar var. Önceden oluşturulmuş paketler genellikle hala kullanılan en arkaik CPU'lara dayanır.

Bu, örneğin, biyoinformatik boru hattı araçları veya jeofizik modelleme araçları gibi CPU'yu çok yoğun kullanan proje kritik uygulamaları için önemlidir. Bu tür bir yazılım çok kontrollü bir ortamda çalışır, kendi başına erişim kontrolüne sahip değildir, bu nedenle nadiren günler veya saatler içinde yamalanmaları gereken güvenlik hataları vardır. Neredeyse hiçbir zaman başlangıçta bilinmeyen mimariye sahip farklı bir makinede çalışması gerekmez.

Evet, bilgisayarların şu anda çok çok hızlı olduğunu biliyorum ve aldığınız her türlü çaba ya da eylem çok çok pahalı, ancak oturduğunuz ve programınızın tamamlanmasını beklediğiniz üçüncü günde (bu konuştuğum durum bu) bu gerçekler şüpheli görünmeye başla.

Farklı olarak, tarayıcılar ve benzerleri gibi uygulamalar, güncel tutmaları için çok önemli olduğu için, bakım deposundan (ve bazı indirilmiş önceden oluşturulmuş paketlerden değil) daha iyi kullanılmalıdır.


İşlemcinizden en iyi şekilde yararlanmanız için böylesi tweaks fark yaratırsa (bu sadece bazı çok özel kodlarla ilgilidir; demek ki zamanın% 95'i kodun% 5'inde harcanır, bu yüzden diğer% 95'i optimize eder) farkedilir bir fark yaratmaz ve günümüz programlarının çoğu kullanıcının yine de kararını vermesini bekleyen zamanın% 99'udur), programlar başlangıçta CPU'ya bağlı olarak açık olması gereken farklı kodlar sunar.
vonbrand

0

Her iki dünyanın da en iyisini elde etmenin bir yolu (güncel yazılımlar, basit yükleme / kaldırma, çoğu dağıtım ayarlaması ve uyarlaması dahil, yerel gereksinimler için en uygun hale getirilebilir), maliyetler (kendinize yetişmek, hatalara dikkat etmek zorunda) ve son dakika yamaları, gelişmeleri takip et, kendi başınasın, hata düzeltmeleri ve sürümler arasındaki uyumsuzluklar nedeniyle) hafifletilemez (çok), kendi paketlerini oluştur, dağıtımından kaynak paketlerinden başlayarak. Evet, sadece inşa etmekten ve kurmaktan daha fazla iştir.


1
İlginç bir cevap gibi görünüyor ("her iki dünyanın en iyisi"), ancak burada ne demek istediğinizi tam olarak anlayamıyorum: "dağıtımınızdaki kaynak paketlerden başlayarak kendi paketlerinizi oluşturmaktır". Tekrar anlatmaya / açıklamaya dikkat eder misiniz?
Jan Żankowski,
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.