Frage

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 Stimmen zu, dass es derzeit sehr schwierig, zu finden, zu installieren und vor allem bleiben Sie up-to-date-Emacs-Lisp-Bibliotheken.

Seiten, die 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 (Schadcode).
  • 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.)


UPDATE -- package.el ist enthalten in GNU Emacs, beginnend mit version 24.1


Paket wurde in den Emacs trunk.epkg noch nicht fertig ist und auch momentan nicht verfügbar.Installieren Sie mindestens-elisp -, plugin-und-verwenden-Paket scheinbar nicht mehr aktiv gepflegt.

Ich habe erstellt ein git repository mit alle diese Paket-Manager wie Submodule.

Einige Dienstprogramme, die nützlich sein könnten

Paket-Manager könnten diese Dienstprogramme verwenden und/oder Sie könnten verwendet werden, um verwalten ein Spiegel der Pakete.

Diskussionen über das Thema auf der hand

Die Frage (endlich)

Also - ich würde von Euch gerne wissen, was Sie als wichtig/unwichtig/Ergänzende etc.in einem Paket-manager für Emacs.

Einige Ideen

  1. Viele Pakete (die Emacsmirror stellt, dass die größte verfügbare Sammlung von Paketen, aber es gibt keine explizite Unterstützung in jedem Paket-manager noch).
  2. Nur Pakete, die getestet wurden.
  3. Unterstützung für mehr als ein Paket-Archiv (so dass die Menschen können wählen zwischen vielen/getestet Pakete).
  4. Abhängigkeit berechnet basierend auf erforderliche features nur.
  5. Abhängigkeiten nehmen bestimmte Versionen berücksichtigt.
  6. Verwenden Sie nur Versionen, die veröffentlicht wurden stromaufwärts.
  7. Versionen von version-control-Systeme, wenn verfügbar.
  8. Pakete sind kategorisiert.
  9. Pakete werden deinstalliert und aktualisiert, nicht erst installiert.
  10. Unterstützung für das erstellen Gabel der upstream-version von Paketen.
  11. Die Unterstützung dieser Veröffentlichung Gabeln.
  12. Unterstützung der Auswahl einer Gabel.
  13. Nach der installation Pakete aktiviert sind.
  14. Generieren Sie die autoload-Dateien.
  15. Integration mit Emacswiki (siehe wikirel.el).
  16. Benutzer können ein tag, einen Kommentar, etc.Pakete und teilen Sie diese Informationen.
  17. Nur FSF-zugeordnet/GPL/FOSS software oder kümmern sich nicht darum, Lizenz.
  18. Der Paket-manager eingebunden werden soll verteilt werden, die mit Emacs.
  19. - Unterstützung für die einfache Kontaktaufnahme mit dem Autor.
  20. Viele von Metadaten.
  21. Schlagen Sie alternativen vor, vor der Installation eines bestimmten Pakets.

Ich bin der Hoffnung, für diese Arten von Antworten

  • Verweise auf weitere Implementierungen, Diskussionen etc.
  • Lange Beschreibungen einer Reihe von Funktionen, die machen Ihre ideale Paket-manager.
  • Beschreibungen einer bestimmten gewünschten/unerwünschten Funktion.Fühlen Sie sich frei, um näher auf meine Ideen von oben.
  • Mich zu überraschen.
War es hilfreich?

Lösung

Automatische Veröffentlichung von version control

Ich würde gerne sehen, ein standard -, Mittel-und single Emacs-Paket-manager.Gerade jetzt, ich würde 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.In meine Meinung, die ich sehen möchte, dies in Kombination mit einem version control Systems like git auf einem zentrale Hosting-Plattform wie GitHub - etwas, dass würde machen es einfach für die Autoren zu publizieren, Ihre Pakete und würde es leicht machen, anderen etwas zurückgeben.

Ähnlich wie GitHub (zur) machen es einfach, zu veröffentlichen, RubyGems, ich würde gerne etwas ähnliches in einem Emacs-Paket-manager.Zum Beispiel, tag-Repositorys mit "vX.Y.Z" und haben Ihre elisp Güte automatisch allen zur Verfügung.

Der Vorteil der Verwendung eine beliebte backend wie GitHub ist, dass Sie würde sofort eine Menge der Exposition, die dazu beitragen sollen Laufwerk seinen Erfolg.

Andere Tipps

Ich bin immer noch lernen, Emacs, also ich hatte noch keine Gelegenheit, zu schauen, Paket-Manager, aber ein tolles feature wäre, um den Benutzer zu informieren, dass die Paket ist verfügbar, wenn Sie versuchen, es zu verwenden, aber es ist nicht auf Ihrem system.Zum Beispiel wollte ich zum editieren einer PHP Datei auf einem server einmal, und ich versuchte

M-x php-mode

und Emacs war alle wie

M-x php-mode [no match]

wenn es hätte sein sollen, wie

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

