Was erwarten Sie von einem Paketmanager für Emacs? [geschlossen]

72

Obwohl mehrere tausend Emacs Lisp-Bibliotheken existieren, hatte GNU Emacs bis Version 24.1 keinen (internen) Paketmanager.

Ich denke, dass die meisten Benutzer zustimmen würden, dass es derzeit ziemlich unpraktisch ist, Emacs Lisp-Bibliotheken zu finden, zu installieren und insbesondere auf dem neuesten Stand zu halten.

Seiten, die das Leben ein bisschen einfacher machen

Für Versionen von Emacs älter als 24.1:

  • Emacs Lisp List - Problem: Ich sehe Tote (Links).
  • Emacswiki - Problem: Kann Spuren von Nüssen enthalten (Schadcode).
  • Emacsmirror - Das Paket-Repository, an dem ich arbeite. Problem: Noch kein Paketmanager unterstützt es nativ.

Einige Paketmanager

Es ist nicht so, dass es noch niemand versucht hat. (Einige davon existierten nicht, als diese Frage gestellt wurde.)


UPDATE - package.el ist in GNU Emacs ab Version 24.1 enthalten


Das Paket wurde in den Emacs-Kofferraum aufgenommen. epkg ist noch nicht fertig und auch momentan nicht verfügbar. Zumindest Install-Elisp, Plugin und Use-Package scheinen nicht mehr aktiv gewartet zu werden.

Ich habe ein Git- Repository erstellt, das alle diese Paketmanager als Submodule enthält.

Einige Dienstprogramme, die nützlich sein könnten

Paketmanager könnten diese Dienstprogramme verwenden und / oder sie könnten verwendet werden, um einen Spiegel von Paketen zu verwalten.

Diskussionen zum Thema

Die Frage (endlich)

Also - ich würde gerne von Ihnen wissen, was Sie in einem Paketmanager für Emacs für wichtig / unwichtig / ergänzend usw. halten.

Einige Ideen

  1. Viele Pakete (der Emacsmirror bietet die größte verfügbare Sammlung von Paketen, aber es gibt noch keine explizite Unterstützung in einem Paketmanager).
  2. Nur getestete Pakete.
  3. Unterstützung für mehr als ein Paketarchiv (sodass Benutzer zwischen vielen / getesteten Paketen wählen können).
  4. Die Abhängigkeit wird nur basierend auf den erforderlichen Funktionen berechnet.
  5. Abhängigkeiten berücksichtigen bestimmte Versionen.
  6. Verwenden Sie nur Versionen, die vorgelagert veröffentlicht wurden.
  7. Verwenden Sie Versionen von Versionskontrollsystemen, falls verfügbar.
  8. Pakete sind kategorisiert.
  9. Pakete können deinstalliert und aktualisiert werden, nicht nur installiert.
  10. Unterstützung beim Erstellen einer Verzweigung der Upstream-Version von Paketen.
  11. Unterstützen Sie das Veröffentlichen dieser Gabeln.
  12. Unterstützung bei der Auswahl einer Gabel.
  13. Nach der Installation werden Pakete aktiviert.
  14. Generieren Sie Autoload-Dateien.
  15. Integration mit Emacswiki (siehe wikirel.el).
  16. Benutzer können Pakete markieren, kommentieren usw. und diese Informationen teilen.
  17. Nur FSF-zugewiesene / GPL / FOSS-Software oder keine Lizenz.
  18. Paketmanager sollte integriert werden, um mit Emacs verteilt zu werden.
  19. Unterstützung für die einfache Kontaktaufnahme mit dem Autor.
  20. Viele Metadaten.
  21. Schlagen Sie Alternativen vor, bevor Sie ein bestimmtes Paket installieren.

Ich hoffe auf solche Antworten

  • Hinweise auf weitere Implementierungen, Diskussionen etc.
  • Ausführliche Beschreibungen einer Reihe von Funktionen, die Ihren idealen Paketmanager ausmachen.
  • Beschreibungen eines bestimmten gewünschten / unerwünschten Merkmals. Fühlen Sie sich frei, meine Ideen von oben zu erläutern.
  • Überrasch mich.
