GNU ELPA to oficjalne repozytorium pakietów GNU Emacs. Jest to jedyna domyślnie włączona, co oznacza, że ma największy zasięg. Jednocześnie przesłanie pakietu jest trochę kłopotliwe i wymaga przypisania praw autorskich FSF, co oznacza, że ma on stosunkowo ograniczony wybór pakietów.
MELPA i Marmalade to repozytoria pakietów innych firm. Nie są oficjalnie wspierane przez GNU, ale mają też znacznie większy wybór pakietów. Jakość pakietu jest nieco bardziej zmienna, ale znacznie bardziej prawdopodobne jest znalezienie tego, czego szukasz, szczególnie jeśli jest to nieco niejasne.
Marmolada i MELPA mają nieco inne modele dla osób przesyłających paczki. Rozumiem, że MELPA śledzi repozytorium kontroli wersji bezpośrednio (tj. Przez GitHub), pozwalając autorom pakietów aktualizować pakiety tylko poprzez wypychanie commits do gałęzi. Z drugiej strony Marmalade ma jawne przesyłanie paczek do repozytorium.
W praktyce nie widziałem dużej różnicy między MELPA a Marmoladą. Nie ma wiele wad, aby umożliwić obu z nich jak największy wybór pakietów instalowalnych: używam zarówno (jak i GNU ELPA, oczywiście) od dłuższego czasu bez znaczących problemów.
Jednym z możliwych problemów (których nie spotkałem na sobie) z włączeniem obu repozytoriów, na które nie wpadłem, jest dostępność pakietów z obu wersji. Domyślnie menedżer pakietów ( package.el
) nie ma sposobu na rozwiązanie takiego konfliktu; Można to jednak rozwiązać, instalując melpa
pakiet, który pozwala dostosować, które pakiety są dostarczane lub wykluczane z których repozytoriów. Możesz zobaczyć więcej szczegółów tutaj lub z dokumentacji melpa
pakietu.
Jak pomocne @Malabarba, problem ten został rozwiązany w Emacs 24.4.
Jeśli naprawdę martwisz się o bezpieczeństwo, możesz uniknąć zarówno MELPA, jak i Marmalade, ponieważ pozwalają każdemu przesyłać pakiety i, o ile mi wiadomo, nie mają żadnych proaktywnych uzgodnień dotyczących bezpieczeństwa. Z drugiej strony repozytorium GNU ELPA jest zarządzane przez FSF i ma podpisane pakiety, które powinny pomóc. Oczywiście, jeśli bezpieczeństwo jest naprawdę ważne, możesz po prostu przejrzeć i zainstalować pakiety elisp ręcznie zamiast korzystać z menedżera pakietów.
Moim zdaniem, niektóre repo wiążą się z większym obciążeniem przesyłaniem pakietów niż inne; repozytoria z większym obciążeniem zwykle mają mniej pakietów. W kolejności od największego do najmniejszego narzutu:
Osobiście uważam, że MELPA Stable lub Marmalade prawdopodobnie wygra na dłuższą metę dla większości użytkowników - właściwa MELPA jest dość niestabilna, a ELPA jest zbyt restrykcyjna, aby była naprawdę skalowalna dla wielu pakietów. Ale to tylko opinia.
źródło
Dostępnych jest kilka repozytoriów pakietów.
Urzędnik
GNU ELPA to oficjalne repozytorium pakietów. Jest mały i wymaga przypisania praw autorskich (wszystkich autorów pakietu) do FSF, aby mógł się do niego przyczynić.
Pakiety GNU ELPA to tak naprawdę repozytorium git . Zaletą hostowania tutaj jest to, że główny zespół próbuje aktualizować pakiety, jeśli sam Emacs dodaje lub przestaje działać.
Zbudowany ze źródła
MELPA to największe i najszybciej rozwijające się repozytorium pakietów. Wydaje nową wersję za każdym razem, gdy nowa wersja jest przekazywana do repozytorium lub strona EmacsWiki jest aktualizowana.
To krwawiąca przewaga, ale w praktyce działa bardzo dobrze. MELPA jest wyselekcjonowana, aby uniknąć duplikatów pakietów i zapewnić rejestrację kanonicznego katalogu głównego pakietu (zamiast losowego rozwidlenia).
MELPA ma problem polegający na tym, że wersje są tylko znacznikami czasu, np
my-package-20131231.2359
. Oznacza to, że jeśli zależysz od mojego pakietu:wtedy Emacs pomyśli, że każda wersja MELPA jest wystarczająco nowa.
MELPA Stabilny jest taki sam jak MELPA, ale zamiast używać wersji datestamp, używa wersji w tagach git. Pozwala to na lepsze rozwiązywanie zależności, ale ma problemy z zależnością od pakietów wiki .
Przesłane przez użytkownika
Marmolada bardziej przypomina tradycyjne repozytorium z innych języków programowania. Twórca pakietu przesyła pakiet do Marmalade po wydaniu.
Zasadniczo zapewnia to poprawny proces wydawania pakietów (Marmalade wyprzedza stabilną wersję MELPA), a także pozwala uniknąć problemu z automatycznym generowaniem numeru wersji. Nie ma jednak weryfikacji tożsamości. Każdy może przesłać pakiet, nawet jeśli go nie napisał. Staje się to trudne, jeśli opiekun
my-package
odkryje, że ktoś inny przesłałmy-package
i nie może później przesłać nowych wersji.Marmolada była kiedyś aplikacją node.js, a teraz jest napisana w elisp. Obie wersje miały czasami problemy z czasem pracy.
Specyficzne dla projektu
Tryb ELPA w trybie Org to repozytorium, które obsługuje tylko
org
iorg-plus-contrib
. Tryb Org jest częścią rdzenia Emacsa, ale został opracowany zewnętrznie, a kod jest okresowo synchronizowany z pniem Emacsa. To repo pozwala Ci na najnowocześniejszy tryb org.User42 ELPA to repozytorium dla jednego dewelopera pakietów, który wydał całkiem sporo pakietów Emacsa . Jeśli podoba Ci się któryś z jego pakietów, możesz dodać to repo.
Sunrise Commander ELPA to repozytorium rozszerzeń dla Sunrise Commander (pakiet Emacsa do przeglądania plików, zainspirowany przez północnego dowódcę).
Na emeryturze
ELPA firmy Tromey była pierwszą konfiguracją repo. Oficjalnie został zastąpiony GNU ELPA, ale nie miał takich samych wymagań dotyczących przypisania praw autorskich. Od 2010 r. Nie jest już aktualizowany.
Archiwum pakietów Elpy zawierało różne pakiety opracowane przez Jorgena Schaefera dla „Elpy, środowisko programistyczne Emacsa Pythona” , ale migracja do MELPA Stable.
źródło
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
: ale jestem pewien, że te obawy znikną teraz, gdy będzie to Microsoft GitHub;-)
Kilka dodatkowych informacji w celu uzupełnienia innych odpowiedzi tutaj.
Niektóre informacje o MELPA i MELPA „stabilne” -
Zacznij od spojrzenia na to dość zduplikowane pytanie z StackOverflow, w tym komentarze do samego pytania. W szczególności ten komentarz, który zamieściłem po wymianie wiadomości e-mail z Donaldem Curtisem (opiekunem MELPA i stabilnej wersji MELPA):
Podsumowując, nie ma nic bardziej „stabilnego” w treści „stabilnej MELPA” . Numeracja wersji i metoda kanału mogą być różne; to wszystko. A jeśli konkretny opiekun pakietu chce odróżnić wersje „stabilną” od „rozwojowej” i chce to zrobić, przesyłając je do dwóch różnych stron, to taki jest efekt - dla tego pakietu .
Jedną różnicą między MELPA a Marmalade (i GNU ELPA) jest to, że nie jest wymagane, aby kod wnoszony do MELPA pochodził z repozytorium git. W szczególności można go automatycznie pobrać z Elisp Area of Emacs Wiki .
Czy to oznacza, jak niektórzy powiedzieli, że każdy może przesłać cokolwiek, a ty nie masz możliwości dowiedzenia się, czy kod jest rzeczywiście przez autora, którego dotyczy roszczenie itp.? Tak i nie. Zasadniczo tak: każdy może przesłać kod Elisp na Wiki Emacs. Jak mówi góra strony Elisp-Area:
Jednak dla pewności jestem administratorem wiki, a moje własne biblioteki Lisp w obszarze Elisp wiki są zablokowanymi stronami. Oznacza to, że tylko administrator wiki może je przesyłać. Więc w tym przypadku możesz być całkiem pewien, że moje biblioteki, które pobierasz z MELPA lub Emacs Wiki, zostały przesłane przeze mnie. Podobnie jak w przypadku wszystkich elementów w Internecie, nie ma jednak gwarancji żelaznej, podobnie jak w przypadku samego kodu. Jak głosi napis GPL w każdej bibliotece GPL:
HTH. Miłego hakowania.
źródło