Uwagi techniczne dla opiekunów pakietów, aby nie korzystali z menedżera pakietów Emacsa?

10

Zauważam, że niektórzy znaczący opiekunowie pakietów decydują się nie używać systemu zarządzania pakietami Emacsa (ESS?) Lub narzekają na jego ograniczenia (Helm).

Cytując Helm „s README.md :

OSTRZEŻENIE : Z powodu złej koncepcji pliku package.el, który odpowiada za pobieranie plików sterów i ich kompilację, użytkownicy najczęściej mieli błędy podczas aktualizacji z pakietu melpa i list-package. Aby tego uniknąć, Async został dodany jako zależność od steru w celu wymuszenia kompilacji plików package.el w czystym środowisku. Ludzie instalujący z git i korzystający z pliku make nie będą cierpieć z powodu tego problemu i nie potrzebują Async, chociaż jest to zalecane, ponieważ naprawia instalację wszystkich innych pakietów, które możesz zainstalować za pomocą package.el from (m) elpa. Zobacz FAQ, aby uzyskać więcej informacji.

Jakie dokładne ograniczenia techniczne ma obecny system zarządzania pakietami, do których mogą się odwoływać i dlaczego pakiety miałyby być używane asyncjako zależność?

Amelio Vazquez-Reina
źródło
1
Myślę, że to pytanie powinno zostać zamknięte jako zbyt ogólne dla tej strony. Lepiej jest skierować je na forum dyskusyjne. Spróbuj [email protected] lub [email protected] lub Emacs reddit lub coś takiego. „Na czym dokładnie polega problem? ” Zakłada, że ​​istnieje jeden taki problem, a pytanie o możliwe problemy dla dowolnego pakietu (lub opiekuna pakietu) jest zbyt szerokie.
Drew
2
ESS jest hostowany na Melpa: melpa.org/#/ess , może to tylko kwestia dokumentacji. Znam wiele projektów, które zazwyczaj można zainstalować za pomocą menedżera pakietów systemowych, ale nie wspominam o tej opcji bez żadnego rzeczywistego powodu (być może zakładając, że jeśli posunąłeś się do pobierania źródeł / plików binarnych z witryny, musisz mieć powód, aby to zrobić). Nie wiem jaki problem miał Helm.
wvxvw
Twój tytuł brzmi dla mnie trochę dziwnie. Miałeś na myśli dwa razy pisać „menedżerów”, czy miałeś na myśli opiekunów?
Malabarba
1
Pisząc jako programista ESS, daj nam znać, jak możemy poprawić sprawy - jak skomentowali inni, ESS jest w MELPA.
Stephen Eglen,

Odpowiedzi:

19

Problem, o którym mówisz, to prawdopodobnie to, że kiedy uaktualniasz pakiet z sesji Emacsa, w której ten pakiet jest już w użyciu, stara wersja pakietu czasami przeszkadza podczas kompilacji nowej wersji, co prowadzi do błędnie skompilowanych plików.

Jest to wstępne rozwiązanie tego problemu w Emacs-25, ale AFAIK problem nadal występuje w 24.5.

Stefan
źródło
9

Z wyjątkiem godnego uwagi ProofGeneral, nie znam żadnego większego pakietu Emacsa, który nie byłby dostępny w niektórych archiwach ELPA. W szczególności ESS stosuje MELPA od trzech lat . A PG to historia sama w sobie i zdecydowanie nie reprezentatywna dla całego ekosystemu Emacsa.

ELPA z pewnością ma swoje wady, ale w zdecydowanej większości pakietów działa dobrze, nawet w przypadku dużych, takich jak Magit. Hełm to jedyny pakiet, w którym widzę narzekanie na ELPA. Nie jestem pewien, na co dokładnie narzekają, ale chyba chodzi o kompilację:

Podczas aktualizacji Emacs kompiluje nową wersję pakietu w środowisku, w którym wciąż jest ładowana stara wersja. Zwykle nie szkodzi to wcale, ale w niektórych sytuacjach może złamać makra. Emacs skompiluje nową wersję ze starą implementacją makra, co może spowodować uszkodzenie, jeśli nowy kod będzie polegał na określonej zmianie w tym makrze.

Ponieważ sam jestem opiekunem pakietów, nie zgadzam się z tym stwierdzeniem. Zwykle winię raczej Hełm niż ELPA lub Emacsa. Moim zdaniem stwierdzenie to hiperbola, a problem jest symptomem nadużywania i nadużywania makr.

Jeśli korzystasz z wielu makr i - co gorsza - umieszczasz w tekście makr nietrywialny kod, musisz być świadomy konsekwencji, jakie ma to dla kompilacji bajtów, i musisz zachować ostrożność, aby zachować zgodność wsteczną z własnymi makrami w twoim pakiecie. Nie robienie tego, a zamiast tego obwinianie się, nie jest zbyt przyjemną rzeczą. Moje 2 centy.

księżycowy
źródło
2
FWIW, nie zgadzam się z twoją niezgodą: chociaż zgadzam się, że lepiej jest unikać nadużywania makr, problemy z kompilacją są realne i mogą wpływać bardziej niż wywołania makr (np. Mogą one być wywoływane również przez funkcje niewymierne lub funkcje o nazwie podczas makroekspresji). A gdy gryzie Cię ten problem, Twoje pliki .elc są niepoprawne i mogą działać nieprawidłowo na wiele różnych interesujących sposobów, więc diagnoza problemu może być trudna, a naprawienie go wymaga odinstalowania i ponownej instalacji pakietu (gdy już zorientujesz się, problem i który pakiet należy zainstalować ponownie
Stefan
1
@Stefan Nie odmawiam problemów z kompilacją. Zostałem ugryziony. Ale nie podoba mi się postawa, która przejawia się w tym stwierdzeniu, i brak czegoś, co nazwałbym „zrównoważonym punktem widzenia”. Hełm tak bardzo gryzie, ponieważ popełnił wiele błędów po swojej stronie, ale ich oświadczenie nie uznaje tego. Moim skromnym zdaniem wywoływanie funkcji w ciele makro jest takim błędem. Makra służą tylko do składni, ale nigdy do funkcji. Ale rozumiem, że wydaje się, że jest to temat, na który społeczność Emacsa Lispa ma wiele różnych opinii.
lunaryorn
ropemacs , jdee-emacs i excorporate to znaczące pakiety, które nie znajdują się w żadnym archiwum ELPA (w zależności od kryteriów dla głównych pakietów). Zdecydowana większość pakietów jest jednak.
Wilfred Hughes,