Neden bazı açık kaynaklı kütüphaneler ikili dosyalar sağlamaz?


15

Neden bazı açık kaynaklı kütüphaneler ikili dosyalar sağlamaz? Bazı projelerin, özellikle Windows sürümleri için, yazılımın güncel sürümlerini koruyan üçüncü tarafları ertelediğini fark ettim.

Soruyorum çünkü bir kütüphanenin kabulü için bir engel gibi görünüyor. Geliştirmek için daha fazla iş, çünkü onu oluşturmak için ortamını kurması gerekiyor. Bir geliştirici, kütüphaneyi yanlış bir şekilde oluşturarak hataları tanıttığından endişe etmelidir.


EDIT : Yorumlar ve cevapları ele almak için bazı güncellemeler. Tartışmanın merkezinde olmadığı için örnekleri kaldırdım. Ayrıca sorumu açık kaynak kütüphaneler sağlama eğilimi yerine “bazı açık kaynak kütüphaneleri sağlama” olarak yeniden ifade etti… insanların buna zarar vereceğini anlamadı.


7
"Bakmak"? İki örnek bir eğilimdir? Talebinizi destekleyecek daha fazla veriniz mi var?
S.Lott

3
Linux paket yöneticileri genellikle ikili dosyaları dağıtmak için kullanılır, bu yüzden bu referansı anlamıyorum.
David Thornley

7
Çünkü tembel tencerede sigara içen kolejli hippiler (en kötü hippiler).
Meslek

7
Evet, dünyanın yarısının kullandığı ücretsiz hippiler yazma yazılımı, onları vidalayın!
Tamás Szelei

3
@CodeinChaos: Yıllardır kaynaktan inşa etmedim. Fedora, Mac OS ve OpenSuSE bu "eğilim" için tuhaf istisnalar olmalıdır. Bu kadar zayıf bir şekilde desteklenen hangi işletim sistemini kullanıyorsunuz? Mümkünse bundan kaçınmak istiyorum.
S.Lott

Yanıtlar:


11

Çünkü windows ikili dosyaları yapmak tamamen farklı bir bilgi tabanı ve araç seti gerektiren tamamen farklı bir iştir. İnsanlar bunu Linux geliştiricileri hakkında kavramakta zorlanıyor gibi gözüküyor.

  • Sonsuza dek görünen şey için Windows'u kullandınız.
  • Evde yalnızca Windows yüklü.
  • Linux'u burada ve işte kullandınız, ancak sadece bir kullanıcı olarak, Linux için yönetim veya geliştirme yapmadınız.
  • Gcc'nin Linux için en yaygın olarak kullanılan derleyici olduğunu biliyorsunuz, ancak bunu asla kendi bilgisayarınıza yüklememişsiniz.
  • Genellikle Windows üzerinde kendiniz için yazılım üzerinde çalışıyorsunuz, ancak başka biri uyumlu hale getirmek ve ikili dosyaları dağıtmak için başka bir şey yaparsa Linux için hata düzeltmeleri yapmayı düşünmeyin.
  • Zaten sahip olan biri yapıları yapmak için mükemmel bir istek duyduğunda başka bir işletim sistemi ve araç zinciri için ödeme yapmak istemezsiniz.

2
Özetle, bazı programcılar diğer platformlar için ikili dosyalar oluşturma bilgisine, kaynaklarına veya motivasyonuna sahip değildir.
M. Dudley

11

Kahire bir kütüphane, bir uygulama değil. Postgres'in Windows ikili dosyaları var gibi görünüyor . Daha küçük projeler genellikle altyapı / kaynaklara sahip olmadıkları için yapı sağlamaz.


4
+1 özellikle "kaynaklara sahip değil". Windows için bir lisans yoksa Zor vb (çapraz derleyici ile deneye veya zamanı) Windows derleyici yok, bir test, Windows yapı sağlamak
Steve314

1
@ Steve314: Herkesin açık kaynak gcc veya ücretsiz Visual Studio Express olan bir Windows derleyicisi var.
gbjbaanb

1
Bir kütüphane de ikili, yani dll olabilir. Genellikle derleyici (yüklü) veya orijinal kitaplığı oluşturmak için bağımlılıklarım yok. Kütüphaneler için bile ikili dosyaları almak gibi.
CodesInChaos

4
@CodeInChaos: Linux .dllçok sık kullanmaz , bu yüzden bu ikili dosyalar bazılarımız için büyük ölçüde yararsız olacaktır. Saf kaynak daha iyi olurdu.
S.Lott

9
@gbjbaanb: Herkesin Windows derlemesi yok, derleyici değil.
David Thornley

9

