8 January 2013 4:33 PM (emacs)
Lately, I have found myself playing with packages and my .emacs too much. Sometimes I had to comment the use of a package (e.g. smex) because it was not installed.
So, at the end, I wrote this basic elisp to install a package from the command line.
$ emacs --batch --expr "(define pkg-to-install 'smex)" -l emacs-pkg-install.el
The elisp script looks like this:
;; ;; Install package from command line. Example: ;; ;; $ emacs --batch --expr "(define pkg-to-install 'smex)" -l emacs-pkg-install.el ;; (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) ;; Fix HTTP1/1.1 problems (setq url-http-attempt-keepalives nil) (package-refresh-contents) (package-install pkg-to-install)
For convenience, you can wrap it in a shell script and simply type:
$ ./emacs-pkg-install.sh smex
The shell script:
#!/bin/sh if [ $# -ne 1 ] then echo "Usage: `basename $0` <package>" exit 1 fi emacs --batch --eval "(defconst pkg-to-install '$1)" -l emacs-pkg-install.el