¿Cómo gestiona emacs sus paquetes?

9

Instalé auctex desde el centro de software de Ubuntu, y luego instalé una versión más nueva de auctex desde emacs.

Luego desinstalé el auctex instalado por el centro de software de Ubuntu. Descubrí que no desinstaló el que instalé de emacs.

¿Cómo gestiona emacs sus paquetes?

¿No hay interferencia entre emacs y Ubuntu en la gestión de la instalación y desinstalación de paquetes de emacs?

Si estoy en lo cierto, hace unos años, ¿no había forma de instalar paquetes dentro de emacs?

Gracias.

Tim
fuente
2
OMI, esta pregunta es demasiado amplia para SE Q&A. Es mejor leer el documento de Emacs y luego publicar aquí una pregunta específica sobre una parte específica de la administración de paquetes que no está clara para usted. No deberíamos reproducir el documento de Emacs aquí. Y si hay algo importante que no se encuentra en el documento Emacs entonces usted debe presentar una solicitud de informe / mejora de errores: M-x report-emacs-bug. Las personas que respondan a tal pregunta aquí estarían mejor contribuyendo a los documentos de Emacs, si falta la información. EN MI HUMILDE OPINIÓN.
Drew
3
Tim: En caso de que haya alguna confusión, un "paquete" de Emacs y un "paquete" de Ubuntu / Debian son cosas completamente ajenas. Cualquier paquete Debian relacionado con Emacs no tiene conexión alguna con el administrador de paquetes package.el integrado en Emacs 24.
phils
1
@Tim, no olvide aceptar una respuesta, o háganos saber si las respuestas no son satisfactorias.
Malabarba
1
@Drew La pregunta es más sobre la interacción entre Ubuntu y los paquetes de Emacs, por lo que no se trataría en los documentos de Emacs. Y las respuestas también discuten los paquetes de terceros que los documentos no cubren, por lo que este es probablemente el mejor lugar para preguntar tales cosas.
Brian Burns

Respuestas:

11

Como dijo el pimentón, Emacs usa load-pathpara buscar elisparchivos disponibles en la lista ( .elc, .el)

Se load-pathbusca el primer paquete coincidente cuando se requiere. Si se instalan varias copias de un paquete, se cargará la primera.

El administrador de paquetes de distribución no puede instalar en la misma fuente que lo package-installhace, ya que uno es para todo el sistema y el otro es específico del usuario.

Fuentes de paquete

Incorporado y específico de distribución

Administrador de paquetes de distribución

