GNU ELPA ist das offizielle GNU Emacs-Paket-Repository. Es ist das einzige, das standardmäßig aktiviert ist, was bedeutet, dass es die größte Reichweite hat. Gleichzeitig ist das Einreichen eines Pakets etwas umständlich und erfordert eine FSF-Urheberrechtszuweisung, was bedeutet, dass es eine relativ begrenzte Auswahl an Paketen gibt.
MELPA und Marmalade sind Drittanbieter-Paketdepots. Sie werden nicht offiziell von GNU unterstützt, haben aber auch eine viel größere Auswahl an Paketen. Die Paketqualität ist etwas variabler, aber es ist viel wahrscheinlicher, dass Sie das finden, wonach Sie suchen, insbesondere, wenn es etwas dunkel ist.
Marmalade und MELPA haben leicht unterschiedliche Modelle für Paket-Uploader. Meines Wissens nach verfolgt MELPA ein Versionskontroll-Repository direkt (dh über GitHub), sodass Paketautoren Pakete aktualisieren können, indem sie Commits an einen Zweig senden. Bei Marmalade hingegen werden Pakete explizit in das Repository hochgeladen.
In der Praxis habe ich keinen großen Unterschied zwischen MELPA und Marmelade gesehen. Es hat nicht viel Nachteil, beiden die größtmögliche Auswahl an installierbaren Paketen zu ermöglichen: Ich verwende beide (und natürlich GNU ELPA) seit einiger Zeit ohne nennenswerte Probleme.
Ein mögliches Problem (das mir nicht begegnet ist), wenn beide Repositorys aktiviert sind, das mir nicht begegnet ist, besteht darin, dass Pakete von beiden in verschiedenen Versionen verfügbar sind. Standardmäßig hat der Paketmanager ( package.el
) keine Möglichkeit, Konflikte wie diese zu lösen. Sie können dies jedoch beheben, indem Sie das melpa
Paket installieren , mit dem Sie anpassen können, welche Pakete in welchen Repositorys bereitgestellt oder davon ausgeschlossen werden. Weitere Details finden Sie hier oder in der Dokumentation des melpa
Pakets.
Wie @Malabarba hilfreich hervorhob, wurde dieses Problem in Emacs 24.4 behoben.
Wenn Sie sich wirklich Sorgen um die Sicherheit machen, sollten Sie sowohl MELPA als auch Marmalade meiden, da dort niemand Pakete hochladen kann und meines Wissens keine proaktiven Sicherheitsvorkehrungen getroffen wurden. Das GNU ELPA-Repository hingegen wird von der FSF verwaltet und hat Pakete signiert, die helfen sollen. Wenn die Sicherheit wirklich wichtig ist, können Sie elisp-Pakete auch manuell überprüfen und installieren, anstatt den Paket-Manager zu verwenden.
Meiner Meinung nach haben einige Repos mehr Aufwand beim Einreichen von Paketen als andere. Die Repos mit mehr Overhead haben tendenziell weniger Pakete. In der Reihenfolge vom größten bis zum kleinsten Aufwand:
Persönlich denke ich, dass entweder MELPA Stable oder Marmalade auf lange Sicht für die meisten Benutzer von Vorteil sein wird - MELPA ist ziemlich instabil und ELPA ist zu restriktiv, um für viele Pakete wirklich skalierbar zu sein. Aber das ist nur eine Meinung.
quelle
Es stehen mehrere Paketdepots zur Verfügung.
Offiziell
GNU ELPA ist das offizielle Paketrepo . Es ist klein und erfordert eine Urheberrechtszuweisung (aller Autoren eines Pakets) an die FSF, um dazu beizutragen.
Pakete auf GNU ELPA sind eigentlich nur ein Git-Repo . Der Vorteil, hier gehostet zu werden, besteht darin, dass das Kernteam versucht, Pakete zu aktualisieren, wenn Emacs selbst Funktionen hinzufügt oder nicht mehr unterstützt.
Aus der Quelle gebaut
MELPA ist das größte und am schnellsten wachsende Paket-Repo. Jedes Mal, wenn eine neue Version in ein Repo verschoben oder eine EmacsWiki-Seite aktualisiert wird, wird eine neue Version veröffentlicht.
Es ist eine Hochkonjunktur, aber in der Praxis funktioniert es sehr gut. MELPA ist kuratiert, um doppelte Pakete zu vermeiden und sicherzustellen, dass die kanonische Heimat des Pakets aufgezeichnet wird (anstelle einer zufälligen Abzweigung).
MELPA hat das Problem, dass Versionen nur Zeitstempel sind, z
my-package-20131231.2359
. Das bedeutet, wenn Sie auf my-package angewiesen sind:dann wird Emacs denken, dass jede Version auf MELPA neu genug ist.
MELPA Stable ist dasselbe wie MELPA, verwendet jedoch anstelle von Datumsstempelversionen die Versionen in Git-Tags. Dies ermöglicht eine bessere Auflösung von Abhängigkeiten, hat jedoch Probleme mit Wiki-Paketen .
Nutzer-Uploads
Marmalade ist viel mehr wie ein traditionelles Repository aus anderen Programmiersprachen. Der Paketentwickler lädt das Paket bei der Veröffentlichung auf Marmalade hoch.
Im Prinzip wird auf diese Weise eine ordnungsgemäße Freigabe der Pakete erreicht (Marmelade ist älter als MELPA) und das Problem mit der automatisch generierten Versionsnummer vermieden. Es findet jedoch keine Identitätsüberprüfung statt. Jeder kann ein Paket hochladen, auch wenn er es nicht geschrieben hat. Dies wird schwierig, wenn der Betreuer von
my-package
feststellt, dass jemand anderes hochgeladen hatmy-package
und anschließend keine neuen Versionen hochladen kann.Marmalade war früher eine node.js-App und ist jetzt in elisp geschrieben. Beide Versionen hatten gelegentlich Probleme mit der Verfügbarkeit.
Projektspezifisch
Org-Mode ELPA ist ein Repo, das nur
org
und hostetorg-plus-contrib
. Der Org-Modus ist Teil des Emacs-Kerns, wird jedoch extern entwickelt und der Code wird nur in regelmäßigen Abständen mit dem Emacs-Trunk synchronisiert. Mit diesem Repo haben Sie den neuesten Org-Modus.User42 ELPA ist ein Repo für einen einzelnen Paketentwickler, der eine ganze Reihe von Emacs-Paketen veröffentlicht hat . Wenn Sie eines seiner Pakete mögen, können Sie dieses Repo hinzufügen.
Sunrise Commander ELPA ist ein Repo für Erweiterungen von Sunrise Commander (ein Emacs-Paket zum Durchsuchen von Dateien, inspiriert von Midnight Commander).
Im Ruhestand
Tromeys ELPA war das erste Repo. Es wurde offiziell durch GNU ELPA ersetzt, hatte aber nicht die gleichen Copyright-Anforderungen. Ab 2010 wird es nicht mehr aktualisiert.
Das Elpy-Paketarchiv enthielt verschiedene Pakete, die von Jorgen Schäfer für 'Elpy, die Emacs Python-Entwicklungsumgebung' entwickelt wurden , die jedoch zu MELPA Stable migriert wurden.
quelle
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
: aber ich bin sicher, dass diese Bedenken verschwinden werden, da es Microsoft GitHub;-)
Einige zusätzliche Informationen, um die anderen Antworten hier zu ergänzen.
Einige Infos zu MELPA und MELPA "Stall" -
Schauen Sie sich zunächst diese ziemlich doppelte Frage von StackOverflow an, einschließlich der Kommentare für die Frage selbst. Insbesondere dieser Kommentar, den ich nach dem Austausch von E-Mails mit Donald Curtis (Betreuer von MELPA und MELPA stable) gepostet habe:
In der Summe gibt es nichts , was von Natur aus „stabil“ über den Inhalt „Melpa stabil“ ist . Die Versionsnummerierung und die Feed-Methode können unterschiedlich sein. das ist alles. Und wenn ein bestimmter Paketbetreuer "stabile" von "Entwicklungs" -Versionen unterscheiden möchte und dies durch Hochladen auf die beiden verschiedenen Sites tun möchte, dann ist dies der Effekt - für dieses Paket .
Ein Unterschied zwischen MELPA und Marmalade (und GNU ELPA) ist, dass es nicht erforderlich ist, dass zu MELPA beigetragener Code aus einem Git-Repository stammt. Insbesondere kann es automatisch aus dem Elisp-Bereich von Emacs Wiki gezogen werden .
Bedeutet das, wie einige gesagt haben, dass jeder etwas hochladen kann und Sie nicht wissen können, ob der Code tatsächlich vom beanspruchten Autor stammt, usw.? Ja und nein. Im Allgemeinen ja: Es steht jedem frei, Elisp-Code in Emacs Wiki hochzuladen. Wie oben auf der Elisp-Area-Seite steht:
Nur damit Sie wissen, bin ich Administrator des Wikis, und meine eigenen Lisp-Bibliotheken im Wiki-Elisp-Bereich sind gesperrte Seiten. Das bedeutet, dass nur ein Wiki-Administrator sie hochladen kann. In diesem Fall können Sie also ziemlich sicher sein, dass meine Bibliotheken, die Sie von MELPA oder Emacs Wiki heruntergeladen haben, von mir hochgeladen wurden. Wie bei allem im Internet gibt es jedoch keine Garantie, so wie es auch beim Code selbst keine Garantie gibt. Wie die GPL-Klappentext in jeder GPL-Bibliothek besagt:
HTH. Viel Spaß beim Hacken.
quelle