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).
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 async
jako zależność?
źródło
Odpowiedzi:
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.
źródło
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.
źródło