Package.el` yerine alternatif paket yöneticilerinin kullanım durumları nelerdir?


14

Arka fon

Her gün emacs kullanıyorum, ama çoğunlukla işleri halletmek için. Paket eklemekten çok özelleştirmeyi sevmiyorum ve sorun gidermeyi sevmiyorum. Emacs'ın iyi bir işletim sisteminin yaptığı gibi arka plana kaybolmasını ve sadece şeylerle baş etmesini istiyorum. Bir süre önce el-get, ihtiyacım olan paketleri kullanmama izin package.elverdi ve ayrıca maintgeçici sorunlara neden olabilecek kanama kenarı yerine Org modu dalını seçmek gibi daha fazla kontrol sağladı . Şimdi kullanmam gerekip gerekmediğinden emin değilim el-get.

Soru

el-getorada çeşitli depolar ve emacs kesmek için harika bir çözüm gibi görünüyordu. Sadece mümkün olmayan yetenekler sundu package.el. Artık package.elemacs ( >=24.4) ' ın daha yeni sürümlerinde birden çok depoyu desteklediğine göre, el-getemacs'in yerleşik paket yöneticisi için kullanım durumları ve benzer alternatifler nelerdir?


2
Ayrıca bakınız: quelpa . Kısa cevap: Tabii ki, hala ELPA / MELPA / Marmelat'ta olmayan paketler var. Birine ihtiyacınız olduğunu fark ederseniz, yine de korkunç bir hack el-getve benzeri olmadan alabilirsiniz .
PythonNut

Yanıtlar:


8

ELPA ile hala imkansız olan şeyler var ve ELPA ile her zaman imkansız olacak şeyler var, çünkü ELPA kavramına uymuyorlar: Çatalı tarafından asla çatal ile belirli bir taahhüt kuramazsınız. deposu. Aynı şekilde, bir paketi kurmadan önce hiçbir zaman özel yerel yamaları uygulayamazsınız. Bu özellikler ELPA'nın kapsamı dışındadır ve ihtiyacınız varsa alternatif bir paket yöneticisi kullanmanız gerekir.

Yine de, el-get'in günümüzde bir tür eski bir çözüm olduğunu düşünüyorum. ELPA'nın Emacs için fiili standart paket yöneticisi haline geldiği göz önüne alındığında, alternatif paket yöneticileri ELPA ile sorunsuz bir şekilde bütünleşmelidir. Bununla birlikte el-get, kendi paketlerini ELPA'ya maruz bırakmaz, yani paketlerinin tamamen ELPA için görünmez olduğu anlamına gelir ve ELPA paketleri hiçbir zaman el-get paketlerine bağlı olamaz, bu da bağımlılık yönetimi için açıktır.

ELPA'nın ötesindeki özelliklere ihtiyacınız varsa, bugün el-get yerine QUELPA'ya bakmalısınız.


"Eğer bunu yapmadılarsa, onları korumak zahmetine girmezdi." Amaç sadece geliştiricinin egosu olabilir.
T. Verron

Yine de, el-get'in hâlâ sahip olduğu kadar büyük bir topluluğu kolayca çekebilecek güçlü bir ego olurdu ve QUELPA hızla kazandı :)
lunaryorn

Genel olarak yorum yapıyordum elbette. ;)Eldeki paketlerin özellikleri için sağduyulu ifadenin ötesindeki cevabınız, el-get ve quelpa'nın amacını sergileyerek güçlü bir noktaya işaret ediyor.
T. Verron

@ T.Verron Yep, puan alındı. Bu ifadeyi kaldırdım, söylemesi aptalca bir şeydi. Afedersiniz.
lunaryorn

@lunaryorn el-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA seninle el-get tarafından kurulan şeyleri kastediyorsun değil mi?
toogley

6

Emacs için straight.elmevcut tüm paket yönetimi çözümlerini geliştirmeye çalışan yeni bir paket yöneticisi yazdım . Orada bir olduğu geniş bölümüne straight.elbelgelerine diğer paket yöneticilerine karşılaştırmalar , ama burada çok kısa bir özetidir:

  • package.elpaketin belirli bir sürümünü seçme seçeneği olmadan merkezi sunuculardan opak tarballları indirir ve paketlerinizde yerel değişiklikler yapmanıza izin vermez; yukarı yönlü değişikliklere katkıda bulunmak imkansızdır. straight.elGit depolarını merkezi olmayan bir şekilde klonlar (ancak isterseniz MELPA , GNU ELPA ve EmacsMirror'dan gelen tarifleri otomatik olarak kullanır ) ve bunlarda keyfi yerel değişiklikler yapmanıza, bu değişiklikleri gerçekleştirmenize ve akış yukarı katkıda bulunmanıza izin verir. Bu elle yapılabilir veya yerleşik toplu depo yönetimi işlemlerini kullanabilirsiniz. Paketlerinizdeki değişiklikler otomatik olarak algılanır ve manuel yeniden oluşturma gerekmez. Ayrıca,straight.el tüm paketlerinizin Git karmasını içeren bir revizyon kilit dosyası yazmanıza izin verdiğinden, Emacs yapılandırmanız için tam tekrarlanabilirliği destekler.
  • Quelpa ve Caskpackage.el aynı dezavantajların çoğuna dayanır ve miras kalır . Örneğin, Cask'ın bir paketin belirli bir sürümünü kurma kavramı yoktur. Quelpa yapar, ancak Git karmasını init dosyanıza sabit olarak kodlamanızı gerektirir. tüm temel işlevlerini tamamen daha fazla kullanım durumuna uyarlanmış birleşik bir tasarımla değiştirerek tamamen straight.elkaçar package.el.
  • el-get , paketleri kesinlikle her yerden yükleyebilme avantajına sahiptir (bilinen tüm sürüm kontrol sistemleri, rastgele HTTP, sistem paketi yöneticileri, EmacsWiki, hatta!? go get). Bununla birlikte, el-get bu kadar çok kaynağı destekleyerek, sağlanan gelişmiş paket yönetimi işlemleri türünü (revizyon kilit dosyaları aracılığıyla yeniden üretilebilirlik ve etkileşimli depo yönetimi işlemleri gibi) sağlayamaz straight.el. straight.elyalnızca Git'i destekler, çünkü çoğu paket Git üzerinden kullanılabilir ve bulunmayan paketler EmacsMirror aracılığıyla alınamaz (Sizi bulamayacağınız bir tane bulmaya cesaret ediyorum!). straight.elBununla birlikte, istenirse gelecekte eklenecek ek sürüm kontrolü arka uçları (örneğin Mercurial için) için genişletilebilir bir API sağladığını unutmayın .
  • Borg çok benzer bir felsefeye sahiptir straight.elve aynı avantajların birçoğunu verir. Ancak, tam bir paket yöneticisi olmak üzere tasarlanmamıştır ve aşağıdaki gibi araçlarla birlikte endişe kullanılmak üzere tasarlanmıştır epkg, auto-compileve Magit. Aksine, straight.elbağımsızdır ve ihtiyacınız olan her şeyi tek başına sağlar, ek yapılandırma gerektirmez veya çok az gerektirir. Ayrıca, Borg, arayüzünün pürüzlü kenarları olan Git alt modüllerini straight.elkullanırken, bağımsız olarak yönetilen Git depolarını kullanır ve ek esneklik ve güç sağlar.
  • Manuel yaklaşım da var, ancak bunu önermiyorum. İlk birkaç aydan sonra Borg'u yeniden icat ederdin. Sonra önümüzdeki birkaç aydan sonra yeniden icat ederdin straight.el. Yine de paket yönetimi hakkında çok şey öğreneceksiniz;)

4

Artıları ve eksileri olsa da, @lunaryon'un güçlü görüşlerine rağmen el-get'in hala alakalı olduğunu düşünüyorum (rejeep de).

Ham paketi kullandım . Bir süre kullanım paketi ile (2 ila 3 yıl), sonra el- get'e , sonra Cask'a geçtim . Birkaç gün önce el-get'e geri döndüm. Önceki paket.el , diğerleri gibi, eklentileri elle işliyordum.

Neden el-get'e geri döndüm ? Git repo (MELPA'da olmayan bir Github paketim) olmayan bir şey hakkında bazı Cask tuhaflığıyla karşılaştım , bu paket aslında git kullanıyorken ... Sorgulama veya bilet oluşturma zahmetine girmedim, sadece eski el-get config ve hiçbir zaman gitmek için iyi oldu.

El-get hakkında sevdiğim birkaç şey :

  • Sadece git'i değil, birden fazla getiriciyi destekler.
  • Yeteri kadar önceden tanımlanmış tarif içeriyor
  • Başlangıçta Cask'tan daha hızlı .
  • ve evet @ lunaryorn, Wiki kod dağıtmak için bir yer değil, yine de emacsmirror (Github) üzerinde klon yoksa bir Github repo oluşturmak istemiyorum .
  • Bağımsız, Cask ile harici bir kuruluma ihtiyacınız var. Bölümler arasında gezinmek için allout modu ile tek bir init dosyası (modüler yapılandırma değil) kullanıyorum .
  • el-get kullanıcı açısından yeterince basittir.

Not: OSX ve Linux altında Emacs Git HEAD kullanıyorum.


Cask ile ilgili sorunlarınız olduğu için üzgünüm, ancak kişisel sıkıntılarınızın ve Cask ile ilgili bariz hayal kırıklığınızın bu soru ile ilgisi olduğunu düşünmüyorum. Özellikle, Cask çok dar bir kapsamla (çoğunlukla paket geliştirme) ELPA'ya ön taraftır. Paket yönetimi için de kullanabilirsiniz, ancak kavramsal olarak el-get için diktir .
lunaryorn

Başka bir deyişle, Cask el-al'ın yerini almaz ve yapmayı da amaçlamaz. Tamamen ilgisiz. ELPA el- get'in yerine geçer. Git tabanlı kurulumlar için en iyi seçim artık elden gelmiyor, QUELPA ve cevabımda söylediğim gibi QUELPA'yı kullanmak için geçerli bir neden.
lunaryorn

1
Cask'un dar kapsamı konusunda hemfikirim, beni yanlış anlamayın. Cask'taki "sıkıntılarıma" rağmen, hala bazı Linux makinelerinde kullanıyorum. Ayrıca "sadece git" paketlerim de yok, bunların bazıları cıva veya diğer sürüm kontrol sistemlerinde. Ayrıca MELPA ya da git deposunda asla bulunmayacak başka insanlardan gelen paketleri de kullanıyorum. Benim tek noktam, MELPA birisinin ihtiyaç duyduğu tüm paketleri içermediğinde el-get'in hala iyi olması. QUELPA'nın farkında olduğum halde, el-get benim için yeterince iyi.
rimero

Bakın, ve benim açımdan, el-get'in günümüzde özellikle iyi olmadığı, çünkü ELPA ve Emacs'ın yerleşik bağımlılık yönetimini, kırılma riskini ve yinelenen paket kurulumlarını atladığı için. QUELPA el-get ile aynı özellikleri sunar, ancak bu kusura sahip değildir. Bugünlerde daha iyi.
lunaryorn

@rimero Aynı deneyimi yaşadım. Bunun üzerine, birkaç gün önce Quelpa'yı denedim ve en azından şimdilik düşürmek zorunda kaldım. El-get, en azından kullanım durumum için hala daha esnek, güçlü ve genel olarak daha hızlı görünüyor. İki farklı bakış açısına sahip olduklarına inanıyorum, bu yüzden Emacs kullanıcısı türüne de bağlı olabilir. Birine ya da diğerine geçmeden önce her ikisini de denemeniz tavsiye edilir.
gsl

1

Bir göz atmak isteyebilirsiniz paradox. Başka bir paket yöneticisi değil, ama daha temiz bir ön uç package.el. Örneğin, paketleri güncellediğinizde, bunları yüklemek ve eskilerini tek adımda silmek isteyip istemediğinizi sorar.

Bunu kullanmak, muhtemelen setine istediğiniz paradox-execute-asynchronouslykadar tinit dosyası içinde.

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.