Tarsius
quelle
Ich muss darüber nachdenken, aber das wäre, richtig gemacht, das Beste, was es je gab. +1.
JasonFruit
Auch einige Diskussionen unter emacswiki.org/emacs/RationalElispPackaging
Michael Paulukonis
2
Da dies eine Diskussionsfrage ohne wirklich richtige Antwort ist, sollte dies als Community-Wiki markiert werden. Gute Frage, es ist in meiner Favoritenliste.
A. Levy
Ein weiterer vorhandener Paketmanager ist die automatische Installation: emacswiki.org/emacs/AutoInstall. Er kann alle .el-Dateien von emacswiki installieren, aber auch von einem beliebigen URL-Beispiel installieren: (automatische Installation von der URL " github.com/nex3/haml/ raw / master / extra / sass-mode.el " )
antonj

Antworten:

28

Automatische Veröffentlichung über die Versionskontrolle

Ich würde gerne einen Standard-, zentralen und einzelnen Emacs-Paketmanager sehen. Im Moment würde ich mein Geld in ELPA stecken , aber es ist noch ein langer Weg.

Das Größte, was einem Emacs-Paketmanager helfen würde, wäre, das Veröffentlichen von Paketen ganz einfach zu machen. Meiner Meinung nach würde ich dies gerne in Kombination mit einem Versionskontrollsystem wie git auf einer zentralen gehosteten Plattform wie GitHub sehen - etwas, das es Autoren leicht machen würde, ihre Pakete zu veröffentlichen, und es anderen leicht machen würde zurück beitragen.

Ähnlich wie GitHub (früher) das Veröffentlichen von RubyGems vereinfacht, würde ich gerne etwas Ähnliches in einem Emacs-Paketmanager sehen. Kennzeichnen Sie Ihr Repository beispielsweise mit "vX.YZ" und stellen Sie Ihre elisp-Güte automatisch allen zur Verfügung.

Der zusätzliche Vorteil der Verwendung eines beliebten Backends wie GitHub besteht darin, dass Sie sofort viel Aufmerksamkeit erhalten, was zum Erfolg des Backends beitragen sollte.

