Was sind die Anwendungsfälle von alternativen Paketmanagern gegenüber "package.el"?


14

Hintergrund

Ich benutze Emacs täglich, aber meistens, um Dinge zu erledigen. Ich mag es nicht besonders, es anzupassen, als Pakete hinzuzufügen, und ich mag es nicht, Fehler zu beheben. Ich möchte, dass Emacs in den Hintergrund treten, wie es ein gutes Betriebssystem tut, und einfach mit den Dingen weitermachen. Vor einiger Zeit stellte ich fest, el-getdass ich die Pakete installieren konnte, die ich benötigte und die nicht verfügbar waren, package.elund gab mir außerdem mehr Kontrolle, z maint. Jetzt bin ich mir nicht sicher, ob ich verwenden soll el-getoder nicht.

Frage

el-getschien eine großartige Lösung für die verschiedenen Repositorys und Emacs-Hacks da draußen zu sein. Es bot Fähigkeiten, die mit einfach nicht möglich waren package.el. Was sind die Anwendungsfälle für und ähnliche Alternativen zum integrierten Paket-Manager package.elvon emacs , da in neueren Versionen von emacs ( >=24.4) mehrere Repositorys unterstützt werden el-get?


2
Siehe auch: Quelpa . Die kurze Antwort lautet: Sicher, es gibt immer noch Pakete, die nicht auf ELPA / MELPA / Marmelade sind. Wenn Sie feststellen, dass Sie eines benötigen, können Sie es immer noch ohne schreckliche Hacks mit el-getund dergleichen bekommen.
PythonNut

Antworten:


8

Es gibt Dinge, die mit ELPA immer noch unmöglich sind, und es gibt Dinge, die mit ELPA immer unmöglich sind, weil sie nicht in das Konzept von ELPA passen: Sie werden niemals in der Lage sein, ein bestimmtes Commit durch seinen Hash von einem Fork zu installieren Repository. Ebenso können Sie keine benutzerdefinierten lokalen Patches auf ein Paket anwenden, bevor Sie es installiert haben. Diese Funktionen sprengen den Rahmen von ELPA und wenn Sie sie benötigen, müssen Sie einen alternativen Paketmanager verwenden.

Ich denke jedoch, dass el-get heutzutage eine Art Legacy-Lösung ist. Da ELPA zum De-facto-Standard-Paketmanager für Emacs geworden ist, sollten sich Manager alternativer Pakete nahtlos in ELPA integrieren. el-get macht jedoch keine eigenen Pakete für ELPA verfügbar, was bedeutet, dass seine Pakete für ELPA vollständig unsichtbar sind und ELPA-Pakete niemals von el-get-Paketen abhängen können, was offensichtliche Auswirkungen auf das Abhängigkeitsmanagement hat.

Wenn Sie Funktionen benötigen, die über ELPA hinausgehen, sollten Sie sich heutzutage eher mit QUELPA als mit el-get befassen.


"Wenn sie es nicht wären, würde sich niemand mehr darum kümmern, sie zu pflegen." Der Zweck kann jedoch nur das Ego des Entwicklers sein.
T. Verron

Es wäre jedoch ein mächtiges Ego, das leicht eine so große Community anziehen könnte, wie es el-get immer noch hat, und QUELPA gewann schnell :)
Lunaryorn,

Ich habe natürlich allgemein kommentiert. ;)In Bezug auf die Besonderheiten der vorliegenden Pakete ist Ihre Antwort, die über den gesunden Menschenverstand hinausgeht, von entscheidender Bedeutung, da sie den Zweck von el-get und quelpa aufzeigt.
T. Verron

@ T.Verron Ja, Punkt genommen. Ich habe diese Aussage entfernt, es war eine dumme Sache zu sagen. Es tut uns leid.
Lunaryorn

@lunaryorn mit el-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA dir meinst die dinge die von el-get installiert wurden, oder?
Googley

5

