Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

elpa-mirror (v2.1.1)

Create local Emacs package repository from installed packages so package upgrade never breaks.

CLI program tar is required. It’s bundled with Linux, macOS, and Windows 10.

Please note if you are using Window 7 or older Windows 10 (less than build 17063) , you can still get tar by installing Cygwin or MSYS2.

Since v2.1.1, only Emacs 24.4 and higher versions are supported.


  • Emacs Lisp compile file (*.elc) is not portable for different versions of Emacs. So emacs.d copied from higher version of Emacs might crash in lower version of Emacs
  • Package installation is fast. 15 seconds to install 115 packages
  • The repository could be hosted on USB/Dropbox/GitHub. So you can install packages behind corp firewall
  • Tested with Emacs v24.4, v24.5, v25.3, v26, v27 on OSX/Cygwin/Windows/Linux


  • Download elpa-mirror.el to somewhere (say ~/.emacs.d/site-lisp/elpa-mirror/)
  • Add below code into your ~/.emacs,
(add-to-list 'load-path "~/.emacs.d/site-lisp/elpa-mirror")
(require 'elpa-mirror)


M-x elpamr-create-mirror-for-installed to create local repository.

To use the repository ~/myelpa/, insert below code into your ~/.emacs,

;; myelpa is the ONLY repository now, dont forget trailing slash in the directory
(setq package-archives '(("myelpa" . "~/myelpa/")))

To update existing local repository, run M-x elpamr-create-mirror-for-installed again.

BTW, you can run elpa-mirror.el as a independent script,

mkdir -p ~/myelpa && emacs --batch -l ~/.emacs.d/init.el -l ~/any-directory-you-prefer/elpa-mirror.el --eval='(setq elpamr-default-output-directory "~/myelpa")' --eval='(elpamr-create-mirror-for-installed)'


Change output directory,

(setq elpamr-default-output-directory "~/myelpa")

Repository on Dropbox

Insert below code into ~/.emacs:

;; all-to-list will not override default elpa.
;; So now you have two repositories.
;; One is GNU elpa. Another is myelpa
(add-to-list 'package-archives
             '("myelpa" . ""))

Repository on GitHub

My repository is

Insert below code into .emacs:

(add-to-list 'package-archives
             '("myelpa" . ""))

Report bug


Create local emacs package repository. 15 seconds to install 115 packages.



No packages published
You can’t perform that action at this time.