Ryan McGeary
quelle
Ich liebe dich :-) Während ich den anderen Kommentar bisher auch abgestimmt habe; Was Sie vorschlagen, entspricht sehr genau dem, woran ich arbeite. Ich werde git verwenden, ich werde github verwenden, ich möchte automatisch hinzufügen (damit ich es nicht manuell tun muss. Ich denke jedoch, dass es Platz für mehr als eine Uhr gibt.
tarsius
Wenn das, was Sie zusammenstellen, zur Rechnung passt, würde ich gerne einen Blog-Beitrag darüber auf emacsblog.org schreiben. Ich würde gerne einen guten Standard-Emacs-Paketmanager sehen. Ich denke, es würde der Community eine Menge helfen.
Ryan McGeary
Ich möchte nur hinzufügen, dass PluginsKit genau dies tut: github.com/Guille/PluginsKit Es wird vom MooTools-Projekt verwendet. mootools.net/forge
Henrik Hansen
@henrikh: Ich verstehe nicht, was PluginKit macht - was bedeutet "Plugins-Repository für Open-Source-Projekte, die mit GitHub verknüpft sind"?
Tarsius
Es sieht so aus, als hätte GitHub aufgehört, Edelsteine ​​zu bauen. Gems.github.com
Sridhar Ratnakumar
32

Ich lerne immer noch Emacs, daher hatte ich keine Gelegenheit, mich mit Paketmanagern zu befassen. Eine großartige Funktion wäre jedoch, den Benutzer darüber zu informieren, dass das Paket verfügbar ist, wenn er versucht, es zu verwenden, es sich jedoch nicht auf seinem System befindet. Zum Beispiel wollte ich eine PHP-Datei einmal auf einem Server bearbeiten und habe es versucht

M-x php-mode

und Emacs war alles wie

M-x php-mode [no match]

wann es hätte sein sollen

php-mode available from ftp.gnu.org. install? (y/n)

und dann hätte es für mich den PHP-Modus installiert und geladen. Das hätte meinen Tag genau dort gemacht.

Kyle Cronin
quelle
3
Wenn ich könnte, nochmal +1 für das beste Drehbuch.
JasonFruit
1
Schön, ja; aber praktisch? Würden Sie dies nur für Moduseinstellungen erwarten? Oder für irgendeinen Befehl? Sollte Sie w3m-browse-url AUCH auf die Installation von w3m aufmerksam machen? In diesem Fall muss die Uhr alle möglichen interaktiven Funktionen in allen verfügbaren Paketen kennen oder in der Lage sein, auf einer unbekannten Funktion interaktiv zu surfen.
Michael Paulukonis
Dieses Beispiel ist ein "Geben", da dem Paketnamen ein Präfix vorangestellt ist, aber nicht alle Pakete so gut spielen.
Michael Paulukonis
5
Ich denke, der Dialog sollte lauten: PHP-Modus verfügbar von ftp.gnu.org. Installieren? (
j
1
Nachdem ich diese Antwort gelesen habe, wünschte ich, ich könnte 'Lieblings'-Antworten. :)
ocodo
12

Was ich am meisten erwarte, ist, dass alles Nützliche darauf ist und gut funktioniert. Dies erfordert, dass Sie (oder ein Team von Betreuern) alles aggressiv verpacken und alles tun, was dazu gehört - E-Mail an jeden Autor eines nützlichen Pakets und so weiter.

Der Grund, warum Debian (und seine Derivate: Ubuntu usw.) so gut ist, ist beispielsweise, dass Sie Ihr System problemlos verwenden können, ohne jemals etwas außerhalb der Repositorys installieren zu müssen, und dass alles darauf gründlich getestet wird. Die tatsächlichen Funktionen des Paketmanagers sind wichtig, aber sekundär zu den verwalteten Paketen selbst.

ShreevatsaR
quelle
Ich stimme Ihnen gleichzeitig zu und stimme Ihnen nicht zu. Menschen können einen Motivationsschub haben, solche Ziele aggressiv mit Eifer verfolgen, aber schließlich brennen sie einfach aus. Sie würden eine Kultur brauchen, in der es für viele Menschen einfach ist, einen Beitrag zu leisten, nur ein kleines, aber sehr nützliches Stück. Dafür benötigen Sie gute Werkzeuge. Gute Werkzeuge machen den Beitrag in den wichtigsten Dimensionen am wenigsten umständlich.
Daniel Dinnyes
10

Einfache Konfigurationssynchronisierung : Ich verwende Emacs wie viele andere Benutzer auf vielen verschiedenen Computern und Servern, von denen einige meine eigenen sind und andere nicht. Es wäre erstaunlich, wenn der Paketmanager eine Art Datei hätte, die ich von einem Computer auf einen anderen übertragen könnte. Dann brachte der Paketmanager auf dem letzteren Computer meinen Emacs in den Zustand, in dem er mir gefällt - alle installierten Pakete und Konfigurationen. In Kombination mit der Möglichkeit, entweder standortweit (wenn man über Root-Berechtigungen verfügt) oder als einzelner Benutzer problemlos zu installieren, konnte ich Emacsen überall synchronisieren.

A. Rex
quelle
2
Wenn Sie einen Paketmanager hatten, der alle erforderlichen Pakete enthielt, können Sie dies erreichen, indem Sie einfach elisp schreiben, das Ihre Pakete automatisch nach Name und optionaler Version installiert. Ich glaube nicht, dass der Paketmanager etwas Besonderes tun müsste.
Ryan McGeary
2
Kann der Paketmanager zumindest meine Pakete sichern? Ich möchte kein Elisp wie "(pkg-install this) (pkg-install that)" schreiben, wenn der Paketmanager weiß, was ich installiert habe. Ja, der Paketmanager würde nichts Besonderes benötigen: nur die Möglichkeit, die installierten Daten zu sichern / zurückzulesen.
A. Rex
Gotcha, verstanden. Ich nehme an, dass dies von einem Paketmanager impliziert wird. Ich habe keinen Paketmanager gesehen, der die installierten Pakete nicht auflisten konnte.
Ryan McGeary
7

Ich bin mir fast sicher, dass die beste Lösung darin besteht, mehr Pakete an ELPA zu senden und package.el um Unterstützung aus mehreren Quellen zu erweitern. Die Emacs-Betreuer haben angekündigt, in Erwägung zu ziehen, package.el in Version 24 aufzunehmen, sofern dies standardmäßig auf ein FSF-Repository verweist.

Natürlich muss die Einreichung auch ein automatisierter Prozess sein. Die derzeitige Methode zum Versenden des ELPA-Betreuers funktioniert nur in geringem Umfang.


quelle
6

Unabhängig davon, wie dies gemacht wird, ist meiner Meinung nach das Wichtigste, dass es trivial sein sollte, Pakete an das Repository zu senden. Gleichzeitig möchten wir nicht, dass diese Pakete sofort verfügbar sind, um sich vor schädlichem Code (und aufgrund von Lizenzproblemen) zu schützen. Es sei denn, es gibt ein "Vertrauens" -System, das auf Kryptosignaturen basiert.

Auch nützlich:

  • "Metapakete", um mehrere Pakete gleichzeitig zu installieren.
  • Auf die gleiche Weise sollten wir in der Lage sein, eine Reihe von Elisp-Dateien zu installieren, um die Wartbarkeit zu gewährleisten
  • "Defekte" Pakete dürfen den Emacs-Start nicht stören. Das ist einfach und ich habe es in meinen eigenen .emacs implementiert
  • Möglichkeit, andere Dateien als Skripte zu installieren. Dies wird oft übersehen, ist aber sehr nützlich. Sie können beispielsweise Bilder für Symbole, Symbolleisten usw. versenden.
  • Versionierung: Paket X erfordert Paket Y> 1.0
  • Testen: Führen Sie grundlegende Überprüfungen der Integrität durch und testen Sie auf Konflikte (Tastenkombinationen, Neudefinitionen von Funktionen, Funktionen, die voraussichtlich vorhanden sind, aber nicht vorhanden sind usw.).
  • BUG TRACKING : Ich kann die Wichtigkeit nicht genug betonen. Ein zentraler Ort zum Melden von Paketfehlern (und zum Verfolgen dieser) ist äußerst wichtig, um die Qualität der Pakete sicherzustellen.

Eine Art komprimiertes Archiv scheint am besten geeignet zu sein, um einige der oben genannten Aufgaben auszuführen.


Bisher scheint eine stark verbesserte ELPA der richtige Weg zu sein.

Stephen Eilert
quelle
3

Ich habe einmal einige Zeit damit verbracht, einen kleinen Paketmanager für Emacs zu schreiben.

http://gmarceau.qc.ca/plugin.el

Ich schrieb:

Plugin ist mein Versuch, einen Paketmanager für Emacs zu erstellen. Das Plugin lädt automatisch Emacs-Erweiterungen herunter, entpackt sie in ein Verzeichnis, fügt dieses Verzeichnis dem Ladepfad hinzu, generiert Anmerkungen zum automatischen Laden und ändert Ihre Dot-Emacs-Datei. Die Annotationen zum automatischen Laden sind ein wenig bekanntes Merkmal von Emacs. Sobald sie generiert wurden, werden Emacs-Erweiterungen schnell und schrittweise geladen. Dies ist sehr hilfreich, wenn Sie so viele Erweiterungen installiert haben wie ich.

Sie benötigen zwei Bibliotheksdateien, um es auszuführen, loop-constructs.el und record.el

Guillaume Marceau
quelle
3

Ich denke, die Hacker für das iPhone sind dem, was ich will, ziemlich nahe gekommen, ebenso wie Ubuntus "apt".

Ich möchte in der Lage sein:

  • hinzufügen
  • entfernen (nur Paket)
  • Benutzereinstellungen entfernen
  • Dokumentation anzeigen
  • Upgrade (nach dem Lesen des Änderungsprotokolls)
  • neues Archiv hinzufügen (auch bekannt als Repository hinzufügen)
  • siehe Abhängigkeiten
  • siehe Version
  • Suche nach Name, Schlüsselwort
  • Durchsuchen nach (Datum hinzugefügt, Änderungsdatum, Name)
  • Speichern Sie alle installierten Pakete und Einstellungen
  • Laden Sie eine Reihe von Paketen und Einstellungen

Ich hätte gerne eine Reihe von Dingen, die alle gut funktionieren und die empfohlene Art sind, alles zu tun. Dann ein globales Set, in dem alles funktioniert. Dann die Möglichkeit für jeden, sein eigenes Archiv zu hosten.

Es wäre schön, wenn dies alles in git / svn / Whatever eingebunden wäre, damit Sie alte Versionen installieren könnten. Machen Sie Ihre eigenen Patches, indem Sie etc etc etc ....

James Brooks
quelle
2

Neben den oben genannten erwarte ich so etwas wie Debian und andere Repositories - einen Satz stabiler, experimenteller, ungetesteter Pakete. Möglichkeit, eigene Repositorys hinzuzufügen - Ich verwende viele Pakete direkt aus VCS, daher kann es nützlich sein, eigene Pakete zu erstellen

Alex Ott
quelle
2

Ich denke, dass der Paketmanager viel Inspiration von Rubygems nehmen sollte . Ich denke auch, dass es eine Seite wie Gemcutter geben sollte .

Ein zentrales Repository könnte auch nett sein (wie Emacsmirror ). Dies ist jedoch möglicherweise nicht erforderlich, wenn eine Site wie Gemcutter vorhanden ist, die alle Pakete sammelt.

Ich denke, diese Dinge sind wichtig, damit dies funktioniert.

  • Eine zentrale Lage, die alle Pakete sammelt
  • Einfache Pakete hinzuzufügen
  • Einfach zu wartende Pakete
  • Einfach zu anderen Paketen beizutragen
  • Einfach zu installierende, deinstallierende und aktualisierte Pakete
  • Möglichkeit, Paketabhängigkeiten hinzuzufügen
  • Gemeinsame Struktur für alle Pakete

Ein Paketmanager wie Rubygems mit einer Site wie Gemcutter und einem zentralen Repository wie Emacsmirror (vorzugsweise auf Github wegen seiner sozialen Codierung) würde Emacs wirklich gut tun.

Alles in allem denke ich, dass Rails und der Umgang von Rails mit Edelsteinen viel Inspiration bringen sollten.

rejeep
quelle
Ja, der Emacsmirror - daran arbeite ich gerade :-) Und jetzt werde ich mich darauf konzentrieren, eigentlich kein Paketmanager. Ich generiere jedoch Metadaten, die von einem Paketmanager verwendet werden können. Zum Beispiel (: Zusammenfassung "Einen Spiegel von Emacs Lisp-Paketen pflegen": erstellt "20081202": aktualisiert "20091206": Lizenz "GPL-3": Autoren (("Jonas Bernoulli". "[email protected]")): Betreuer ("Jonas Bernoulli". "[email protected]"): bereitgestellt (Ulme): erforderlich ((("elx" elx) ("emacs" cl))): Schlüsselwörter ("Bibliotheken"): Homepage " github. com / tarsius / elm " )
tarsius
Soweit ich weiß, müssen Edelsteine ​​vom Autor eines Pakets geschrieben werden. Für emacs macht tromey.com/elpa etwas Ähnliches. Es gibt aber nicht viele Pakete. Meistens, weil Elisper faul sind und sich nicht die Mühe machen, die erforderliche Paketbeschreibung zu schreiben und sie an Elpa zu übergeben. Es gibt auch viele alte, aber immer noch potenziell nützliche Pakete, bei denen der Autor nicht wirklich die Mühe hat, die pkg-Beschreibung zu schreiben. Mein Ansatz ist es also, die Daten automatisch aus der Bibliothek selbst zu generieren. Aber viele Autoren machen sich nicht einmal die Mühe, die Header-Konventionen zu befolgen, so dass noch viel Arbeit in
tarsius
Umgang mit durcheinandergebrachten Headern, aber ich fange an, irgendwohin zu gelangen. Ich hoffe, dass der Emacsmirror, sobald er von den Menschen genommen wird, den Nutzen sieht, der sich aus den Header-Konventionen und der Verwendung eines modernen VC ergibt. Und hören Sie vor allem auf, Dateien wie foo-mode-mypersonalversion.el im emacswiki abzulegen, ohne die Änderungen zu beschreiben oder jemals in vorgelagerte Änderungen zu integrieren.
Tarsius
Sie haben Recht damit, dass die Leute mit ihren Emacs-Skripten faul sind. Das Befolgen des oben vorgeschlagenen Ansatzes könnte jedoch weiterhin funktionieren. Einige Pakete werden vom Betreuer auf dem neuesten Stand sein. Es gibt jedoch viele Emacs-Skripte, die jemand gemacht hat, sich aber nicht mehr darum kümmert. Dies könnte gelöst werden, indem jedem dieser Projekte ein "Gem-Betreuer" zugewiesen wird.
Rejeep
Wenn also jemand ein Paket findet, das niemand mehr verwaltet, sollte diese Person es einfach an der zentralen Stelle hinzufügen und der neue Verwalter sein können. Dieser Ansatz würde die Pakete hoffentlich aktueller halten. Und in diesem Fall denke ich, dass sich die Quelle an einem zentralen Ort wie Emacsmirror befinden sollte. Denn dann könnten die Leute das Projekt abspalten, Verbesserungen vornehmen und eine Pull-Anfrage stellen. Dann könnte der Betreuer die Änderungen einfach zusammenführen. Ich denke, dies wäre wahrscheinlich ein besserer Ansatz als das Parsen von Headern.
Rejeep
2

