¿Todavía necesito GNU ELPA si tengo MELPA?

31

Esto siempre me ha confundido, ya que la gente dice que MELPA tiene versiones más nuevas de paquetes, pero no está realmente claro, si GNU ELPA es solo un subconjunto de MELPA, o si necesito ambos.

La razón por la que pregunto es que estoy experimentando mucho con mis paquetes y me package-list-packageslleva bastante tiempo. Soy consciente de ello package-list-packages-no-fetch, pero la mayoría de las veces me gustaría obtener la lista de paquetes más reciente.

Entonces la pregunta es, ¿puedo usar MELPA y obtener los mismos paquetes (y posiblemente versiones más nuevas) como si usara MELPA y GNU ELPA?

Jakub Arnold
fuente
55
Sí, siempre necesitarás GNU Elpa.
Malabarba
Relacionado: emacs.stackexchange.com/q/268/115
Kaushal Modi

Respuestas:

45

En primer lugar, ELPA es el nombre de una especificación, el Emacs Lisp Package Archive. Hay tres implementaciones ampliamente conocidas de esa especificación, GNU ELPA, Marmalade y MELPA.

GNU ELPA es el archivo oficial de GNU Emacs, habilitado de fábrica para instalaciones de Emacs suficientemente nuevas. Es relativamente pequeño, contribuir a ello requiere la asignación de derechos de autor y cooperar con la lista de correo oficial. Es lo más cercano que tenemos a una investigación de antecedentes comparable a un archivo de distribución de Linux.

Marmalade es un archivo no oficial con una buena cantidad de paquetes versionados. Los autores y encargados de mantenimiento deben cargar sus versiones manualmente. La verificación se realiza una vez por cada miembro nuevo antes de permitirles tener una cuenta de usuario, una vez hecho esto, son libres de liberar como lo deseen.

MELPA es otro archivo no oficial con la mayor cantidad de paquetes. Cada paquete se examina brevemente para determinar el estilo del código con su solicitud de extracción para su inclusión, después de que los paquetes se crean automáticamente a partir de sus fuentes (generalmente VCS). Las reconstrucciones pueden suceder cada hora. También hay MELPA estable, que solo crea versiones etiquetadas, pero tiene muchos menos paquetes, incluso menos que Marmalade.

En cuanto a la superposición, prácticamente no hay superposición entre GNU ELPA y Marmalade, y de manera similar para GNU ELPA y MELPA. Sin embargo, Marmalade y MELPA se superponen bastante. Calculo que la mayor parte de Marmalade es un subconjunto de MELPA. Es por eso que puedes usar MELPA para la mayoría de los paquetes y quizás GNU ELPA para algunos que faltan.

Actualización : Según las estadísticas de paquetes de malabarba, MELPA Stable superó a Marmalade en número de paquetes disponibles. Lo elegiría sobre Marmalade ahora.

Actualización : Marmalade está esencialmente muerta. El certificado ha expirado y casi no hay paquetes nuevos cargados. Esto se debe a su proceso bastante inusual, su propietario debe agregarlo manualmente a los usuarios y, como desapareció, no se han agregado nuevos usuarios desde 2016 más o menos.

wasamasa
fuente
Suena como Melpa + Gnu Elpa, y no usar Marmalade, es el camino a seguir. ¿Alguna forma fácil de convertir?
justingordon
Simplemente personalice en package-archivesconsecuencia y actualice el índice, como mediante el uso M-x package-refresh-contents. M-x list-packagesdebería mostrar una lista diferente a la anterior.
wasamasa
Parece que las estadísticas del paquete de malarbaba están estancadas en diciembre de 2015 ...
JeanPierre
He agregado una actualización más ya que Marmalade está muerta
wasamasa
-5

No, es posible que no necesite GNU ELPA o cualquier ELPA.

La razón práctica para no usar GNU ELPA o cualquier repositorio de terceros es para proteger mis Emacs del apagado de ELPA. El cierre sucedió de vez en cuando (consulte https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 )

La mayoría de mis paquetes se descargan de https // melpa.org, podría evitar GNU ELPA creando un pequeño espejo de paquete local de paquetes seleccionados de GNU ELPA.

Verifique mi configuración en https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el, GNU ELPA no se usa.

Si tengo que usar algunos paquetes de GNU ELPA solamente, prefiero crear mi propio ELPA local (es tan simple como crear un archivo de texto archive-contents), verifique mi ~/.emacs.d/localelpa.

Por ejemplo, seq-2.20.tarsolo existe en GNU ELPA y lo necesito. Entonces agrego este paquete a mi elpa local enhttps://github.com/redguardtoo/emacs.d/tree/master/localelpa

Actualmente solo uso cuatro paquetes de GNU ELPA,

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

Estos paquetes se colocan en mi, localelpaasí que no necesito acceder a GNU ELPA.

También puede consultar mi paquete https://github.com/redguardtoo/elpa-mirror que crea un repositorio local a partir de los paquetes instalados. Entonces, incluso el repositorio remoto (GNU ELPA, MELPA) es opcional ahora.

También puede usar el paquete fuente en lugar de descargado. Verifique https://github.com/redguardtoo/emacs.d/tree/master/site-lisp . rainbow-mode, Debe comprender qué es load-path( http://emacswiki.org/emacs/LoadPath ) si usa la fuente.

También puede aconsejar package--add-to-archive-contentsajustar los paquetes antes de que se muestren en el administrador de paquetes. Este es un tipo de hack indocumentado. Funciona desde Emacs 23.4 a Emacs 27. Ver init-elpa.elpor ejemplo.

Chen Bin
fuente
77
También necesita GNU ELPA para paquetes como Auctex, seq.el, let-alist, rainbow-mode, etc., por lo que difícilmente diría que es obsoleto, sino que su importancia aumenta a medida que más personas ingresan al desarrollo de Emacs y desean su Los paquetes deben estar fácilmente disponibles para todos.
wasamasa
Actualicé mi respuesta un poco sobre este tema.
chen bin
@wasamasa, ¿puede explicarme por qué exactamente necesito gnu elpa para paquetes como auctex?
toogley
1
@toogley Debido a que solo está disponible en GNU ELPA, es por eso.
wasamasa