Brauche ich noch GNU ELPA, wenn ich MELPA habe?


31

Das hat mich immer verwirrt, da die Leute sagen, dass MELPA neuere Versionen von Paketen hat, aber es ist nicht wirklich klar, ob GNU ELPA nur eine Teilmenge von MELPA ist oder ob ich beides brauche?

Der Grund, warum ich frage, ist, dass ich viel mit meinen Paketen experimentiere und es package-list-packageseine ganze Weile dauert. Mir ist bewusst package-list-packages-no-fetch, aber ich möchte oft die neueste Paketliste erhalten.

Die Frage ist also, kann ich einfach MELPA verwenden und dieselben (und möglicherweise neuere) Pakete erhalten, als ob ich sowohl MELPA als auch GNU ELPA verwendet hätte?


5
Ja, du brauchst immer GNU Elpa.
Malabarba

Antworten:


45

Zunächst einmal ELPA ist der Name einer Spezifikation, die Emacs Lisp Package Archive. Es gibt drei weithin bekannte Implementierungen dieser Spezifikation, GNU ELPA, Marmalade und MELPA.

GNU ELPA ist das offizielle GNU Emacs-Archiv, das für ausreichend neue Emacs-Installationen sofort verfügbar ist. Es ist vergleichsweise klein und erfordert die Zuweisung von Urheberrechten und die Zusammenarbeit mit der offiziellen Mailingliste. Es ist das Nächste, was wir zu einer Prüfung haben, die mit einem Linux-Distributionspaketarchiv vergleichbar ist.

Marmalade ist ein inoffizielles Archiv mit einer guten Anzahl versionierter Pakete. Autoren und Betreuer müssen ihre Veröffentlichungen manuell hochladen. Die Überprüfung wird einmal für jedes neue Mitglied durchgeführt, bevor es ihm gestattet wird, ein Benutzerkonto zu erstellen. Danach kann es das Konto frei geben, wie es möchte.

MELPA ist ein weiteres inoffizielles Archiv mit der größten Anzahl von Paketen. Jedes Paket wird kurz auf seinen Codestil hin überprüft, wobei die Aufnahme angefordert wird. Anschließend werden die Pakete automatisch aus ihren (normalerweise VCS-) Quellen erstellt. Neuerstellungen können stündlich erfolgen. Es gibt auch einen MELPA-Stable, der nur mit Tags versehene Releases erstellt, aber viel weniger Pakete enthält, weniger sogar als Marmalade.

Was die Überlappung betrifft, gibt es praktisch keine Überlappung zwischen GNU ELPA und Marmelade, und dies gilt auch für GNU ELPA und MELPA. Marmelade und MELPA überlappen sich jedoch ziemlich. Ich würde schätzen, dass der größte Teil der Marmelade eine Untergruppe von MELPA ist. Aus diesem Grund können Sie für die meisten Pakete MELPA und für einige fehlende GNU ELPA verwenden.

Update : Laut Malabarbas Paketstatistik hat MELPA Stable Marmalade in der Anzahl der verfügbaren Pakete übertroffen. Ich würde es jetzt über Marmelade holen.

Update : Marmelade ist im Wesentlichen tot. Das Zertifikat ist abgelaufen und es wurden kaum neue Pakete hochgeladen. Dies ist auf den eher ungewöhnlichen Vorgang zurückzuführen. Sie müssen den Benutzern manuell vom Eigentümer hinzugefügt werden. Da er verschwunden ist, wurden seit 2016 oder so keine neuen Benutzer hinzugefügt.


Klingt wie Melpa + Gnu Elpa, und Marmelade nicht zu verwenden, ist der richtige Weg. Irgendeine einfache Möglichkeit zum Konvertieren?
Justingordon

package-archivesPassen Sie den Index einfach entsprechend an und aktualisieren Sie ihn wie mit M-x package-refresh-contents. M-x list-packagessollte eine andere Liste als zuvor anzeigen.
Wasamasa

Es scheint malarbaba Paket Statistik im Dezember 2015 feststecken ...
Jean - Pierre

Ich habe ein weiteres Update hinzugefügt, da Marmalade tot ist
wasamasa

-5

Nein, Sie brauchen möglicherweise weder GNU ELPA noch ELPA.

Der praktische Grund, GNU ELPA oder ein Drittanbieter-Repository nicht zu verwenden, besteht darin, meinen Emacs vor dem Herunterfahren von ELPA zu schützen. Von Zeit zu Zeit wurde heruntergefahren (siehe https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 ).

Die meisten meiner Pakete werden von https://melpa.org heruntergeladen. Ich könnte GNU ELPA umgehen, indem ich einen kleinen lokalen Paketspiegel ausgewählter GNU ELPA-Pakete erstelle.

Überprüfen Sie mein Setup unter https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el, GNU ELPA wird nicht verwendet.

Wenn ich nur GNU ELPA-Pakete verwenden muss, erstelle ich lieber mein eigenes lokales ELPA (es ist so einfach wie das Erstellen einer Textdatei archive-contents) ~/.emacs.d/localelpa.

Zum Beispiel gibt es seq-2.20.tarnur bei GNU ELPA und ich brauche das dafür. Also füge ich dieses Paket meinem lokalen elpa bei hinzuhttps://github.com/redguardtoo/emacs.d/tree/master/localelpa

Zur Zeit verwende ich nur vier Pakete von GNU ELPA,

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

Diese Pakete werden in my abgelegt, localelpasodass ich keinen Zugriff auf GNU ELPA benötige.

Sie können auch mein Paket https://github.com/redguardtoo/elpa-mirror überprüfen, das aus installierten Paketen ein lokales Repository erstellt. So ist jetzt auch Remote-Repository (GNU ELPA, MELPA) optional.

Sie können stattdessen auch das heruntergeladene Quellpaket verwenden. Bitte überprüfen Sie https://github.com/redguardtoo/emacs.d/tree/master/site-lisp . rainbow-modeSie müssen verstehen, was load-path( http://emacswiki.org/emacs/LoadPath ), wenn Sie Quelle verwenden.

Sie können package--add-to-archive-contentsPakete auch optimieren, bevor sie im Paketmanager angezeigt werden. Dies ist eine Art undokumentierter Hack. Es funktioniert von Emacs 23.4 bis Emacs 27. Siehe init-elpa.elzum Beispiel.


7
Sie brauchen GNU ELPA auch für Pakete wie Auctex, seq.el, let-alist, rainbow-mode usw. Ich würde also kaum behaupten, dass es veraltet ist, sondern dass seine Bedeutung steigt, wenn mehr Leute in die Emacs-Entwicklung eintreten und sich dies wünschen Pakete für alle leicht verfügbar sein.
Wasamasa

Ich habe meine Antwort zu diesem Thema ein wenig aktualisiert.
Chen Bin

@wasamasa kannst du bitte erklären, warum genau ich gnu elpa für pakete wie auctex brauche?
Googley

1
@toogley Da es nur auf GNU ELPA verfügbar ist, ist dies der Grund.
Wasamasa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.