und dann müsste es installiert und geladen php-Modus für mich.Das hätte mein Tag Recht.

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 Verpackung alles für Sie, und tun, was beinhaltet, dass — E-Mail an jeden Autor ein nützliches Paket, und so auf.

Zum Beispiel der Grund, Debian (und seine Derivate:Ubuntu etc.) ist das so gut ist, dass Sie können gerne Ihr system verwenden, ohne jemals etwas installieren, die außerhalb des Repositorys, und dass alles, was auf es wird gründlich getestet.Die tatsächlichen Funktionen der Paket-manager sind wichtig, aber Sekundär auf das verwaltete Pakete selbst.

Einfache Konfiguration Synchronisation:Ich habe, wie viele Leute, verwenden Sie Emacs, die auf vielen verschiedenen Computern und Servern, einige von Ihnen meine eigenen, und einige nicht.Es wäre toll, wenn das Paket manager hatte eine Art von Datei, die ich übertragen konnte von einem computer auf einen anderen;klicken Sie dann auf die letztere computer, den Paket-manager bringen würde mein Emacs in den Zustand, den ich, wie es in -- alle Pakete installiert und Konfigurationen.Kombiniert mit der Fähigkeit, in der Lage, um leicht zu installieren, Seite-weit (wenn man root-Rechte) oder als single-user, ich könnte synchronisieren Emacsen überall.

Ich bin fast positiv, dass die beste Lösung beinhaltet die übermittlung, mehr Pakete zu ELPA und das hinzufügen von multi-source-support-Paket.el.Die Emacs-Betreuer haben gesagt, dass Sie denken würden, einschließlich Paket.el in version 24, wie lange, wie es wies auf eine FSF-repository standardmäßig aktiviert.

Natürlich Einreichung muss auch ein automatisierter Prozess;die aktuelle Methode der Zusendung des ELPA maintainer funktioniert nur auf einem kleinen Maßstab.

Egal, wie das gemacht wird, ist das wichtigste, meiner Meinung nach, sollte es trivial sein, um senden die Pakete im repository.Zur gleichen Zeit, wir wollen nicht die Pakete sofort verfügbar zu schützen gegen schädlichen code(und aus Lizenzgründen).Es sei denn, es ist ein "trust" - system, basierend auf crypto-Signaturen.

Auch nützlich:

  • "meta-Pakete", die Installation von mehreren Paketen gleichzeitig.
  • In der gleichen Weise, wir sollten in der Lage sein, zu installieren, ein set von elisp-Dateien, für die Wartbarkeit
  • "Broken" Pakete sollten nicht zu stören Emacs starten.Das ist einfach und ich habe es umgesetzt in meinem eigenen .emacs
  • Möglichkeit, um Dateien zu installieren andere als Skripts.Dies wird oft übersehen, aber sehr nützlich.Sie würde in der Lage sein, für Beispiel, Schiff, Bilder, Symbole, Symbolleisten, etc.
  • Versionierung:Paket X braucht Paket Y > 1.0
  • Prüfung:perform basic sanity checks, Tests für Konflikte (keybindings, Funktion neudefinitionen, Funktionen erwartet werden vorhanden sein, aber nicht, etc).
  • BUG-TRACKING:Ich kann nicht genug betonen, die Bedeutung dieser genug.Mit einem zentralen Ort zum Bericht Paket bugs (und in der Lage sein, Sie zu verfolgen) ist sehr wichtig zu gewährleisten die Qualität der Pakete.

Eine Art komprimiertes Archiv am besten zu sein scheint, um einige der oben genannten.


So weit, stark verbessert ELPA scheint der Weg zu gehen.

Ich verbrachte einmal einige Zeit mit dem schreiben einer kleinen Paket-manager für Emacs.

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

Ich schrieb:

Plugin ist mein Versuch auf die Schaffung eines der Paket-manager für Emacs.Plugin wird automatisch herunterlädt Emacs Erweiterungen, entpackt Sie in ein Verzeichnis, fügt das Verzeichnis der Last-Pfad, generiert die auto-load Anmerkungen und ändern Sie Ihre dot-emacs Datei.Die auto-load-Annotationen sind ein wenig bekannte Funktion von Emacs.Einmal Sie generiert werden, Emacs-Erweiterungen laden Sie Sie schnell und inkrementell, die ist wirklich schön, wenn Sie wie viele Erweiterungen installiert, wie ich es Tue.

Sie benötigen zwei library-Dateien, es zu laufen, loop-Konstrukte.el und record.el

Ich denke, dass die Hacker für das iPhone ziemlich nahe an dem, was ich möchte, wie Ubuntu "apt".

Ich möchte in der Lage sein:

  • hinzufügen
  • entfernen, (Paket)
  • entfernen Sie Benutzer-Einstellungen
  • anzeigen der Dokumentation
  • upgrade ( nach dem Lesen der change-log)
  • fügen Sie neue Archiv ( aka add-repository )
  • siehe Abhängigkeiten
  • siehe version
  • Suche nach Namen, Stichwort
  • durchsuchen von (Datum Hinzugefügt, änderungsdatum, name)
  • speichern Sie alle installierten Pakete & Einstellungen
  • laden Pakete & Einstellungen

