Які випадки використання альтернативних менеджерів пакунків відносно `package.el`?


14

Фон

Я використовую emacs щодня, але в основному для того, щоб робити речі. Мені не дуже подобається налаштування його більше, ніж додавання пакетів, і мені не подобається усунення несправностей. Я хочу, щоб Emacs зникав на задньому плані так, як це робить хороша ОС, і просто продовжувати роботу. Деякий час тому я виявив, що el-getдозволив мені встановити потрібні мені пакунки, які були недоступні, package.elа також надав мені більше контролю, наприклад, вибору maintгілки Org-режиму, а не кровотоку, який може спричинити тимчасові проблеми. Тепер я не впевнений, варто мені використовувати el-getчи ні.

Питання

el-getздавалося, чудовим рішенням для різних сховищ та емак-хаків там. Він пропонував можливості, які були просто неможливі package.el. Тепер, коли package.elв нових версіях emacs ( >=24.4) підтримується декілька сховищ, для чого використовуються випадки використання el-getта подібні альтернативи вбудованому менеджеру пакунків emacs?


2
Дивіться також: quelpa . Коротка відповідь: Звичайно, є ще пакети, на яких немає ELPA / MELPA / Marmalade. Якщо ви виявите, що він вам потрібен, ви все одно можете дістати його без жахливих хакерів el-getтощо.
PythonNut

Відповіді:


8

Є речі, які все ще неможливо з ELPA, і є речі, які завжди будуть неможливі з ELPA, тому що вони не вписуються в концепцію ELPA: Ви ніколи не зможете встановити певний комітет за допомогою його хеша з роздвоєного сховище. Крім того, ви ніколи не зможете застосувати спеціальні локальні патчі до пакету перед його встановленням. Ці функції просто виходять за рамки ELPA, і якщо вони вам потрібні, вам доведеться використовувати альтернативний менеджер пакунків.

Я думаю, однак, що ель-гет - це свого роду спадкове рішення сьогодні. Зважаючи на те, що ELPA стала фактичним стандартним менеджером пакунків для Emacs, менеджерам альтернативних пакетів слід безперешкодно інтегруватися з ELPA. el-get, однак, не виставляє власні пакети ELPA, це означає, що його пакети повністю невидимі для ELPA, а пакети ELPA ніколи не можуть залежати від пакетів el-get, маючи явні наслідки для управління залежностями.

Якщо вам потрібні функції за межами ELPA, вам слід дивитись на QUELPA, а не на el-get.


"якби вони не зробили жодного, вони б ще не намагалися їх підтримувати." Однак, ціль може бути лише егою розробника.
Т. Веррон

Це було б потужне его, що могло б легко залучити таку велику спільноту, як і досі, і QUELPA швидко здобула :)
lunaryorn

Я коментував загалом, звичайно. ;)Що стосується специфіки пакетів, які ви знаходитесь, ваша відповідь, крім твердження здорового глузду, є важливим моментом, демонструючи мету el-get та quelpa.
Т. Веррон

@ T.Verron Yep, точка. Я зняв це твердження, було дурно сказати. Вибачте.
місячник

@lunaryorn з el-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA вами означає речі, встановлені el-get, правда?
toogley

6

Я написав новий менеджер пакунків для Emacs straight.el, який намагається покращити всі існуючі рішення щодо управління пакетами. У документації про порівняння з іншими менеджерами пакунків є великий розділ , але ось короткий підсумок:straight.el

  • package.elзавантажує непрозорі тарболи з центральних серверів, без можливості вибору конкретної версії пакету, і не дозволяє вносити локальні зміни у ваші пакунки; внести зміни вгору за течією неможливо. straight.elклонує репозиторії Git децентралізованим способом (але він автоматично використовує рецепти MELPA , GNU ELPA та EmacsMirror , якщо бажаєте), і дозволяє вам вносити довільні локальні зміни до них, вносити ці зміни та робити внесок вгору. Це можна зробити вручну, або ви можете використовувати вбудовані операції управління масовими сховищами. Зміни ваших пакунків виявляються автоматично, і вручну перебудовувати не потрібно. Крім того,straight.el підтримує повну відтворюваність для вашої конфігурації Emacs, оскільки вона дозволяє записати файл блокування версій, який включає хеші Git усіх ваших пакетів.
  • Quelpa і Бочка обидва засновані на package.el, і успадковує багато з тих же недоліків. Наприклад, Cask не має жодної концепції встановлення певної версії пакету. Quelpa, але це вимагає, щоб ви жорстко кодували Git-хеш у свій init-файл. повністю straight.elзнімається package.el, замінюючи всі основні функціональні можливості уніфікованим дизайном, адаптованим до багатьох інших випадків використання.
  • el-get має перевагу в тому, що ви можете встановлювати пакети з будь-якого місця (всі відомі системи управління версіями, довільний HTTP, менеджери системних пакетів, EmacsWiki, навіть!? go get). Однак, підтримуючи так багато джерел, el-get не може забезпечити такий тип вдосконалених операцій з управління пакетами (як, наприклад, відтворюваність за допомогою фіксації файлів перегляду та інтерактивних операцій управління репозиторіями), що straight.elзабезпечує. straight.elпідтримує лише Git, оскільки більшість пакетів доступні через Git, а ті, які не можна отримати через EmacsMirror (я смію знайти такий, який не може бути!). Зауважте, що, straight.elтим не менш, надається розширюваний API для додаткових програм керування версіями (наприклад, для Mercurial), які можна буде додавати в майбутньому, якщо потрібно.
  • У Борга дуже схожа філософія straight.elта дає багато однакових переваг. Тим НЕ менше, він не призначений , щоб бути повним менеджер пакетів, і призначений для використання в концерні з іншими інструментами , такими як epkg, auto-compileі Magit. Навпаки, straight.elє автономним і забезпечує все необхідне само собою, не вимагаючи майже ніякої додаткової конфігурації. Також Borg використовує підмодулі Git, інтерфейс яких має деякі нерівні краї, тоді як straight.elвикористовує незалежно керовані сховища Git, що дає додаткову гнучкість та потужність.
  • Є також ручний підхід, але я не рекомендую цього. Через перші пару місяців ви б винаходили Борга. Тоді через наступні пару місяців ви б переробили straight.el. Ви дізнаєтесь багато нового про управління пакунками;)

