Next: , Up: Installing packages automatically   [Contents][Index]

5.1 Installing package

The :ensure keyword makes use-package ask the Emacs package manager to install a package if it is not already present on your system.

For example:

(use-package magit
  :ensure t)

If you need to install a different package from the one named by use-package, you can use a symbol:

(use-package tex
  :ensure auctex)

You can customize the user option use-package-always-ensure to a non-nil value if you want this behavior to be global for all packages:

(require 'use-package-ensure)
(setq use-package-always-ensure t)

You can override the above setting for a single package by adding :ensure nil to its declaration.

The :vc keyword can be used to control how packages are downloaded and/or installed. More specifically, it allows one to fetch and update packages directly from a version control system. This is especially convenient when wanting to install a package that is not on any package archive.

The keyword accepts the same arguments as specified in see Fetching Package Sources in GNU Emacs Manual, except that a name need not explicitly be given: it is inferred from the declaration. The accepted property list is augmented by a :rev keyword, which has the same shape as the REV argument to package-vc-install. Notably – even when not specified – :rev defaults to checking out the last release of the package. You can use :rev :newest to check out the latest commit. Note that currently, you cannot upgrade built-in packages using :vc.

For example,

(use-package bbdb
  :vc (:url "https://git.savannah.nongnu.org/git/bbdb.git"
       :rev :newest))

would try – by invoking package-vc-install – to install the latest commit of the package foo from the specified remote.

Alternatively, the use-package-vc-prefer-newest user option exists to always prefer the latest commit.

The :vc keyword can also be used for local packages, by combining it with :load-path (see Setting a custom load-path):

;; Use a local copy of BBDB instead of the one from GNU ELPA.
(use-package bbdb
  :vc t
  :load-path "/path/to/bbdb/dir/")

The above dispatches to package-vc-install-from-checkout.

Next: Pinning packages using :pin, Up: Installing packages automatically   [Contents][Index]