Configuré un archivo de paquete local (Emacs 24.5) usando package.elprimero creando dos directorios, pkgsy local. (Los nombres no importan). Los archivos que componen sus paquetes entran pkgsy localterminarán manteniendo su archivo. Si desea que un archivo esté disponible para otros, puede exponerlo localutilizando un servidor web, pero el proceso es el mismo que crear un archivo local.
Puse lo siguiente en mi init.elarchivo:
(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 .emacs.ddirectorio (de ahí user-emacs-directoryel expand-file-nameformulario) pero puedes ponerlo donde quieras.
Una vez que se evalúa esto, ejecute M-x package-upload-filee ingrese el nombre de archivo de su paquete que se 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 M-x package-list-packagesy 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 verá que aparece en su .emacs.d/elpadirectorio 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 manera 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 init.elarchivo
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.