Ich habe einen neuen Paketmanager für Emacs geschrieben, straight.elder versucht, alle vorhandenen Paketverwaltungslösungen zu verbessern. In der Dokumentation gibt es einen umfangreichen Abschnitt straight.elüber Vergleiche mit anderen Paketmanagern , aber hier ist eine sehr kurze Zusammenfassung:

  • package.elLädt undurchsichtige Tarballs von zentralen Servern herunter, ohne dass eine bestimmte Version eines Pakets ausgewählt werden kann. Außerdem können Sie keine lokalen Änderungen an Ihren Paketen vornehmen. Änderungen vorab beizutragen ist unmöglich. straight.elKlont Git-Repositorys auf dezentrale Weise (verwendet jedoch automatisch Rezepte von MELPA , GNU ELPA und EmacsMirror , wenn Sie dies wünschen) und ermöglicht es Ihnen, beliebige lokale Änderungen daran vorzunehmen, diese Änderungen festzuschreiben und einen Beitrag im Upstream zu leisten. Dies kann manuell erfolgen, oder Sie können die integrierten Massenrepository-Verwaltungsvorgänge verwenden. Änderungen an Ihren Paketen werden automatisch erkannt und manuelle Neuerstellungen sind nicht erforderlich. Außerdem,straight.el unterstützt die vollständige Reproduzierbarkeit Ihrer Emacs-Konfiguration, da Sie eine Revisionssperrdatei schreiben können, die die Git-Hashes aller Ihrer Pakete enthält.
  • Quelpa und Cask basieren beide auf package.elden gleichen Nachteilen und erben diese. Zum Beispiel hat Cask kein Konzept für die Installation einer bestimmten Version eines Pakets. Quelpa tut es, aber es erfordert, dass Sie den Git-Hash in Ihre Init-Datei einprogrammieren. straight.elverzichtet package.elvollständig und ersetzt alle seine Kernfunktionen durch ein einheitliches Design, das auf viele weitere Anwendungsfälle zugeschnitten ist.
  • el-get hat den Vorteil, dass Sie Pakete von überall installieren können (alle bekannten Versionskontrollsysteme, beliebiges HTTP, Systempaketmanager, sogar EmacsWiki go get!?). Durch die Unterstützung so vieler Quellen kann el-get jedoch nicht die Art von erweiterten Paketverwaltungsvorgängen bereitstellen (z. B. Reproduzierbarkeit durch Revisionssperrdateien und interaktive Repository-Verwaltungsvorgänge), straight.eldie dies ermöglicht. straight.elunterstützt nur Git, da die meisten Pakete über Git verfügbar sind und diejenigen, die nicht über den EmacsMirror erhältlich sind (ich wage es, eines zu finden, das es nicht geben kann!). Beachten Sie, dass es straight.eldennoch eine erweiterbare API für zusätzliche Versionskontroll-Backends (z. B. für Mercurial) gibt, die bei Bedarf in Zukunft hinzugefügt werden können.
  • Borg hat eine sehr ähnliche Philosophie straight.elund bietet viele der gleichen Vorteile. Es ist jedoch nicht als vollständiger Paket - Manager konzipiert und ist so konzipiert , mit anderen Werkzeugen wie in Sorge verwendet werden epkg, auto-compileund Magit. Im Gegenteil, es straight.elist eigenständig und bietet alles, was Sie benötigen, und erfordert nur wenig bis gar keine zusätzliche Konfiguration. Außerdem verwendet Borg Git-Submodule, deren Schnittstelle einige Ecken und Kanten aufweist, während straight.elunabhängig verwaltete Git-Repositorys verwendet werden, um zusätzliche Flexibilität und Leistung zu erzielen.
  • Es gibt auch den manuellen Ansatz, den ich jedoch nicht empfehle. Nach den ersten Monaten hätten Sie Borg neu erfunden. Dann hätten Sie sich nach ein paar Monaten neu erfunden straight.el. Sie werden jedoch viel über die Paketverwaltung lernen;)

4

Obwohl es Vor- und Nachteile gibt, denke ich, dass el-get trotz der starken Meinung von @lunaryon (auch rejeep) immer noch relevant ist.

Ich habe für eine Weile raw package.el mit use-package verwendet (2 bis 3 Jahre), dann zu el-get und dann zu Cask gewechselt . Ich bin vor ein paar Tagen nach El-Get zurückgekehrt. Vor package.el habe ich wie viele andere Add-Ons manuell verarbeitet.