Bu, "bir şey yapılmasını istiyorsanız, bir kürek al" açık kaynak felsefesinin bir parçasıdır. Doğal olarak, kullanıcılar sadece programı kendileri derlerse, geliştiriciler üzerindeki iş yükünü azaltır. Tüm bu mimariler, işletim sistemleri, vb. İçin endişelenmenize gerek yok ...

Ancak, tüketici düzeyinde bir ürün (Firefox, Paint.NET, Audacity, Keepass, vb.) Üretiyorsanız ve kullanıcı edinmeyi önemsiyorsanız , her zaman, her zaman, her zaman! ikili dosyaları içerir. Muhtemelen web sitenize rastlayan ve ürününüzle ilgilenen kişilerin yalnızca% 2'si şunları yapacaktır:

  • Uygun SCM istemcisini indirin
  • Kaynak ağacın bir kopyasına göz atın
  • Gereken IDE veya derleyici araçlarını indirin (bazı projeler için kolayca birkaç yüz MB)
  • Gereken tüm bağımlılıkları indirip yükleyin (ve çevresel değişkenleri ayarlayın)
  • Yeni bir derleme yapın (bazı projelerde kolayca 10 dakikalık bir işlem yapın)
  • Herhangi bir hata veya problemle veya ortaya çıkan (küçük projelerde muhtemelen belgelenmemiş - "oh evet, sonuncusu gövde yeniden değil, gövde değil!")
  • Her şeyi kaldırın veya bilgisayarınızda bırakın ve güncellemeler için yeniden derleyin.

(Açıkçası linux olaylarında çok daha akılcı, ancak çoğu tüketici hala Windows'u kullanıyor.)

Yeni gelenler için "ooh, Windows sürümü! İndir. Çalıştır" demek çok daha kolay.

Ancak, birçok açık kaynaklı proje tüketici düzeyinde değildir ; bu tür çile için çok daha yüksek toleransa sahip programcıları hedef alıyorlar ve bu nedenle ikili dosyalar DIY. Deneyimlerime göre, programcılar kullanıcılar kadar tembel olabilir, bu yüzden uyarılmalıdır. :)


Bunlar tam olarak soruyu sormamı sağlayan sorunlar.
M. Dudley

3
IDE'nin inşa edilmesini gerektiren bir projeyi kim dağıtır? Ve insanlar genellikle SCM'lerde dağılmazlar. Daha çok wget, tar xfz, ./configure, make, su -c 'make install' gibi ...
alternatif

Adil noktalar, mathepic. Ve daha modern SCM ana bilgisayarları (GitHub gibi), en son sürümün sıkıştırılmış bir kopyasını yine de indirmenize izin verecektir.
Phil Cohen

@mathepic: Windows geliştiricileri, işte bu.
Stuart P. Bentley

@Stuart VS projeleri sadece msbuild dosyalarıdır. IDE gerekmez.
alternatif

6

Bir Kez Yazma Her Yerde Derleme ortamında (C, C ++, vb.) Yazılmış uygulamaların yaratıcıları , derleme adımını popüler mimariler için ikili dosyalar oluşturan ve paketleyen dağıtıcılara (apt, rpm, yum, vb.) Bu, içerik oluşturucular açısından daha az çaba harcayarak maksimum taşınabilir bir uygulama sağlar ve temel yetkinliklerine odaklanmak için daha fazla zaman harcamasına izin verir (uygulamayı geliştirmek, birden fazla mimaride derlemek ve barındırmamak). Bazı WOCA uygulama yaratıcıları, Windows gibi özel durumlarda ekstra maliyet ödemeye hazırdır, çünkü - başka hiç kimse, kullanıcılar bunu beklemez ve piyasayı bırakmak istemezler.

Öte yandan, Bir Kez Çalıştır Herhangi Bir Yere Ortamında (Java) veya belirli bir hedef mimaride (örneğin OS X uygulamaları) yazılan uygulamalar tek bir ikili dosya sağlayabilir ve bunu yalnızca derlemeyi ödemek zorunda oldukları için yapabilirler. maliyeti bir kez.

Son olarak, kullanıcıları genellikle kaynaktan inşa etmek veya işletim sistemi paket yöneticilerini kullanmak konusunda rahattır, bu nedenle bu model de daha iyi kullanılabilirlik sağlar. Kullanıcılar ikili dosyaları (paket yöneticilerini) nereden edinebileceklerini, tutarlı bir kurulum ve paket yönetimi yaşam döngüsü deneyimine sahip olduklarını ve ihtiyaç duyduklarında kaynağı nereden elde edeceklerini bilirler.