Ich weiß nicht, wie frisch diese Frage ist ...
aber das Modell, das ich sehen möchte, ist CPAN. Ich kenne Rubygems auch nicht, aber es klingt ähnlich wie CPAN.

CPAN ist ein Perl-Archiv + Bibliotheksverwaltungssystem. Wenn ich ein Perl-Programm schreiben muss, das ... FTP oder SOAP oder JSON oder XML oder ZIP oder ... usw. erfordert, kann ich den CPAN-Paketmanager ausführen, das erforderliche Paket zum Herunterladen auswählen, die Abhängigkeiten anzeigen und überprüfen. dann installiere alles. CPAN wird gespiegelt .. "überall".

CPAN funktioniert wunderbar für meine Zwecke, und etwas Ähnliches für Emacs wäre schön zu haben. Es unterstützt auch das Erstellen von C / C ++ - Code bei Bedarf.

Das würde ich gerne in Emacs sehen.

Einige weitere Kommentare zu den Anforderungen.

  • expliziter Download von Paketen. Keine automatische Installation. Keine unsichtbaren Downloads. Ich möchte nach neuen Bibliotheken oder neuen Funktionen fragen.
  • Ich sollte in der Lage sein, den Namen / die Version / den Zeitstempel der installierten Pakete aufzulisten.
  • Wenn mein Freund mir seine Liste gibt, sollte ich in der Lage sein, seinen Emacs-Status gegen meinen zu unterscheiden.
  • Funktion zum Überprüfen auf Aktualisierungen. Welche Updates sind verfügbar? Was reparieren sie?
  • Überprüfung, Überprüfung und Download der Abhängigkeit. Wenn ich den csharp-Modus installiere und es v5.0.28 des cc-Modus erfordert, sollte es mir bestätigen, dass ich auch den cc-Modus herunterladen muss.
  • Es sollte eine Art Community-Ranking dieser Pakete geben, wie das Ranking von Torrents auf isohunt. Ich möchte sehen, ob ein Paket 3 Upvotes oder 3000 hat.
  • "Transaktions" -Verhalten. Wenn eine Installation boomt, muss sie sich in einem Zustand mit dem zuletzt bekannten Zustand abwickeln.
  • Failafes. Wenn ich benutzerdefinierte Mods in linum.el eingefügt habe, sollte es sich weigern, eine neue Version über meine Änderungen zu installieren, es sei denn, ich erlaube dies ausdrücklich. Es sollte mich warnen, bevor ich überhaupt anfange. Tun Sie dies mit Prüfsummen / MD5 über der vorhandenen Installation.
  • Sie haben die Möglichkeit, einige Pakete aus komprimierten Archiven wie Zip-Dateien auszuführen. Ich habe also nie Zweifel, dass ich keines der eingebetteten Elisp aktualisiert habe.
  • Möglichkeit, gespiegelte Hosts für die Paketverteilung zu verwenden.
  • Alle diese Funktionen sollten über Mx Library-Management oder so zugänglich sein.

