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-packages
eine 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?
package
package-repositories
Jakub Arnold
quelle
quelle
Antworten:
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.
quelle
package-archives
Passen Sie den Index einfach entsprechend an und aktualisieren Sie ihn wie mitM-x package-refresh-contents
.M-x list-packages
sollte eine andere Liste als zuvor anzeigen.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.tar
nur 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,
Diese Pakete werden in my abgelegt,
localelpa
sodass 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-mode
Sie müssen verstehen, wasload-path
( http://emacswiki.org/emacs/LoadPath ), wenn Sie Quelle verwenden.Sie können
package--add-to-archive-contents
Pakete auch optimieren, bevor sie im Paketmanager angezeigt werden. Dies ist eine Art undokumentierter Hack. Es funktioniert von Emacs 23.4 bis Emacs 27. Sieheinit-elpa.el
zum Beispiel.quelle