2
Bir kez-çalıştır-her yerde yaz ile ilgili bir sorun, sanal makinenin O / S açısından kendi başına bir program olmasıdır. Örneğin, çoğu Windows güvenlik duvarı, uygulamalara göre ağlara erişim vermenize / reddetmenize izin verir. Ancak çoğu bir Java uygulamasını diğerinden anlatamaz - JVM'ye erişim izni verir / reddeder, ancak bir internet sunucusu (belki de Azureus) gibi davranan bir Java uygulamanız varsa, güvenlik duvarı bilinmeyen bir haydutu engellemez Sunucu olarak işlev görmesini engelleyen Java uygulaması. Java'ya özgü bir çözüm varsa, bunu bilmeyen bir Java kullanıcısı örneğiyim.
Steve314

1
@Steve seninle aynı fikirde değilim ama WOCA veya WORA'nın artılarının / eksilerinin bu soru ile ne kadar alakalı olduğunu gerçekten görmüyorum.
Rein Henrichs

teğetsel, doğru, ama zaten bir Linux vs Windows vs dini savaş, belki de daha az suçlardan biri. BTW - Cevabınızı yararlı olarak + 1'ledim.
Steve314

Dini savaş yay! Katranı alacağım, tüyleri mi aldın?
Rein Henrichs

5

Neden size verdiğim kaynağı oluşturmaktan ziyade size bir derleme (ki bu çok büyük olabilir) sağlayan bant genişliğini çiğnemek isteyeyim ki? Kendi makinenizde bir proje oluşturmanın, platformunuz için özel olarak derlendiği için her zaman daha iyi sonuçlar vereceğinden bahsetmiyorum .


4
+1 - ancak "her zaman" (kullandığınız platforma bağlı olarak) şüpheliyim ve bu avantajlar kullanıcıya bir maliyet getirebilir - bir derleyiciye ihtiyaç duyulur, nasıl kullanılacağını bilmek, nasıl yapılacağını bilmek gerekir sadece sizin platformunuzda ortaya çıkan garip hataları araştırmak ve bildirmek için zaman harcaması gereken özel bir proje.
Steve314

1
@ steve314: +1, tüm gerçek puanlar :)
Demian Brecht

7
Birkaç ikili dosya genellikle o kadar büyük değildir. Ve kullanıcıya zaman maliyeti genellikle çok büyüktür. Tüm bağımlılıkları bulmak ve bu projeyi nasıl oluşturacağınızı bulmak oldukça zaman alır. Kullanıcınız bir programcı olsa bile. Eğer kullanıcı programcı değilse, ürününüzü hemen hemen unutabilir. Bence performans argümanı abartılı. Genellikle bu son performans yüzdesine ihtiyacınız yoktur ve bunu yaparsanız yine de kaynaktan nasıl yapılacağını anlayabilirsiniz.
CodesInChaos

1
@codeinchaos: Bu tamamen projeye göreceli (boyut). Bir yapı, tek bir ikili dosya veya ikili dosyalarda ve derlenmemiş varlıklarda (düşünme oyunları) yüzlerce MB (daha fazla değilse) içerebilir. Tabii ki, bazen bağımlılıkları çivilemek biraz acı verici olabilir, ancak bu bir liste sağlamak için bir paketin yazarına veya bağımlılıkları indirme / inşa etme / inşa etme mekanizmasına bağlıdır (FreeBSD'nin bağlantı noktaları koleksiyonu bunun için harikadır ) . Programcı olmayanlara yönelik projelerde neredeyse her zaman bir yerde bir ikili / kurulumcu listesi bulunur.
Demian Brecht

Aslında, birçok açık kaynak projesi olağan anlamda "ürün" değildir. Açık kaynak, çeşitli biçimlerde katkılara izin vermekle ilgili olduğundan, başkalarının bunu nasıl yapacağını bilen ve bunları sürdürmek için zamana sahip olan ikili dosyalar sağlaması iyi bir fikir gibi görünüyor.
haylon

2

İki sebep düşünebilirim.

İlk olarak, birden fazla donanım türünde çalışan birden çok işletim sisteminiz vardır; oluşturmak istediğiniz ikili hedeflerin sayısı yönetilemez hale gelir. 32-bit veya 64-bit donanımda çalışan üç Windows sürümü (XP, Vista, 7) hala vardır; 6 ikili hedef var. Linux tarafında durum daha kötü, Tanrı üzerinde çalışan çok daha çeşitli dağıtımlar hangi donanımın (x86, PPC, MIPS, SPARC, PA-RISC, vb.) Her olası kombinasyon için inşa edecek misiniz ? Bunu yapacak ekipman ve / veya yazılımınız var mı? Dışarıda hala bir PII üzerinde NT çalıştıran biri varsa (Tanrı bize yardım eder), onlar için bir ikili oluşturacak mısınız?

İkincisi, nakliye kaynağı, kullanıcıların yapıyı kendi ortamları için optimize edebileceği anlamına gelir; ihtiyaç duydukları optimizasyonları açabilir veya gerekirse kaynak ayarını yapabilirler.


bu yüzden cevap Sourceforge's build sunucular gibi bir şey kullanmak sanırım. Checkin, size bir sürü ikili dosya oluşturmalarına izin verin. Mesela en.opensuse.org/Build_Service
gbjbaanb

1
Bu programlar genellikle herhangi bir özel Vista / Win7 özelliği kullanmadığından ve 32 bit programlar 64 bit işletim sistemlerinde çalıştığından, tüm Windows kullanıcıları için neredeyse her zaman tek bir 32 bit WinXP ikili dosyasından kurtulabilirsiniz.
CodesInChaos

@CodeInChaos - +1 - bazı projeler hem 32 bit hem de 64 bit ikili dosyalar sağlar, ancak bundan daha fazla varyasyon sağlar. Yine de geçerli bir nokta.
Steve314

@gbjbaanb - Bir cevap, kesinlikle, ama muhtemelen cevap.
Steve314

2

Tipik olarak, açık kaynak kodlu bir projenin değeri, bir uygulama, sistem, modül veya kütüphane olsun, gerektiğinde çalışılabilmesi ve / veya değiştirilebilmesidir. Kaynağın dağıtılması, yayınlama modeline özgüdür.

Bir ikili dağıtmak hain amaçlarla bazı şekillerde değiştirilme riskini taşır. Projeyi kaynaktan derlemek bu riski azaltmaya çalışır.


Uygulamalar için kullanıcıların% 90'ı kaynağa asla bakmayacaktır. Ve manipülasyon riski, çoğu ikili dosya indiricisinin almak istediği bir şeydir. Bir kaynak kodun kötü amaçlı kod içermediğini doğrulamak için yapamazlar (ve yapabilseler bile çok tembel olurlar).
CodesInChaos

2
Doğru, ancak OP açık kaynaklı projelerin neden "kullanıcı olarak değil, neden tüm bunları derlemem gerekiyor?" ;-)
Rob Raisch