Schließlich wäre es schön, eine Möglichkeit zu haben, Funktionsbibliotheken zu trennen oder zu organisieren. Hierarchische Namespaces. Der flache Namespace von Emacs ist sehr veraltet. Dies ist unabhängig, ergänzt jedoch die Kernfunktion des Paketmanagements. Ich bin kein Lisp-Guru, also weiß ich nicht, wie schwer das sein würde. Vielleicht gibt es schon einen Weg, dies zu tun.

Cheeso
quelle
Die Frage ist immer noch relevant: (1) Die Emacs-Betreuer sind bereit, package.el in 24 oder so aufzunehmen, und (2) ich habe mit einem Spiegel von package begonnen: emacsmirror.org .
Tarsius
1

Paketmanager bieten nichts an, was ich für Elisp-Pakete mit einer Datei mit einfachen Abhängigkeiten schätze: Das Hinzufügen und Löschen von site-lisphat nie Probleme verursacht. Es sind Pakete, die von externen Programmen abhängen (z. B. ispell), Pakete mit mehreren Dateien (z. B. auctex, org-mode), die schwierig sein können. Ich kann mir kein einzelnes Elisp-Paket mit nicht trivialen Abhängigkeiten vorstellen.

Für diese, kurz vor einem Paketmanager, möchte ich, dass die elisp-Pakete von emacs Testsuiten erwerben, die massenhaft ausgeführt werden können und nützliche Informationen für den Fall von Abhängigkeitsfehlern liefern.

