Технічні міркування щодо технічного обслуговування постачальників не використовувати менеджер пакунків Emacs?


10

Я помічаю, що деякі помітні обслуговуючі пакети вирішують не використовувати систему управління пакунками Emacs (ESS?) Або скаржитися на її обмеження (Helm).

Цитування з Helm 's README.md :

ПОПЕРЕДЖЕННЯ : Через погану концепцію package.el, яка відповідає за отримання файлів кермів та їх компілювання, у більшості випадків користувачі мали помилки під час оновлення до melpa та list-package. Щоб уникнути цього, Async були додані як залежність від керма, щоб змусити package.el збирати свої файли в чистому середовищі. Люди, що встановлюють з git та використовують файл make, не страждатимуть від цієї проблеми та не потребують Async, хоча це рекомендується, оскільки він фіксує встановлення всіх інших пакетів, які ви можете встановити за допомогою пакета.el від (m) elpa. Додаткову інформацію див. У FAQ.

На які саме технічні обмеження діє поточна система управління пакунками, на яку вони можуть натякати, і чому пакети потрібно використовувати asyncяк залежність?


1
Я думаю, це питання має бути занадто широким для цього сайту. Краще націлений на дискусійний форум. Спробуйте help-gnu-emacs@gnu.org або emacs-devel@gnu.org або Emacs reddit або щось подібне. " Яка проблема саме? " Припускає, що існує одна така проблема, і запитання, які можливі проблеми для будь-якого пакета (або будь-якого обслуговуючого пакета), є занадто широким.
Дрю

2
ESS розміщується на Melpa: melpa.org/#/ess , можливо, це лише документація. Я знаю багато проектів, які, як правило, можна встановити через системний менеджер пакетів, але вибираєте не згадувати про цей варіант без реальних причин (можливо, якщо припустити, що якщо ви зайшли до завантаження джерел / двійкових файлів з сайту, тоді ви повинні мати причина зробити це). Я не знаю, з якою проблемою був Гельм.
wvxvw

Ваше заголовок читається мені трохи дивно. Ви мали на увазі писати "менеджерів" двічі, чи ви мали на увазі супроводжувачів?
Малабарба

1
Виступаючи як розробник ESS, повідомте нам, як ми можемо покращити питання - як зауважили інші, ESS знаходиться в MELPA.
Стівен Еглен

Відповіді:


19

Проблема, на яку ви посилаєтесь, ймовірно, що коли ви оновлюєте пакет із сеансу Emacs, коли цей пакет уже використовується, стара версія пакета іноді буде перешкоджати під час компіляції нової версії, що призводить до неправильно складених файлів.

Для цього в Emacs-25 є попереднє виправлення, але проблема AFAIK все ще присутня в 24.5.


9

За винятком винятку ProofGeneral, я не знаю жодного основного пакету Emacs, який недоступний в архіві ELPA. Зокрема, ESS працює на MELPA з трьох років . І PG - це історія сама по собі, і, безумовно, не є репрезентативною для всієї екосистеми Emacs.

У ELPA, безумовно, є свої недоліки, але для переважної більшості пакетів це працює чудово, навіть для великих, таких як Magit. Helm - це єдиний пакет, на який я бачу скарги на ELPA. Я не впевнений, на що саме вони скаржаться, але, мабуть, йдеться про компіляцію:

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

Будучи самим обслуговувачем пакету, я майже не згоден з цим твердженням. Я схильний звинувачувати Хелма, а не ELPA чи Emacs. На мою думку, твердження - це гіпербола, і це проблема, але симптом надмірного використання або макрокоманди.

Якщо ви використовуєте багато макросів і, що ще гірше, вписуєте нетривіальний код в тіло макросів, ви просто повинні бути обізнані про наслідки, пов'язані з компіляцією байтів, і вам потрібно бути обережними, щоб підтримувати сумісність з вашими власними макросами. у вашому пакеті. Не робити цього, а замість цього перекладати провину навколо, не дуже приємно. Мої 2 копійки.


2
FWIW, я не погоджуюся з вашою незгодою: хоча я погоджуюся, що краще намагатися уникати надмірного використання макросів, проблеми з компіляцією є справжніми і можуть впливати більше, ніж макровиклики (наприклад, вони впливають можуть бути спровоковані також незрозумілими функціями або функціями, що називаються під час макророзширення). І коли вас покусає ця проблема, ваші .elc-файли невірні і можуть поводитися неправильно різними цікавими способами, тому діагностувати проблему може бути важко, а для її усунення потрібно видалити + перевстановити пакет (як тільки ви зрозуміли Проблема та пакет, який потрібно перевстановити.
Стефан

1
@Stefan Я не заперечую питань компіляції. Я себе покусав. Але мені не подобається ставлення, яке просвічує ця заява, і відсутність того, що я б назвав "збалансованою точкою зору". Хелм стає укушеним так погано, тому що вони також зробили багато помилок на своїй стороні, але їх заява цього не визнає. На мою скромну думку, функція виклику в макроорганізмі - така помилка. Макроси призначені лише для синтаксису, але ніколи для функціональності. Але я розумію, що це, здається, є предметом, щодо якого у спільноти Emacs Lisp є багато різних думок.
місячник

ropemacs , jdee-emacs та exorporate - це помітні пакунки, які відсутні в жодному архіві ELPA (залежно від критеріїв для основних пакетів). Переважна більшість пакетів є, однак.
Вільфред Х'юз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.