Ich möchte eine Haupt-Dinge, die alle gut funktionieren und sind der empfohlene Weg, das zu tun, was auch immer.Dann ein Satz globaler wo alles bekommt.Dann die Möglichkeit für jeden host Ihrer eigenen Archiv.

Es wäre schön, wenn das alles war gebunden in git/svn/was auch immer, so dass Sie könnte installieren die alte Version.Machen Sie Ihre eigenen patches von forking off etc etc etc....

Neben den oben genannten, ich erwarte etwas wie debian und anderen repositories - Satz von der stabilen, experemental, ungetestete Pakete.Fähigkeit, eigene repositories - ich benutze viele der Pakete direkt aus VCS, so dass es nützlich sein könnte, um meine eigenen Pakete

Ich denke, dass der Paket-manager sollte eine Menge inspiration aus Rubygems.Ich denke auch, dass es sollte eine Website wie Gemcutter.

Ein zentrales repository könnte auch schön (wie Emacsmirror).Dies ist jedoch möglicherweise nicht erforderlich, wenn eine Website wie Gemcutter vorhanden ist, sammelt alle Pakete.

Ich denke, diese Dinge sind wichtig für diese Arbeit.

  • Die zentrale Lage von einige Art, sammelt alle Pakete
  • Einfaches hinzufügen von packages
  • Leicht zu pflegen-Pakete
  • Einfach zu tragen, um andere Pakete
  • Einfach zu installieren, deinstallieren und aktualisieren von Paketen
  • Möglichkeit zum hinzufügen von Paket-Abhängigkeiten
  • Gemeinsame Struktur für alle Pakete

Also, einen Paket-manager wie Rubygems mit einer Website wie Gemcutter und ein zentrales 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 getroffen werden sollten, von Zug und wie Rails handles Edelsteine.

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

CPAN ist ein perl-archive - + - Bibliothek-management-system.Beim schreiben brauche ich ein perl-Programm, das erfordert, dass...FTP oder SOAP oder JSON-oder XML-oder ZIP oder...etc, kann ich das CPAN package manager, wählen Sie die erforderliche Paket zum herunterladen, anzeigen und überprüfen Sie die Abhängigkeiten, installieren Sie dann alles.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 sehen möchte-in emacs.

Einige weitere Kommentare zu den Anforderungen.

  • explizite herunterladen von Paketen.Kein auto installieren.Keine unsichtbaren downloads.Ich möchte Fragen, für neue Bibliotheken oder neue Funktion.
  • Ich sollte in der Lage sein, die Liste der Namen/version/Zeitstempel der installierten Pakete.
  • Wenn mein Freund gibt mir seine Liste, ich sollte in der Lage sein zu diff seinem emacs Stand vor mir.
  • check-for-updates-Funktion.Welche updates verfügbar sind?Was tun Sie lösen?
  • depedency überprüfung, überprüfung und download.Wenn ich installieren csharp-Modus und erfordert v5.0.28 " cc-Modus, dann sollte es sich bestätigen Sie mit mir, dass muss ich auch download-cc-Modus.
  • es sollte eine gewisse Art von Gemeinschaft ranking dieser Pakete, wie das ranking torrents on isohunt.Ich möchte sehen, ob ein Paket hat 3 upvotes oder 3000.
  • "transactional" Verhalten.Wenn eine Installation geht boom, es muss sich zu einer letzten als funktionierend bekannten Zustand.
  • - failsafes.Wenn ich haben custom-mods in linum.el, es ablehnen sollte die Installation einer neuen version über meine Veränderungen, wenn ich das ausdrücklich erlauben.Es sollte mich warnen, bevor Sie auch nur angefangen.Tun Sie dies mit Prüfsummen/md5 ist über die bestehende installieren.
  • haben Sie die option, einige Pakete aus komprimierten Archiven wie zip-Dateien.So habe ich nie irgendwelche Zweifel haben, die ich nicht aktualisiert haben jede der embbedded elisp.
  • Fähigkeit zu verwenden gespiegelte hosts-Paket Verteilung.
  • alle diese Funktion zugegriffen werden soll, über M-x-Bibliothek-manageemnt oder so etwas.

Schließlich, es wäre schön, einen Weg zu haben, zu trennen oder organisieren die Bibliotheken von Funktionen.Hierarchische Namensräume.Emacs' flat namespace ist sehr veraltet.Dies ist die Art von unabhängigen, aber sich ergänzenden, um die core-Funktion von Paket-management.Ich bin kein lisp-guru, also ich weiß nicht wie schwer das sein würde;vielleicht gibt es bereits einen Weg, es zu tun.

Paket-Manager bieten nicht 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 der 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 diesen, einen Paket-manager, ich würde gerne emacs' elisp-Pakete zu erwerben, die test-Suiten, die ausgeführt werden können, en masse, und die Bereitstellung von nützlichen Informationen im Falle von Abhängigkeit Ausfälle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top