<h1>Getting started</h1> <section> <a name="installing"></a> <h2>Installing</h2> <p>To use the MELPA repository, you'll need an Emacs with <code>package.el</code>. Emacs 24 has <code>package.el</code> bundled with it, and there's also a <a href="http://repo.or.cz/w/emacs.git/blob_plain/ba08b24186711eaeb3748f3d1f23e2c2d9ed0d09:/lisp/emacs-lisp/package.el">version you can use with Emacs 23</a>. </p> <p> Enable installation of packages from MELPA by adding an entry to <code>package-archives</code> after <code>(require 'package)</code> and before the call to <code>package-initialize</code> in your <code>init.el</code> or <code>.emacs</code> file: </p> <pre><code>(require 'package) ;; You might already have this line (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) (when (< emacs-major-version 24) ;; For important compatibility libraries like cl-lib (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) (package-initialize) ;; You might already have this line</code></pre> <p> or to add the stable package repository, use this instead of <code>"melpa"</code>: </p> <pre><code>(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)</code></pre> <h3>Customizations</h3> <p> What if you only want some of your packages to be installed from MELPA, and the rest from Marmalade or elsewhere? </p> <p> Only in the very latest Emacs snapshots is there a way to exclude or include versions according to their source (see <code>package-pinned-packages</code>). For all other users, we provide a <code>package-filter.el</code> package (available in MELPA) that will allow you to enable only certain packages or exclude certain packages. You can install the package manually by pasting this into your <code>*scratch*</code> buffer and evaluating it. </p> <pre><code>(progn (switch-to-buffer (url-retrieve-synchronously "https://raw.github.com/milkypostman/package-filter/master/package-filter.el")) (package-install-from-buffer (package-buffer-info) 'single))</code></pre> <p>You can then customize two variables:</p> <dl> <dt><code>package-archive-enable-alist</code></dt> <dd> <p> Optional Alist of enabled packages used by <code>package-filter</code>. The format is <code>(ARCHIVE . PACKAGE ...)</code>, where <code>ARCHIVE</code> is a string matching an archive name in<code>package-archives</code>, <code>PACKAGE</code> is a symbol of a package in <code>ARCHIVE</code> to enable. </p> <p> If no <code>ARCHIVE</code> exists in the alist, all packages are enabled. </p> </dd> <dt><code>package-archive-exclude-alist</code></dt> <dd> <p> Alist of packages excluded by <code> package-filter </code>. The format is <code>(ARCHIVE . PACKAGE ...)</code>, where <code>ARCHIVE</code> is a string matching an archive name in</code>package-archives</code>, <code>PACKAGE</code> is a symbol of a package in that archive to exclude.</p> <p> Any specified package is excluded regardless of the value of <code>package-archive-enable-alist</code> </p> </dd> </dl> </section> <section> <a name="known-issues"></a> <h2>Known Issues</h2> <p> <strong>Note:</strong> <em>These fixes are included in the <code>package-filter.el</code> package.</em> </p> <p> There is a small bug in Emacs24’s <code>package.el</code> such that the dependency order comes out backwards. The problem is patched by some <em>advice</em>. </p> <pre><code> (defadvice package-compute-transaction (before package-compute-transaction-reverse (package-list requirements) activate compile) "reverse the requirements" (setq requirements (reverse requirements)) (print requirements))</code></pre> </section> <section> <a name="updating"></a> <h2>Updating Packages</h2> <p> <code>package.el</code> now includes a mechanism to upgrade packages. After running <code>package-list-packages</code>, type <em>U</em> (mark Upgradable packages) and then <em>x</em> (eXecute the installs and deletions). When it’s done installing all the packages it will ask if you want to delete the obsolete packages and so you can hit <em>y</em> (Yes). </p> <p> If you run into a problem installing or upgrading, you may need to go into your <code>~/.emacs.d/elpa/</code> directory and delete packages that are installed multiple times. This can happen when the install times out. </p> <a name="development"></a> <h2>Development</h2> <p><a href="https://github.com/milkypostman/melpa">https://github.com/milkypostman/melpa</a></p> <p> Contributions are welcome. Currently, the builder supports packages using git, subversion, mercurial, bzr, cvs, darcs, fossil and emacswiki. </p> </section>