Ama sen ikilinin değil, kaynağın almasının neden daha iyi olduğuna dair argümanlarsın.
CodesInChaos

1
Komik, cevabımda ya da asıl sorumda 'kullanıcı' kelimesini göremiyorum. Belki kendi cevabımı yanlış okuyorum?
Rob Raisch

1
"İkililer vermemek için bir sebep" sağlamaya çalışmadığım için yorumlarımı yanlış yorumlama konusunda cehennem gibi görünüyorsun. Açık kaynak kodlu projelerin neden kaynak kod olarak dağıtıldığına dair bir açıklama yaptım. Oynadığınız için teşekkürler ama bu benim son yorumum.
Rob Raisch

1

Bunun birkaç nedeni olabilir. Birçok (en olmasa da) açık kaynaklı proje Linux'ta başlar. Böylece ilk proje bu sistem için ve paketleme ekip üyeleri tarafından yapılır.

Windows yükleyicisi oluşturmak, Linux geliştiricilerinin sahip olmayabileceği bilgileri gerektiren ekstra bir iştir. Yani çekirdek ekip dışından biri bu işi üstlenirse, genellikle özel olarak bahsedilir.

Aynı şey OS X ve hatta belirli Linux dağıtımları gibi diğer sistemler için de geçerli olabilir. Her şey ekstra işi kimin yapacağı bilgisine ve zamanına bağlıdır.


Bir windows yükleyici nadiren gerektirir. İkili dosyaları içeren bir zip dosyası da gayet iyi. Ancak elbette, birçok linux tabanlı geliştiricinin programlarının bir Windows sürümünü umursamayacağı konusunda haklısınız.
CodesInChaos

1
Bir zip dosyası Windows dünyasında büyük bir handikap olabilir. 'Bu dosyayı indirdim. Şimdi tıkladığımda pencereler bana "bilinmeyen dosya biçimi" ni yardım forumlarında oldukça yaygın bir problem olarak söylüyor.
thorsten müller

Tüm eşyalarımı .zip dosyaları olarak yayınladım. Bu bağlamda aldığım tek şikayet, bir bağlantı oluşturmak yerine exe dosyasını masaüstüne kopyalamayı başaran bazı adamlar olduğunu düşünüyorum. Ancak her durumda, kaynaktan inşa etme zorluğu, bir şeyi açığa çıkarma zorluğundan çok daha yüksektir.
KodlarInChaos

1
Kısmen kullanıcı tabanınıza bağlıdır. Yalnızca programcılar tarafından kullanılan bir kitaplık yayınlarsanız, zip dosyalarıyla sorun yaşamayacaksınız. Zip yeterince kolaydır, bu nedenle temel bilgiye sahip her kitle bunu yapar. Zip sorusunu yeterince sık
görmeme

1
XP + 'da zip dosyalarının işletim sistemi tarafından yerel olarak işlendiğini ve yeterince çift tıklamanın dosyayı çıkarılan bir klasörde açacağını unutmayın.
Phil Cohen
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.