Pregunta:
Un amigo y yo queremos empezar a escribir paquetes emacs específicos para su uso en nuestra empresa. (Créame, nada de lo que escribamos será de mucho interés para nadie externo, es la integración con herramientas internas).
Nos gustaría que la instalación y el mantenimiento de paquetes sean lo más fáciles posible y creemos que esto significa la integración con package.el
. ¿Qué debemos hacer para configurar un repositorio para tal uso?
Respuesta:
Configuré un archivo de paquetes local (Emacs 24.5) usando package.el
creando primero dos directorios, pkgs
y local
. (Los nombres no importan). Los archivos que componen sus paquetes van en pkgs
, y local
terminará conteniendo su archivo. Si desea que un archivo esté disponible para otras personas, puede exponer un archivo local
mediante un servidor web, pero el proceso es el mismo que para crear un archivo local.
init.el
siguiente en mi archivo init.el
:
(require 'package)
(setq package-enable-at-startup nil)
(require 'package-x)
(defvar local-archive
(expand-file-name "local/" user-emacs-directory)
"Location of the package archive.")
(setq package-archive-upload-base local-archive)
(add-to-list 'package-archives `("local" . ,local-archive) t)
(package-initialize)
Puse mi archivo en mi directorio .emacs.d
(de ahí el directorio user-emacs-directory
en el expand-file-name
) pero puedes ponerlo donde quieras.
Una vez evaluado esto, ejecute Mx package-upload-file
e ingrese el nombre de archivo de su paquete a instalar. Esto generará un nuevo paquete en local
. Verá tres nuevos archivos allí, archive-contents
, yourpackagename-version.el
y yourpackagename-readme.txt
. Ahora debería poder hacer Mx package-list-packages
y ver su paquete en la lista. Con suerte, estarán en la parte superior marcados como "nuevos". Puede instalar el paquete como de costumbre y lo verá aparecer en su directorio .emacs.d/elpa
como cualquier otro paquete.
Esto debería funcionar de inmediato para Emacs 24. No estoy seguro acerca de las versiones anteriores. Sus usuarios pueden acceder a su paquete de la forma habitual al incluir
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives
'("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)
en su archivo init.el
Para obtener información sobre cómo escribir un paquete, consulte Preparación del código Lisp para su distribución en el manual GNU Emacs Lisp.