Was erwarten Sie von einem Paket-manager für Emacs?
Obwohl mehrere tausend Emacs-Lisp-Bibliotheken existieren, GNU Emacs, bis die version 24.1 nicht über eine (interne) Paket-manager.
Ich denke, dass die meisten Benutzer würden Zustimmen, dass es momentan ziemlich umständlich zu finden, zu installieren und vor allem bleiben Sie up-to-date-Emacs-Lisp-Bibliotheken.
Seiten, machen das Leben ein bisschen einfacher
Für Versionen von Emacs, die älter als 24.1:
- Emacs-Lisp-Liste - Problem: ich sehe tote Menschen (links).
- Emacswiki - Problem: Kann Spuren von Nüssen (bösartiger code).
- Emacsmirror - Das Paket-repository an dem ich arbeite. Problem: Kein Paket-manager unterstützt es nativ noch.
Einige Paket-Manager
Es ist nicht so, dass niemand versucht hat noch. (Einige dieser nicht vorhanden ist, wenn diese Frage gestellt wurde.)
- auto-install
- borg.el - Assimilieren Emacs-Pakete mit dem Git Submodule.
- el-get.el - Unterstützt viele Quellen.
- elinstall.el
- epackage aka DELPS - Debian-paketier-Konzepte angewandt, um Emacs-Lisp-Pakete.
- epkg.el - Das ist jetzt nur ein Werkzeug zum surfen im Emacsmirror.
- installieren.el
- installieren-elisp.el
- jem-pkg.el
- Paket.el - ELPA. Wie es scheint, wird in Emacs 24.
UPDATE -- Paket.el ist enthalten in GNU Emacs ab version 24.1
- pas.el
- pelm - Command line installer; mit php.
- plugin.el
- gerade.el - Neue und experimentelle, noch nicht erreicht hat, release 1.0 noch nicht.
- use-Paket.el
- XEmacs-Paket-manager
Paket wurde in der Emacs-Stamm. epkg noch nicht fertig ist und auch derzeit nicht verfügbar. Installieren Sie mindestens-elisp -, plugin-und Paket scheinen nicht mehr aktiv gepflegt.
Habe ich einen git repository, die alle diese Paket-Manager als Submodule.
Einige Werkzeuge, die nützlich sein könnten,
Paket-Manager könnte diese Dienstprogramme verwenden, und/oder Sie können verwendet werden, um zu halten ein Spiegel der Pakete.
- date-calc.el - Date-Berechnung und-Analyse-Routinen.
- ell.el - Durchsuchen Sie die Emacs-Lisp-Liste.
- elm.el, elx.el, xpkg.el - Verwendet, um die Emacsmirror.
- genauto.el - Unterstützt das generieren autoloads für Ihre elisp-Pakete.
- die inversion.el - Erfordern spezielle Paket-Versionen.
- loadhist.el, lib-erfordert.el, elisp-abhängig sind.el - Befehle Liste Emacs Lisp-Bibliothek-Abhängigkeiten.
- Projekt-root.el - Definieren Sie ein Projekt-root, und Maßnahmen ergreifen, basierend auf ihn.
- strptime.el - Teilweise Implementierung der POSIX-Datum und Uhrzeit der Analyse.
- wikirel.el - Besuchen Sie die entsprechenden Seiten auf das Emacs-Wiki.
Diskussionen über das Thema auf der hand
Die Frage (endlich)
So, ich würde gerne von Euch wissen, was Ihr als wichtig/unwichtig/Ergänzende etc. in einem Paket-manager für Emacs.
Einige Ideen
- Viele Pakete (die Emacsmirror bietet das größte verfügbare Sammlung von Paketen, aber es gibt keine explizite Unterstützung in jedem Paket-manager noch nicht).
- Nur Pakete, die getestet wurden.
- Unterstützung für mehr als ein Paket-Archiv (damit die Menschen können wählen zwischen vielen/getestete Pakete).
- Abhängigkeit berechnet, basierend auf den geforderten Eigenschaften nur.
- Abhängigkeiten insbesondere die Versionen berücksichtigt werden.
- Verwenden Sie nur Versionen, die freigegeben wurden upstream.
- Versionen von version control systems, falls verfügbar.
- Pakete kategorisiert werden.
- Pakete werden deinstalliert und aktualisiert, nicht nur installiert ist.
- Unterstützen die Erstellung Gabel von der upstream-version von Paketen.
- Unterstützung die Veröffentlichung dieser Gabeln.
- Unterstützung der Auswahl einer Gabel.
- Nach der installation von Paketen aktiviert werden.
- Generieren autoload-Dateien.
- Integration mit Emacswiki (siehe wikirel.el).
- Benutzer können Tags, Kommentar etc. Pakete und teilen Sie diese Informationen.
- Nur FSF-Zuordnung/GPL/FOSS software oder kümmern sich nicht um die Lizenz.
- Paket manager integriert werden sollten verteilt werden, die mit Emacs.
- - Unterstützung für die einfache Kontaktaufnahme mit dem Autor.
- Viele Metadaten.
- Alternativen vorschlagen, vor der Installation eines bestimmten Pakets.
Ich bin der Hoffnung, für diese Art von Antworten
- Verweise auf weitere Implementierungen, Diskussionen etc.
- Lange Beschreibungen einer Reihe von Funktionen, die machen Sie Ihr ideal-Paket-manager.
- Beschreibungen eines bestimmten gewünschten/unerwünschten Funktion. Fühlen Sie sich frei, um näher auf meine Ideen von oben.
- Mich überraschen.
- Ich muss diese Gedanken geben, aber dieses, richtig ausgeführt, wäre die Beste Sache Überhaupt. +1.
- Auch einige Diskussion unter emacswiki.org/emacs/RationalElispPackaging
- Da dies ist eine Diskussion zu Frage ohne eine wirkliche Antwort zu korrigieren, ich denke, dies sollte gekennzeichnet sein als " community-wiki. Gute Frage, obwohl, es ist in meiner Favoriten-Liste.
- Ein anderes vorhandenes package manager auto-install: emacswiki.org/emacs/AutoInstall es können alle installieren .el-Dateien aus emacswiki aber auch die Installation von beliebigen url-Beispiel: (auto-install-from-url "github.com/nex3/haml/raw/master/extra/sass-mode.el")
Du musst angemeldet sein, um einen Kommentar abzugeben.
Automatische Veröffentlichung von version control
Ich würde gerne sehen, ein standard -, Mittel-und single Emacs-Paket-manager. Gerade jetzt, würde ich mein Geld auf ELPA, aber es ist noch ein langer Weg zu gehen.
Die größte Sache, die helfen würde, ein Emacs-Paket-manager, wäre es super trivial zu veröffentlichen-Pakete. Meiner Meinung nach, ich würde gerne sehen, dies in Kombination mit einem version control Systems wie git auf eine zentral gehosteten Plattform wie GitHub -- etwas, das wäre machen es einfach für die Autoren veröffentlichen Ihre Pakete und machen würde, es für andere leichter zu tragen zurück.
Ähnlich wie GitHub (früher) machen es einfach zu veröffentlichen RubyGems, ich würde gerne etwas ähnliches in einem Emacs-Paket-manager. Zum Beispiel, tag-repository mit "vX.Y.Z" und haben Ihre elisp-Güte automatisch allen zur Verfügung.
Den zusätzlichen Vorteil, über ein beliebtes backend, das wie GitHub, dass Sie würde sofort eine Menge der Exposition, die sollten dazu beitragen, den Erfolg.
Ich bin immer noch lernen, Emacs, so dass ich haven ' T hatte eine chance, zu schauen in der Paket-Manager, sondern ein tolles feature wäre, um den Benutzer zu informieren, dass das Paket verfügbar ist, wenn Sie versuchen, es zu benutzen, aber es ist nicht auf Ihrem system. Zum Beispiel wollte ich zum Bearbeiten einer PHP-Datei auf einem server einmal, und ich versuchte
und Emacs war alles wie
wenn es gewesen sein sollte, wie
und dann müsste es installiert und geladen, php-Modus für mich. Das hätte meinen Tag Recht.
use-package
und nutzten es in meine Emacs-Konfiguration, genau das ist mein Emacs auch nicht.Was ich erwarte ist, dass die meisten alles nützlich ist es, und funktioniert gut. Dies erfordert, dass Sie (oder ein team von Betreuern) aggressiv verfolgen Verpacken alles für Sie, und tun, was auch immer das beinhaltet — E-Mail jeder Autor ein nützliches Paket, und so weiter.
Zum Beispiel der Grund, Debian (und seine Derivate: Ubuntu, etc.) so gut ist, dass man glücklich mit dem system, ohne jemals etwas installieren außerhalb des repositories, und dass alles, was auf es wird gründlich getestet. Die tatsächlichen Funktionen der Paket-manager sind wichtig, aber Sekundär zu den verwalteten Paketen selbst.
Einfache Konfiguration der Synchronisierung: ich habe, wie viele Menschen, Emacs, die auf vielen verschiedenen Computern und Servern, einige von Ihnen meine eigenen und einige nicht. Es wäre toll, wenn der Paket-manager hatte eine Art von Datei die ich übertragen konnte, von einem computer auf den anderen; dann, auf dem letzteren Rechner, den Paket-manager bringen würde Sie meine Emacs " in den Zustand wie ich es im -- alle Pakete installiert und die Konfigurationen festlegen. Kombiniert mit der Fähigkeit, in der Lage, leicht zu installieren, entweder die ganze site (wenn man root-Rechte) oder als single-user, ich konnte synchronisieren Emacsen überall.
Ich bin fast positiv, dass die beste Lösung beinhaltet die Vorlage mehr Pakete zu ELPA und das hinzufügen von multi-source support für das Paket an.el. Die Emacs-Betreuer haben gesagt, dass Sie denken würden, einschließlich Paket.el in version 24, solange Sie wies auf eine FSF-repository standardmäßig.
Natürlich Einreichung muss auch ein automatisierter Prozess; die aktuelle Methode der Zusendung des ELPA Betreuer funktioniert nur auf einem kleinen Maßstab.
Egal, wie das gemacht wird, das wichtigste meiner Meinung nach ist, dass es sollte trivial zu senden Pakete im repository. Zur gleichen Zeit, wir wollen nicht die Pakete sofort zur Verfügung, zum Schutz vor bösartigem code(und wegen Lizenzgründen). Es sei denn, es ist ein "trust" - system, basierend auf Krypto-Signaturen.
Auch nützlich:
Irgendeine Art von komprimierten Archiv zu sein scheint am besten zu tun, einige der oben genannten.
Bisher eine sehr viel bessere ELPA scheint der Weg zu gehen.
Ich verbrachte einmal einige Zeit mit dem schreiben ein kleines Paket-manager für Emacs.
http://gmarceau.qc.ca/plugin.el
Schrieb ich:
Müssen Sie zwei library-Dateien auf es zu laufen, loop-Konstrukte.el und Datensatz.el
Ich denke, dass die Hacker um das iPhone ziemlich nahe an dem, was ich will, wie funktioniert Ubuntu "apt".
Ich mag in der Lage sein:
Möchte ich wesentliche Dinge, dass alle arbeiten schön und sind der empfohlene Weg, das zu tun, was auch immer. Dann eine Globale eingestellt, wo alles funktioniert bekommt. Dann ist die Fähigkeit für jedermann zu host Ihre eigenen archive.
Wäre es schön, wenn das alles war gebunden in git/svn/was auch immer, damit können Sie installieren die alte Version. Machen Sie Ihre eigenen patches durch "forking" off etc etc etc....
Neben den oben genannten, ich erwarte etwas wie debian, und andere repositories - set das stabil, experemental, ungetestete Pakete. Fähigkeit, eigene repositories - ich benutze viel die Pakete direkt aus VCS, so dass es nützlich sein könnte, um meine eigenen Pakete
Ich denke, dass der Paket-manager sollte nehmen eine Menge inspiration aus Rubygems. Ich denke auch, dass es sollte eine Seite wie Gemcutter.
Einem zentralen repository, könnte auch nett sein (wie Emacsmirror). Dies ist jedoch nicht notwendig sein, wenn eine Seite wie Gemcutter vorhanden ist, sammelt alle Pakete.
Ich denke, diese Dinge sind wichtig für diese Arbeit.
Also ein Paket-manager wie Rubygems mit einer Website wie Gemcutter und einem zentralen repository wie Emacsmirror (vorzugsweise auf Github, weil es die soziale Codierung) tun würde, Emacs wirklich gut.
Alles in allem denke ich, dass viel inspiration genommen werden sollten von Schienen und wie Rails verarbeitet Edelsteine.
Ich weiß nicht, wie aktuell diese Frage ist,...
aber das Modell würde ich gerne sehen, ist CPAN. Ich weiß auch nicht, Rubygems, aber es klingt so ähnlich wie CPAN.
Ist ein perl-CPAN-Archiv + Bibliothek-management-system. Beim schreiben brauche ich ein perl-Programm, das erfordert... FTP oder SOAP-oder JSON-oder XML-oder ZIP, oder...etc, ich kann das CPAN-Paket-manager, wählen Sie das erforderliche Paket zum download, view und überprüfen Sie die Abhängigkeiten, dann alles installieren. CPAN ist 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-on-demand.
Das ist, was ich möchte, um zu sehen, in emacs.
Einigen weiteren Kommentar auf Anforderungen.
Schließlich, es wäre nett einen Weg zu haben, zu trennen oder zu organisieren-Bibliotheken von Funktionen. Hierarchische Namensräume. Emacs' flat namespace ist sehr datiert. Dies ist die Art von unabhängigen, aber sich ergänzenden, um die Kern-Funktion der Paket-Verwaltung. Ich bin kein lisp-guru, also ich weiß nicht wie schwer das werden würde; vielleicht gibt es schon einen Weg, es zu tun.
Paket-Manager nicht bieten alles, was ich Wert w.r.t. single-Datei elisp-Pakete mit einfachen Abhängigkeiten: hinzufügen und löschen von
site-lisp
hat nie Probleme verursacht. Es ist die Pakete, die abhängig von externen Programmen (z.B. ispell), multi-Datei-Pakete (z.B., auctex, org-Modus), kann schwierig sein. Kann nicht denken von jedem einzelnen-Datei elisp-Paket mit nicht trivialen Abhängigkeiten, offhand.Für diese, weniger als ein Paket-manager, ich möchte emacs' elisp-Pakete zu erwerben, test-Suiten, die ausgeführt werden können, en masse, und die nützliche Informationen liefern, im Falle der Abhängigkeit Ausfälle.