4

Хоча є плюси і мінуси, я вважаю, що el-get все ще актуальний, незважаючи на сильну думку @lunaryon (теж відкидаю).

Я деякий час використовував сировинний пакунок.el з use- pack (2 - 3 роки), потім перейшов на el-get , потім Cask . Я повернувся до el-get кілька днів тому. Попередній package.el , як і багато інших, я вручну обробляв додатки.

Чому я повернувся до ель-get ? Я зіткнувся з деякою бочки дивацтва про що - щось не бути мерзотник репо (пакет Github шахти , яка не перебуває у MELPA), в той час як цей пакет насправді використовує мерзотник ... Я не став розслідувати або створити квиток, просто витягнув мій старий el-get config, і мені було добре їхати в найкоротші терміни.

Кілька речей, які мені подобаються в el-get :

  • Він підтримує декілька виборців, а не лише git.
  • Він містить достатньо заздалегідь визначених рецептів
  • Швидше, ніж Cask при запуску.
  • і так @lunaryorn, Wiki не є місцем для розповсюдження коду, я все ж не хочу створювати рето Github, якщо в emacsmirror (Github) немає клону .
  • Самостійний, Cask вам потрібна зовнішня установка. Я використовую один файл init (не модульну конфігурацію) з режимом allot для навігації по розділах.
  • el-get досить простий з точки зору користувача.

Примітка: я запускаю Emacs Git HEAD під OSX та Linux.


Вибачте, що у вас виникли проблеми з Каском, але я не думаю, що ваші особисті неприємності та ваші очевидні розчарування з Каском мають жодне значення для цього питання. Зокрема, Cask перебуває у співпраці з ELPA з дуже вузькою сферою (в основному розробкою пакетів). Хоча ви можете використовувати його і для управління пакетами, його концептуально ортогональне для el-get.
місячник

Іншими словами, Cask не витісняє el-get, і не має на меті цього робити. Це абсолютно не пов'язано. ELPA витісняє el-get. Найкращим вибором для установок на основі Git більше не стає, це QUELPA, і, як я вже сказав у своїй відповіді, це вагома причина використовувати QUELPA.
місячний корч

1
Я згоден щодо вузької сфери дії Каска, не зрозумійте мене неправильно. Незважаючи на мої "проблеми" з Cask, я все ще використовую його на деяких Linux-машинах. Я також не маю пакетів "лише для git", деякі з них знаходяться у меркуріальній чи іншій системі управління версіями. Я також використовую пакунки від інших людей, які, ймовірно, ніколи не будуть в MELPA або сховищі git. Єдине, що El-get все одно гаразд, коли MELPA не містить усіх необхідних комусь пакетів. Хоча я знаю про QUELPA, el-get досить добре для мене.
rimero

Дивіться, і я мою думку про те, що в даний час el-get вже не в порядку, оскільки він обходить вбудований менеджмент залежностей від ELPA та Emacs, ризикуючи поломкою та дублюванням встановлених пакетів. QUELPA надає ті самі функції, що і el-get, але не має цього недоліку. Сьогодні просто краще.
місячний рік

@rimero У мене був такий самий досвід. Крім цього, я просто спробував Quelpa кілька днів тому, і мені довелося кинути його, принаймні поки що. El-get, здається, все ще є більш гнучким, потужним та загалом швидшим, принаймні для мого використання. Я вважаю, що вони охоплюють дві досить різні точки зору, тому це також може залежати від того, який тип користувача Emacs. Було б доцільно спробувати і те, і інше, перш ніж покластися на те чи інше.
gsl

1

Ви можете поглянути на paradox. Це не інший менеджер пакунків, а більш акуратний передній кінець package.el. Наприклад, коли ви оновлюєте пакети, він запитує, чи хочете ви їх встановити та видалити старі в один крок.

Якщо ви використовуєте його, ви , ймовірно , хочете , щоб встановити , paradox-execute-asynchronouslyщоб tв вашому файлі ініціалізації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.