Aynı yazılımı içeren birkaç farklı havuz olduğunu fark ettim. Neden tercih etmek isteyeyim:
- GNU ELPA
- Marmelat
- MELPA
diğerlerine göre? Herhangi bir depo istediğim tüm paketleri içermediğinden, bu depoları aynı anda etkinleştirmek iyi bir fikir midir?
Aynı yazılımı içeren birkaç farklı havuz olduğunu fark ettim. Neden tercih etmek isteyeyim:
diğerlerine göre? Herhangi bir depo istediğim tüm paketleri içermediğinden, bu depoları aynı anda etkinleştirmek iyi bir fikir midir?
Yanıtlar:
GNU ELPA resmi GNU Emacs paket deposudur. Varsayılan olarak etkin olan tek kişidir; bu, en büyük erişime sahip olduğu anlamına gelir. Aynı zamanda, bir paket göndermek de biraz güçlük çekiyor ve bir FSF telif hakkı ataması gerektiriyor, bu da nispeten sınırlı bir paket seçimine sahip olduğu anlamına geliyor.
MELPA ve Marmalade , üçüncü taraf paket depolarıdır. Resmi olarak GNU tarafından desteklenmiyor, aynı zamanda çok daha geniş bir paket seçeneğine de sahipler. Paket kalitesi biraz daha değişkendir, ancak aradığınız şeyi bulma olasılığınız çok daha yüksektir, özellikle de biraz karanlıksa.
Marmelat ve MELPA'nın paket yükleyiciler için biraz farklı modelleri var. Anladığım kadarıyla, MELPA'nın bir sürüm kontrol deposunu doğrudan (yani GitHub aracılığıyla) izlemesi, paket yazarlarının paketleri bir şubeye göndererek güncelleme yapmasına izin veriyor. Öte yandan, Marmalade, insanların depoya paketleri açıkça yükleyebilmesini sağlar.
Uygulamada, MELPA ve Marmelat arasında fazla bir fark görmedim. Her ikisinin de mümkün olan en fazla kurulabilir paket seçimine sahip olmalarını sağlamanın pek dezavantajı yoktur: Her ikisini de (ve GNU ELPA'yı elbette) önemli bir sorun olmadan kullanıyorum.
Kendi kendime girmediğim her iki havuzun da etkinleştirilmesiyle (kendime rastlamadığım) olası bir endişe, her ikisinden de farklı versiyonlarda mevcut olan paketlerin bulunmasıdır. Varsayılan olarak, paket yöneticisi ( package.el) böyle bir çatışmayı çözmenin bir yolunu yoktur; ancak bunu, melpahangi paketlerin sağlandığını veya hangi havuzlardan dışlandığını özelleştirmenize izin veren paketi yükleyerek çözebilirsiniz . Daha fazla ayrıntıyı burada veya melpapaketin belgelerinde görebilirsiniz .
@Malabarba'nın dikkatlice işaret ettiği gibi, bu sorun Emacs 24.4'te çözülmüştür.
Güvenlik konusunda gerçekten endişeleniyorsanız, hem MELPA hem de Marmelat'tan kaçınmak isteyebilirsiniz, çünkü herhangi birinin paketleri yüklemesine izin verir ve bildiğim kadarıyla, proaktif bir güvenlik düzenlemesi yoktur. GNU ELPA deposu ise, FSF tarafından yönetiliyor ve yardım etmesi gereken paketleri imzaladı. Elbette, güvenlik gerçekten önemliyse, paket yöneticisini kullanmak yerine elisp paketlerini el ile gözden geçirmek ve kurmak isteyebilirsiniz.
Bunu düşündüğüm gibi, bazı repolar paket göndermeyi diğerlerine göre daha fazla harcadı; daha fazla ek yüke sahip depolar daha az pakete sahip olma eğilimindedir. En çok en az ek yüke geçmek için:
Şahsen, çoğu kullanıcının MELPA Stable veya Marmalade'in muhtemelen uzun vadede kazanacağını düşünüyorum - MELPA uygun oldukça dengesiz ve ELPA birçok paket için gerçekten ölçeklendirilemeyecek kadar kısıtlayıcı. Ama bu sadece bir fikir.
Çeşitli paket havuzları mevcuttur.
Resmi
GNU ELPA resmi paket deposudur. Küçüktür ve katkıda bulunmak için FSF'ye (bir paketin tüm yazarlarının) telif hakkı tahsis edilmesini gerektirir.
GNU ELPA'daki paketler gerçekten sadece bir git repo . Burada barındırılmanın avantajı, Emacs'in kendisi ekler veya kullanımdan kaldırırsa, çekirdek ekibin paketleri güncellemeye çalışmasıdır.
Kaynaktan inşa
MELPA en büyük ve en hızlı büyüyen paket deposudur . Her yeni sürümde bir repoya basıldığında veya bir EmacsWiki sayfası güncellendiğinde yeni bir sürüm çıkarır.
Kanama kenarı, ancak pratikte çok iyi çalışıyor. MELPA, çift paketlerden kaçınmak ve kanonik paket evinin kaydedilmesini sağlamak için (rastgele bir çatal yerine) küratörlüğünü yapar.
MELPA, versiyonların sadece zaman damgası gibi bir problemi var my-package-20131231.2359. Bu benim paketime bağlı olduğun anlamına gelir:
;; Package-Requires: ((my-package "1.2.3"))
Sonra Emacs MELPA'daki herhangi bir sürümün yeterince yeni olduğunu düşünecek.
MELPA Kararlı , MELPA ile aynıdır, ancak datetamp sürümleri kullanmak yerine, git etiketlerindeki sürümleri kullanır. Bu, daha iyi bağımlılık çözümüne izin verir, ancak wiki paketlerine bağlı olarak sorunları vardır .
Kullanıcı yüklemeleri
Marmelat , diğer programlama dillerinden geleneksel bir depoya çok benziyor. Paket geliştiricisi, paketi bıraktıklarında paketi Marmalade'e yükler.
Prensip olarak, bu paketlere uygun bir bırakma işlemi verir (Marmelat, MELPA'yı dengede tutar) ve ayrıca otomatikleştirilmiş versiyon numarası probleminden de kaçınır. Ancak kimlik doğrulaması yoktur. Herkes yazmamış olsa bile bir paket yükleyebilir. my-packageSağlayıcı, başka birinin yüklediğini bulur my-packageve ardından yeni sürümleri yükleyemezse zorlaşır .
Marmelat bir node.js uygulamasıydı ve şimdi elisp ile yazılmıştır. Her iki sürümde de zaman zaman çalışma sorunları yaşanıyor.
Proje özgü
Org modu ELPA bir Repo sadece ana olduğunu orgve org-plus-contrib. Org modu Emacs çekirdeğinin bir parçasıdır, fakat harici olarak geliştirilmiştir ve kod yalnızca periyodik olarak Emacs trunk ile senkronize edilir. Bu repo, kanama kenarı org moduna sahip olmanızı sağlar.
User42 ELPA , oldukça çeşitli Emac paketleri sunan tek bir paket geliştiricisinin deposudur . Paketlerinden herhangi birini seviyorsanız, bu repoyu ekleyebilirsiniz.
Sunrise Komutanı ELPA , Sunrise Komutanı (gece yarısı komutanı esinlenerek dosya taraması için bir Emacs paketi) eklentileri için bir repo .
Emekli
Tromey'nin ELPA'sı ilk repo oldu. Resmen GNU ELPA ile değiştirildi, ancak aynı telif hakkı atama şartlarına sahip değildi. 2010 itibariyle, artık güncellenmiyor.
Elpy paket arşivi , Jorgen Schaefer tarafından 'Emacs Python Geliştirme Ortamı Elpy için ' geliştirilen , ancak MELPA Stable'a göç eden çeşitli paketler içeriyordu .
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend: ama eminim ki bu endişeler artık ortadan kalkacak, çünkü Microsoft GitHub ;-)
Bazı ek bilgiler, buradaki diğer cevapları desteklemek için.
MELPA ve MELPA "stable" hakkında bazı bilgiler -
Sorunun kendisinin yorumları da dahil olmak üzere, StackOverflow'tan bu oldukça yinelenen soruya bakarak başlayın . Özellikle, Donald Curtis ile e-posta alışverişinde bulunduktan sonra (MELPA ve MELPA'nın sağlayıcısı)
Onun bakış itibaren [Bana onun iletişimini anlama Donald Curtis adlı ve aynı], "kararlı" MELPA sitesi olduğu bakım modunda sadece . Ve benimki gibi kodun tek nedeni , "kararlı" site için wiki'den [Emacs Wiki] yükleme yapmadığıdır . Ayrıca, hiç kimse tarafından yapılan "iyileştirme" yapılmaz - bir paketin istikrarlı, riskli olup olmadığına karar vermek için filtreleme yoktur. Paketlerinin geliştirme sürümlerini eskilerinden ayırmak isteyen bazı paket geliştiricileri tarafından iki sitenin varlığı istenmiştir. ") sürümleri.
Özetle, "MELPA kararlı" içeriği ile ilgili doğal olarak daha "kararlı" olan hiçbir şey yoktur . Sürüm numaralandırma ve besleme yöntemi farklı olabilir; bu kadar. Ve eğer belirli bir paket sorumlusu “kararlı” kelimesini “gelişme” versiyonlarından ayırt etmek istiyorsa ve bunu iki farklı siteye yükleyerek yapmak istiyorsa, o zaman bunun etkisi budur .
MELPA ve Marmelat (ve GNU ELPA) arasındaki bir fark, MELPA'ya katkıda bulunan kodun bir git deposundan kaynaklanması gerekmemesidir. Özellikle, Emacs Wiki'nin Elisp Alanından otomatik olarak çekilebilir .
Bu, bazılarının söylediği gibi, herhangi birinin bir şey yükleyebileceği ve kodun gerçekten talep edilen yazar tarafından olup olmadığını bilmediğiniz anlamına mı geliyor? Evet ve hayır. Genel olarak, evet: herkes Elisp kodunu Emacs Wiki'ye yükleyebilir. Elisp-Area sayfasının üst kısmında yazdığı gibi:
Burası EmacsLisp dosyalarını topladığımız EmacsWiki elisp alanı. Giriş gerekmez, sürüm kontrolü gerekmez, ftp gerekmez, şifre gerekmez. Wiki'nin kendisi kadar basit. Bu, herkesin bu EmacsLisp dosyalarına kötü amaçlı kod yerleştirebileceği anlamına gelir. Şüpheniz varsa, bunları kullanmayın.
Ancak, bildiğiniz gibi, wiki'nin yöneticisiyim ve wiki Elisp Alanındaki kendi Lisp kütüphanelerim kilitli sayfalardır. Bu, yalnızca bir wiki yöneticisinin onları yükleyebileceği anlamına gelir. Bu durumda, MELPA veya Emacs Wiki'den indirdiğiniz kütüphanelerimin benim tarafımdan yüklendiğinden emin olabilirsiniz. Bununla birlikte, İnternet üzerindeki her şeyde olduğu gibi, kodun kendisinde bir garanti olmadığı gibi, ironclad garantisi yoktur. Her GPL kütüphanesinde GPL'nin belirttiği gibi:
Bu program faydalı olacağı umuduyla dağıtılmıştır, ancak HİÇBİR GARANTİ YOKTUR; HİÇBİR AMAÇLI OLMAK İÇİN TİCARİRLİK veya FİTNESS'in zımni garantisi olmadan. Daha fazla bilgi için GNU Genel Kamu Lisansına bakınız.
HTH. Mutlu hackler