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.)
- automatische Installation
- borg.el - Assimilieren von Emacs-Paketen mithilfe von Git-Submodulen.
- el-get.el - Unterstützt viele Quellen.
- elinstall.el
- epackage aka DELPS - Debian-Verpackungskonzepte für Emacs Lisp-Pakete.
- epkg.el - Dies ist jetzt nur ein Tool zum Durchsuchen des Emacsmirror.
- install.el
- install-elisp.el
- jem-pkg.el
- package.el - ELPA. Scheint, als würde es in Emacs 24 enthalten sein.
UPDATE - package.el ist in GNU Emacs ab Version 24.1 enthalten
- pases.el
- pelm - Befehlszeileninstallationsprogramm; mit php.
- plugin.el
- Straight.el - Neu und experimentell, hat die Version 1.0 noch nicht erreicht.
- use-package.el
- XEmacs-Paketmanager
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.
- date-calc.el - Routinen zur Datumsberechnung und -analyse .
- ell.el - Durchsuchen Sie die Emacs Lisp-Liste.
- elm.el , elx.el , xpkg.el - Wird zur Wartung des Emacsmirror verwendet .
- genauto.el - Hilft beim Generieren von Autoloads für Ihre Elisp-Pakete.
- inversion.el - Erfordert bestimmte Paketversionen.
- loadhist.el, lib-require.el, elisp-abhäng.el - Befehle zum Auflisten der Abhängigkeiten der Emacs Lisp-Bibliothek.
- project-root.el - Definieren Sie einen Projektstamm und ergreifen Sie darauf basierende Aktionen.
- strptime.el - Teilweise Implementierung der POSIX-Analyse von Datum und Uhrzeit.
- wikirel.el - Besuchen Sie relevante Seiten im Emacs-Wiki.
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
- Viele Pakete (der Emacsmirror bietet die größte verfügbare Sammlung von Paketen, aber es gibt noch keine explizite Unterstützung in einem Paketmanager).
- Nur getestete Pakete.
- Unterstützung für mehr als ein Paketarchiv (sodass Benutzer zwischen vielen / getesteten Paketen wählen können).
- Die Abhängigkeit wird nur basierend auf den erforderlichen Funktionen berechnet.
- Abhängigkeiten berücksichtigen bestimmte Versionen.
- Verwenden Sie nur Versionen, die vorgelagert veröffentlicht wurden.
- Verwenden Sie Versionen von Versionskontrollsystemen, falls verfügbar.
- Pakete sind kategorisiert.
- Pakete können deinstalliert und aktualisiert werden, nicht nur installiert.
- Unterstützung beim Erstellen einer Verzweigung der Upstream-Version von Paketen.
- Unterstützen Sie das Veröffentlichen dieser Gabeln.
- Unterstützung bei der Auswahl einer Gabel.
- Nach der Installation werden Pakete aktiviert.
- Generieren Sie Autoload-Dateien.
- Integration mit Emacswiki (siehe wikirel.el).
- Benutzer können Pakete markieren, kommentieren usw. und diese Informationen teilen.
- Nur FSF-zugewiesene / GPL / FOSS-Software oder keine Lizenz.
- Paketmanager sollte integriert werden, um mit Emacs verteilt zu werden.
- Unterstützung für die einfache Kontaktaufnahme mit dem Autor.
- Viele Metadaten.
- 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.
quelle
Antworten:
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.
quelle
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
und Emacs war alles wie
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.
quelle
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.
quelle
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.
quelle
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
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:
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.
quelle
Ich habe einmal einige Zeit damit verbracht, einen kleinen Paketmanager für Emacs zu schreiben.
http://gmarceau.qc.ca/plugin.el
Ich schrieb:
Sie benötigen zwei Bibliotheksdateien, um es auszuführen, loop-constructs.el und record.el
quelle
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:
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 ....
quelle
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
quelle
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.
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.
quelle
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.
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.
quelle
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-lisp
hat 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.
quelle