Emacs: list-packages [no match]

Tim picture Tim · Dec 20, 2013 · Viewed 8.8k times · Source

I'm new to Emacs. I'd like to install a package, but doing M-x package-install says there is no such command.

Trying to look which packages are installed with M-x list-packages does not work either. GNU Emacs manual does not say much about it (or I looked in a wrong place), and I can't quite come up with meaningful keywords for search due to my limited Emacs knowledge.

Answer

Tim picture Tim · Dec 20, 2013

Thanks phils and shyamupa for setting me on track. Indeed, I am using emacs 23 ("M-x version" to check).

I used instruction from here to install packaging system. I had to copy the following in scratch:

(let ((buffer (url-retrieve-synchronously
               "http://tromey.com/elpa/package-install.el")))
  (save-excursion
    (set-buffer buffer)
    (goto-char (point-min))
    (re-search-forward "^$" nil 'move)
    (eval-region (point) (point-max))
    (kill-buffer (current-buffer))))

and then M-x eval-buffer

Then, M-x package-list-packages works.

UPDATE:

It turns out I was looking for a package in MELPA, and the above procedure sets you up for ELPA only. The content of my .emacs file after installation was following:

(when
    (load
     (expand-file-name "~/.emacs.d/elpa/package.el"))
  (package-initialize))

To enable MELPA load I had to replace the contents of package.el with this and change .emacs as follows (inspired by this SO question):

(load (expand-file-name "~/.emacs.d/elpa/package.el"))
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(package-initialize)

This did the trick and I got a huge list of packages from MELPA. Hope this will save someone time in future.