Charles Stewart
quelle
Das Einfügen einer Bibliothek in Site-Lisp ist einfach, vorausgesetzt, die Bibliothek kann tatsächlich gefunden werden :)
Tarsius
1
@ Tarsius: Ist das jemals ein Problem?
Charles Stewart
Ja, und ich würde es wissen. Während ich 1000 Bibliotheken sammeln konnte, mussten mehrere Hundert auf die Liste "Kann nicht finden" gesetzt werden. Übrigens extrahiere ich Metadaten einschließlich Abhängigkeitslisten. Selbst wenn Sie sich nicht für ein zentrales Repository interessieren, bietet der Spiegel dennoch einen Mehrwert für Sie - ich hoffe.
Tarsius
Selbst Spackages mit sogenannten einfachen Abhängigkeiten können Probleme verursachen, wenn die Abhängigkeiten unsichtbar und nicht verfolgt sind. Hier ist eine ziemlich einfache Abhängigkeit: Der csharp-Modus hängt von einer bestimmten Version des cc-Modus mit einem bestimmten Fix ab. Diese Abhängigkeit wird jedoch nicht formal verfolgt. Es wird nur in Wiki-Artikeln und Blog-Posts erwähnt. Viele Leute installieren den csharp-Modus, aber nicht die erforderliche Version des cc-Modus, und alle haben den gleichen vermeidbaren Fehler.
Cheeso
@Cheeso: Gutes Beispiel. Es gibt eine Art Versionierung in GNU Emacs durch die Versionszeilenkonvention für .el-Header von Paketen: Ich denke, dies könnte hier verwendet werden.
Charles Stewart