Los administradores de paquetes de distribución proporcionan una selección de paquetes de emacs que se pueden instalar. En mi experiencia, estos a menudo se encuentran entre los paquetes más populares / ampliamente utilizados. Antes del desarrollo de package.elesto, era la forma más fácil de obtener los paquetes. (Más fácil en virtud de simplemente ejecutar apt-get install <package>en lugar de usar el control de versiones o la descarga directa.

Los paquetes instalados a través del administrador de paquetes de distribución se instalan, lo /usr/local/share/emacs/site-lisp/cual es un valor predeterminado en load-pathy se ocultarán por load-pathadiciones específicas del usuario .

Paquete.el

package.elprimero fue incluido con Emacs 24. Esta versión es compatible con, Emacs 23pero debe instalarse manualmente, los paquetes recuperados por ella pueden o no ser compatibles Emacs 23.

package.elproporciona un repositorio explorable de paquetes para Emacs. Por defecto solo Elpase configura el repositorio, pero se puede agregar acceso a MELPA y Marmelade :

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

Esto proporciona acceso a un grupo mucho más grande de paquetes.

De forma predeterminada, package.elinstala los paquetes en ~/.emacs.d/elpay cuando (package-initialize)se llama a este directorio, se colocará más cerca del frente del load-path, lo que da como resultado que estos paquetes tengan prioridad sobre los instalados con el administrador de paquetes de distribución.

Git / Bzr / hg / ... + EmacsWiki

Los paquetes controlados por versión se pueden recuperar manualmente de su repositorio mediante la clonación. Algunos también proporcionan versiones empaquetadas que se pueden descargar directamente.

Los archivos EmacsWiki Elisp también se pueden descargar, aunque generalmente son archivos individuales en lugar de directorios.

Una vez que se recupera el paquete, asegúrese de que la carpeta de destino esté en su sitio load-pathy que esté disponible para su uso.

Gestión de paquetes de terceros

Estas herramientas proporcionan envoltorios o funcionalidades adicionales sobre lo anterior para centralizar la administración de paquetes. Están diseñados teniendo en cuenta la configuración compartida para garantizar que todas sus máquinas tengan los mismos paquetes disponibles.

El-Get

El-Get mantiene una lista de recetas que le permiten recuperar los paquetes usando package.el, git, emacswikicomo fuentes (entre otros). También proporciona funciones para garantizar que los paquetes estén actualizados, gestionar la carga (diferida o inmediata) y almacenar la personalización específica del paquete en archivos que se cargan automáticamente cuando el paquete lo está required.

Barril

Cask está diseñado para la gestión de proyectos en / para Emacs. Utiliza un caskarchivo para mantener una lista de dependencias (otros paquetes) necesarios para usar el paquete, y descargará los paquetes faltantes para garantizar que todo se cargue correctamente.

Se puede usar para administrar configuraciones de paquetes locales al tratarlo ~/.emacs.dcomo un proyecto y solicitar (cask-initialize)el inicio.

straight.el

straight.elestá diseñado para personas que desean realizar cambios locales en sus paquetes y posiblemente contribuir con esos cambios en sentido ascendente. Extrae recetas de MELPA , GNU ELPA y EmacsMirror , o le permite especificar las suyas. También admite escribir un archivo de bloqueo de revisión para una máxima reproducibilidad, entre muchas otras características.

Paquete de uso

Use-Package está diseñado principalmente como una herramienta de administración de configuración de emacs. Descargará los package.elpaquetes necesarios pero no tiene mecanismos incorporados para acceder a otras fuentes. Permite la carga diferida de paquetes y la personalización diferida. Esto mejora la inicialización de emacs mientras ralentiza el uso inicial de los paquetes (pero si no los usa en una sesión dada, solo hay una ganancia neta).

Jonathan Leech-Pepin
fuente
elpakit también está disponible, realiza un trabajo similar al barril pero sin los bits que no son elisp.
nic ferrier
@nicferrier ¿Podría explicar cómo usarlo para la gestión de paquetes? (Puedo ver cómo usarlo para paquetes existentes, pero Cask también permite agregar fuentes arbitrarias si lo leo correctamente)
Jonathan Leech-Pepin
bueno, elpakit le permite principalmente hacer dos cosas: crear repositorios en su disco como paquetes (también crea archivos de paquetes a partir de colecciones de esos) y hacer paquetes que dependen de otros paquetes automáticamente. Mx elpakit-package-list-buf crea un búfer con una lista de sus paquetes de elpa que puede usar para crear otro paquete que dependa de los paquetes de elpa seleccionados.
nic ferrier
Creo que los paquetes instalados a través del administrador de paquetes de distribución entran /usr/share/emacs/site-lisp, no /usr/local/share...porque los directorios localestán destinados a instalaciones sin distribución.
JeanPierre
10

Emacs usa el load-path, que es esencialmente una lista de directorios en los que debería buscar archivos Lisp. Si hay un paquete disponible en el, load-pathentonces está instalado .

No hay interfaz entre el administrador de paquetes Debian / Ubuntu y el administrador de paquetes Emacs (package.el). El primero instala los paquetes de Emacs en todo el sistema (disponible para todos los usuarios de la computadora) mientras que el segundo instala un paquete de manera predeterminada en su directorio de inicio. Teóricamente puede usar ambas fuentes para instalar paquetes. Sin embargo, desaconsejaría esta práctica: es posible que experimente algunos problemas al instalar el mismo paquete desde ambas fuentes.

La lista de paquetes de Emacs que puede instalar a través del administrador de paquetes Debian / Ubuntu es mucho más limitada en comparación con ELPA / MELPA / ..., porque cada paquete debe estar preparado específicamente para Debian / Ubuntu. En otras palabras: paquete en ELPA! = Paquete en Debian.

pimenton
fuente
Cuando preguntó hace unos años, creo que estaba hablando de Elpa
Malabarba
@Malabarba: De hecho, no entendí bien. Eliminé la oración irrelevante.
pimentón
1
Esta respuesta es cierta para otros administradores de paquetes de distribución, como yum (Fedora), pacman (Arch), etc.
Vamsi
Y te falta el repositorio de mermelada de la lista. El repositorio original no GNU.
nic ferrier