Warum bin ich zurück zu el-get gegangen ? Ich bin auf etwas komisches von Cask gestoßen, weil es kein Git-Repo ist (ein Github-Paket von mir, das nicht in MELPA enthalten ist), während dieses Paket tatsächlich Git verwendet ... Ich habe mich nicht darum gekümmert, ein Ticket zu erstellen, sondern nur mein altes gezogen el-get config und ich war in kürzester Zeit gut zu gehen.

Einige Dinge, die ich an el-get mag :

  • Es unterstützt mehrere Fetchers, nicht nur Git.
  • Es enthält genügend vordefinierte Rezepte
  • Schneller als Cask beim Start.
  • und ja @lunaryorn, das Wiki ist kein Ort zum Verteilen von Code, trotzdem möchte ich kein Github-Repo erstellen, wenn es keinen Klon auf emacsmirror (Github) gibt.
  • Unabhängig, mit Cask benötigen Sie eine externe Installation. Ich verwende eine einzelne Init-Datei (keine modulare Konfiguration) mit Allout-Modus , um durch Abschnitte zu navigieren.
  • Aus Anwendersicht ist el-get einfach genug.

Hinweis: Ich verwende Emacs Git HEAD unter OSX und Linux.


Es tut mir leid, dass Sie Probleme mit Cask hatten, aber ich glaube nicht, dass Ihre persönlichen Probleme und Ihre offensichtliche Frustration mit Cask für diese Frage relevant sind. Insbesondere ist Cask ein Frontend für ELPA mit einem sehr engen Anwendungsbereich (hauptsächlich Paketentwicklung). Während Sie es auch für die Paketverwaltung verwenden können, ist es konzeptionell rechtwinklig zu el-get.
Lunaryorn

Mit anderen Worten, Cask ersetzt el-get nicht und hat auch nicht das Ziel, dies zu tun. Es hat überhaupt nichts zu tun. ELPA ersetzt el-get. Die beste Wahl für Git-basierte Installationen ist nicht mehr el-get, es ist QUELPA, und wie ich in meiner Antwort sagte, ist das ein triftiger Grund, QUELPA zu verwenden.
Lunaryorn

1
Ich stimme dem engen Umfang von Cask zu, verstehen Sie mich nicht falsch. Trotz meiner "Probleme" mit Cask benutze ich es immer noch auf einigen Linux-Rechnern. Ich habe auch keine "git-only" -Pakete, einige davon sind in Mercurial- oder anderen Versionskontrollsystemen. Ich verwende auch Pakete von anderen Leuten, die wahrscheinlich niemals in MELPA oder einem Git-Repository sein werden. Mein einziger Punkt ist, dass el-get immer noch in Ordnung ist, wenn MELPA nicht alle Pakete enthält, die von jemandem benötigt werden. Obwohl mir QUELPA bewusst ist, ist el-get gut genug für mich.
rimero

Sehen Sie, und und mein Punkt ist, dass el-get heutzutage nicht mehr in Ordnung ist, da es das integrierte Abhängigkeitsmanagement von ELPA und Emacs umgeht und das Risiko von Beschädigungen und doppelten Paketinstallationen birgt. QUELPA bietet die gleichen Funktionen wie el-get, weist jedoch diesen Fehler nicht auf. Es ist heutzutage einfach besser.
Lunaryorn

@rimero Ich hatte genau die gleiche Erfahrung. Außerdem habe ich vor ein paar Tagen Quelpa ausprobiert und musste es zumindest vorerst fallen lassen. El-get scheint immer noch flexibler, leistungsfähiger und insgesamt schneller zu sein, zumindest für meinen Anwendungsfall. Ich glaube, dass sie zwei ganz unterschiedliche Perspektiven einnehmen, es kann also auch davon abhängen, welche Art von Emacs-Benutzer man ist. Es wäre ratsam, beides zu versuchen, bevor Sie sich auf das eine oder andere festlegen.
gsl

1

Vielleicht möchten Sie einen Blick darauf werfen paradox. Es ist kein weiterer Paketmanager, sondern ein ordentliches Frontend für package.el. Wenn Sie beispielsweise Pakete aktualisieren, werden Sie gefragt, ob Sie sie installieren und die alten in einem Schritt löschen möchten.

Wenn Sie es verwenden, möchten Sie wahrscheinlich zu Satz paradox-execute-asynchronouslyzu tin Ihrer init - Datei.

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.