Eu configurei um arquivo de pacote local (Emacs 24.5) usando package.elprimeiro criando dois diretórios, pkgse local. (Os nomes não importam.) Os arquivos que compõem seus pacotes entram pkgse localacabam mantendo seu arquivo morto. Se você deseja disponibilizar um arquivo morto para outras pessoas, é possível expor localusando um servidor da Web, mas o processo é o mesmo que criar um arquivo local.
Coloquei o seguinte no meu init.elarquivo:
(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)
Coloquei meu arquivo no meu .emacs.ddiretório (daí user-emacs-directoryo expand-file-nameformulário), mas você pode colocá-lo onde quiser.
Depois que isso for avaliado, execute M-x package-upload-filee digite o nome do arquivo do seu pacote a ser instalado. Isso irá gerar um novo pacote no local. Você verá três novos arquivos lá, archive-contents, yourpackagename-version.el, e yourpackagename-readme.txt. Agora você deve poder fazer M-x package-list-packagese ver seu pacote listado. Com sorte, eles estarão no topo marcado como "novo". Você pode instalar o pacote como de costume, e ele será exibido em seu .emacs.d/elpadiretório como em qualquer outro pacote.
Isso deve funcionar imediatamente para o Emacs 24. Não tenho certeza das versões anteriores. Seus usuários podem acessar seu pacote da maneira usual, incluindo
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives
'("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)
no init.elarquivo deles .
Para obter informações sobre como escrever um pacote, consulte Preparando o código Lisp para distribuição no manual GNU Emacs Lisp.