package

Homepage: https://www.gnu.org/software/emacs

Author: Daniel Hackney, Tom Tromey

Summary

Simple package system for Emacs

Commentary

The idea behind package.el is to be able to download packages and
install them.  Packages are versioned and have versioned
dependencies.  Furthermore, this supports built-in packages which
may or may not be newer than user-specified packages.  This makes
it possible to upgrade Emacs and automatically disable packages
which have moved from external to core.  (Note though that we don't
currently register any of these, so this feature does not actually
work.)

A package is described by its name and version.  The distribution
format is either a tar file or a single .el file.

A tar file should be named "NAME-VERSION.tar".  The tar file must
unpack into a directory named after the package and version:
"NAME-VERSION".  It must contain a file named "PACKAGE-pkg.el"
which consists of a call to define-package.  It may also contain a
"dir" file and the info files it references.

A .el file is named "NAME-VERSION.el" in the remote archive, but is
installed as simply "NAME.el" in a directory named "NAME-VERSION".

The downloader downloads all dependent packages.  By default,
packages come from the official GNU sources, but others may be
added by customizing the `package-archives' alist.  Packages get
byte-compiled at install time.

At activation time we will set up the load-path and the info path,
and we will load the package's autoloads.  If a package's
dependencies are not available, we will not activate that package.

Conceptually a package has multiple state transitions:

* Download.  Fetching the package from ELPA.
* Install.  Untar the package, or write the .el file, into
  ~/.emacs.d/elpa/ directory.
* Autoload generation.
* Byte compile.  Currently this phase is done during install,
  but we may change this.
* Activate.  Evaluate the autoloads for the package to make it
  available to the user.
* Load.  Actually load the package and run some code from it.

Other external functions you may want to use:

M-x list-packages
   Enters a mode similar to buffer-menu which lets you manage
   packages.  You can choose packages for install (mark with "i",
   then "x" to execute) or deletion, and you can see what packages
   are available.  This will automatically fetch the latest list of
   packages from ELPA.

M-x package-install-from-buffer
   Install a package consisting of a single .el file that appears
   in the current buffer.  This only works for packages which
   define a Version header properly; package.el also supports the
   extension headers Package-Version (in case Version is an RCS id
   or similar), and Package-Requires (if the package requires other
   packages).

M-x package-install-file
   Install a package from the indicated file.  The package can be
   either a tar file or a .el file.  A tar file must contain an
   appropriately-named "-pkg.el" file; a .el file must be properly
   formatted as with `package-install-from-buffer'.

Dependencies

Reverse dependencies