Czy nadal potrzebuję GNU ELPA, jeśli mam MELPA?


31

Zawsze mnie to myliło, ponieważ ludzie mówią, że MELPA ma nowsze wersje pakietów, ale nie jest do końca jasne, czy GNU ELPA jest tylko podzbiorem MELPA, czy też potrzebuję obu?

Powodem, dla którego pytam, jest to, że dużo eksperymentuję z moimi pakietami i package-list-packageszajmuje to sporo czasu. Jestem tego świadomy package-list-packages-no-fetch, ale najczęściej chciałbym uzyskać najnowszą listę pakietów.

Pytanie brzmi: czy mogę po prostu użyć MELPA i uzyskać te same (i prawdopodobnie nowsze wersje) pakiety, jak gdybym używał zarówno MELPA, jak i GNU ELPA?


5
Tak, zawsze będziesz potrzebować GNU Elpa.
Malabarba

Odpowiedzi:


45

Przede wszystkim ELPA to nazwa specyfikacji, Emacs Lisp Package Archive. Istnieją trzy powszechnie znane implementacje tej specyfikacji: GNU ELPA, Marmalade i MELPA.

GNU ELPA to oficjalne archiwum GNU Emacs, dostępne od razu po instalacji dla wystarczająco nowych instalacji Emacsa. Jest stosunkowo niewielki, a jego udział wymaga przypisania praw autorskich i współpracy z oficjalną listą mailingową. Jest to najbliższa rzecz, którą musimy zweryfikować, porównywalną do archiwum pakietu dystrybucyjnego Linuksa.

Marmolada to nieoficjalne archiwum z dużą ilością wersjonowanych pakietów. Autorzy i opiekunowie muszą ręcznie przesłać swoje wydania. Sprawdzanie odbywa się raz dla każdego nowego członka, zanim pozwoli mu mieć konto użytkownika, a po tym można je zwolnić według własnego uznania.

MELPA to kolejne nieoficjalne archiwum z największą liczbą pakietów. Każdy pakiet jest krótko sprawdzany pod kątem stylu kodu z prośbą o włączenie, po czym pakiety są automatycznie budowane ze źródeł (zwykle VCS). Odbudowy mogą się zdarzać co godzinę. Istnieje również stabilna wersja MELPA, która buduje tylko oznaczone wydania, ale ma o wiele mniej pakietów, mniej nawet niż Marmalade.

Jeśli chodzi o nakładanie się, GNU ELPA i Marmolada praktycznie nie pokrywają się, podobnie jak w przypadku GNU ELPA i MELPA. Marmolada i MELPA pokrywają się jednak w sporej wysokości. Oceniłbym, że większość Marmolady jest podzbiorem MELPA. Dlatego możesz wybrać MELPA dla większości pakietów, a może GNU ELPA dla kilku brakujących.

Aktualizacja : Według statystyk paczki malabarba MELPA Stable przewyższyła Marmalade pod względem liczby dostępnych pakietów. Wybrałbym to bardziej niż Marmoladę.

Aktualizacja : Marmolada jest zasadniczo martwa. Certyfikat wygasł i nie przesłano prawie żadnych nowych pakietów. Wynika to z jego dość nietypowego procesu, musisz zostać ręcznie dodany do użytkowników przez jego właściciela, a ponieważ zaginął, od 2016 r. Nie dodano żadnych nowych użytkowników.


Brzmi jak Melpa + Gnu Elpa, a nie używanie Marmolady, to droga. Jakiś prosty sposób na konwersję?
justingordon

Po prostu package-archivesodpowiednio dostosuj i zaktualizuj indeks, na przykład za pomocą M-x package-refresh-contents. M-x list-packagespowinien wyświetlić inną listę niż poprzednio.
wasamasa

Wygląda na to, że statystyki pakietu Malarbaba utknęły w grudniu 2015 r.
JeanPierre

Dodałem jeszcze jedną aktualizację, ponieważ Marmolada nie żyje
Wasamasa

-5

Nie, możesz nie potrzebować GNU ELPA ani żadnej ELPA.

Praktycznym powodem, aby nie używać GNU ELPA ani repozytorium strony trzeciej jest ochrona mojego Emacsa przed zamknięciem ELPA. Od czasu do czasu dochodziło do wyłączenia (patrz https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 )

Większość moich pakietów jest pobieranych z https // melpa.org, mogłem uniknąć GNU ELPA, tworząc małe lokalne odbicie lustrzane wybranych pakietów GNU ELPA.

Sprawdź moją konfigurację na https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el, GNU ELPA nie jest używane.

Jeśli muszę użyć niektórych pakietów tylko GNU ELPA, wolałbym zamiast tego utworzyć własny lokalny ELPA (to tak proste, jak utworzenie pliku tekstowego archive-contents), sprawdź mój ~/.emacs.d/localelpa.

Na przykład seq-2.20.taristnieją tylko w GNU ELPA i potrzebuję tego. Więc dodaję ten pakiet do mojej lokalnej elpy pod adresemhttps://github.com/redguardtoo/emacs.d/tree/master/localelpa

Obecnie korzystam tylko z czterech pakietów GNU ELPA,

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

Te pakiety są umieszczone w moim, localelpawięc nie potrzebuję dostępu do GNU ELPA.

Możesz również sprawdzić mój pakiet https://github.com/redguardtoo/elpa-mirror, który tworzy lokalne repozytorium z zainstalowanych pakietów. Tak więc nawet zdalne repozytorium (GNU ELPA, MELPA) jest teraz opcjonalne.

Możesz również użyć pakietu źródłowego zamiast pobranego. Sprawdź https://github.com/redguardtoo/emacs.d/tree/master/site-lisp . rainbow-mode, Musisz zrozumieć, co jest load-path( http://emacswiki.org/emacs/LoadPath ), jeśli używasz źródła.

Możesz także doradzić, package--add-to-archive-contentsjak ulepszyć paczki, zanim zostaną wyświetlone w menedżerze pakietów. To rodzaj nieudokumentowanego włamania. Działa od Emacsa 23.4 do Emacsa 27. Zobacz init-elpa.elna przykład.


7
Potrzebujesz także GNU ELPA dla pakietów takich jak Auctex, seq.el, let-alist, rainbow-mode itp., Więc nie twierdzę, że jest przestarzały, a raczej jego znaczenie rośnie, gdy coraz więcej osób wchodzi w rozwój Emacsa i życzy sobie ich pakiety, które będą łatwo dostępne dla wszystkich.
wasamasa,

Zaktualizowałem nieco swoją odpowiedź na ten temat.
chen bin

@wasamasa, czy możesz wyjaśnić, dlaczego dokładnie potrzebuję gnu elpa dla pakietów takich jak auctex?
toogley

1
@toogley Ponieważ jest dostępny tylko w GNU ELPA, właśnie dlatego.
wasamasa,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.