Homepage: https://www.gnu.org/software/emacs
Author: Daniel Hackney, Tom Tromey
Simple package system for Emacs
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'.