Fix invisible mouse pointers on Windows.
[emacs.git] / doc / emacs / package.texi
blob68913d8b6fd80f956218a51dd08e79d9baf6e3a1
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
3 @c Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Packages
6 @chapter Emacs Lisp Packages
7 @cindex Package
8 @cindex Emacs Lisp package archive
9 @cindex Package archive
10 @cindex Emacs Lisp package
12 Emacs includes a facility that lets you easily download and install
13 @dfn{packages} that implement additional features.  Each package is a
14 separate Emacs Lisp program, sometimes including other components such
15 as an Info manual.
17   @kbd{M-x list-packages} brings up a buffer named @file{*Packages*}
18 with a list of all packages.  You can install or uninstall packages
19 via this buffer.  @xref{Package Menu}.
21 @findex describe-package
22   The command @kbd{C-h P} (@code{describe-package}) prompts for the
23 name of a package, and displays a help buffer describing the
24 attributes of the package and the features that it implements.
26   By default, Emacs downloads packages from a @dfn{package archive}
27 maintained by the Emacs developers and hosted by the GNU project.
28 Optionally, you can also download packages from archives maintained by
29 third parties.  @xref{Package Installation}.
31   For information about turning an Emacs Lisp program into an
32 installable package, @xref{Packaging,,,elisp, The Emacs Lisp Reference
33 Manual}.
35 @menu
36 * Package Menu::         Buffer for viewing and managing packages.
37 * Package Installation:: Options for package installation.
38 * Package Files::        Where packages are installed.
39 @end menu
41 @node Package Menu
42 @section The Package Menu Buffer
43 @cindex package menu
44 @cindex built-in package
45 @findex list-packages
47 The command @kbd{M-x list-packages} brings up the @dfn{package menu}.
48 This is a buffer listing all the packages that Emacs knows about, one
49 on each line, with the following information:
51 @itemize @bullet
52 @item
53 The package name (e.g., @samp{auctex}).
55 @item
56 The package's version number (e.g., @samp{11.86}).
58 @item
59 The package's status---normally one of @samp{available} (can be
60 downloaded from the package archive), @samp{installed},
61 @c @samp{unsigned} (installed, but not signed; @pxref{Package Signing}),
62 or @samp{built-in} (included in Emacs by default).
64 The status can also be @samp{new}.  This is equivalent to
65 @samp{available}, except that it means the package became newly
66 available on the package archive after your last invocation of
67 @kbd{M-x list-packages}.  In other instances, a package may have the
68 status @samp{held}, @samp{disabled}, or @samp{obsolete}.
69 @xref{Package Installation}.
71 @item
72 A short description of the package.
73 @end itemize
75 @noindent
76 The @code{list-packages} command accesses the network, to retrieve the
77 list of available packages from the package archive server.  If the
78 network is unavailable, it falls back on the most recently retrieved
79 list.
81 The following commands are available in the package menu:
83 @table @kbd
84 @item h
85 Print a short message summarizing how to use the package menu
86 (@code{package-menu-quick-help}).
88 @item ?
89 @itemx @key{RET}
90 Display a help buffer for the package on the current line
91 (@code{package-menu-describe-package}), similar to the help window
92 displayed by the @kbd{C-h P} command (@pxref{Packages}).
94 @item i
95 Mark the package on the current line for installation
96 (@code{package-menu-mark-install}).  If the package status is
97 @samp{available}, this adds an @samp{I} character to the start of the
98 line; typing @kbd{x} (see below) will download and install the
99 package.
101 @item d
102 Mark the package on the current line for deletion
103 (@code{package-menu-mark-delete}).  If the package status is
104 @samp{installed}, this adds a @samp{D} character to the start of the
105 line; typing @kbd{x} (see below) will delete the package.
106 @xref{Package Files}, for information about what package deletion
107 entails.
109 @item u
110 Remove any installation or deletion mark previously added to the
111 current line by an @kbd{i} or @kbd{d} command.
113 @item U
114 Mark all package with a newer available version for ``upgrading''
115 (@code{package-menu-mark-upgrades}).  This places an installation mark
116 on the new available versions, and a deletion mark on the old
117 installed versions.
119 @item x
120 Download and install all packages marked with @kbd{i}, and their
121 dependencies; also, delete all packages marked with @kbd{d}
122 (@code{package-menu-execute}).  This also removes the marks.
124 @item r
125 Refresh the package list (@code{package-menu-refresh}).  This fetches
126 the list of available packages from the package archive again, and
127 recomputes the package list.
129 @item f
130 Filter the package list (@code{package-menu-filter}).  This prompts
131 for a keyword (e.g., @samp{games}), then shows only the packages
132 that relate to that keyword.  To restore the full package list,
133 type @kbd{q}.
134 @end table
136 @noindent
137 For example, you can install a package by typing @kbd{i} on the line
138 listing that package, followed by @kbd{x}.
140 @node Package Installation
141 @section Package Installation
143 @findex package-install
144   Packages are most conveniently installed using the package menu
145 (@pxref{Package Menu}), but you can also use the command @kbd{M-x
146 package-install}.  This prompts for the name of a package with the
147 @samp{available} status, then downloads and installs it.
149 @cindex package requirements
150   A package may @dfn{require} certain other packages to be installed,
151 because it relies on functionality provided by them.  When Emacs
152 installs such a package, it also automatically downloads and installs
153 any required package that is not already installed.  (If a required
154 package is somehow unavailable, Emacs signals an error and stops
155 installation.)  A package's requirements list is shown in its help
156 buffer.
158 @vindex package-archives
159   By default, packages are downloaded from a single package archive
160 maintained by the Emacs developers.  This is controlled by the
161 variable @code{package-archives}, whose value is a list of package
162 archives known to Emacs.  Each list element must have the form
163 @code{(@var{id} . @var{location})}, where @var{id} is the name of a
164 package archive and @var{location} is the @acronym{HTTP} address or
165 directory name of the package archive.  You can alter this list if you
166 wish to use third party package archives---but do so at your own risk,
167 and use only third parties that you think you can trust!
169 @anchor{Package Signing}
170 @cindex package security
171 @cindex package signing
172   The maintainers of package archives can increase the trust that you
173 can have in their packages by @dfn{signing} them.  They generate a
174 private/public pair of cryptographic keys, and use the private key to
175 create a @dfn{signature file} for each package.  With the public key, you
176 can use the signature files to verify who created the package, and
177 that it has not been modified.  A valid signature is not a cast-iron
178 guarantee that a package is not malicious, so you should still
179 exercise caution.  Package archives should provide instructions
180 on how you can obtain their public key.  One way is to download the
181 key from a server such as @url{http://pgp.mit.edu/}.
182 Use @kbd{M-x package-import-keyring} to import the key into Emacs.
183 Emacs stores package keys in the @file{gnupg} subdirectory
184 of @code{package-user-dir}.
185 The public key for the GNU package archive is distributed with Emacs,
186 in the @file{etc/package-keyring.gpg}.  Emacs uses it automatically.
188 @vindex package-check-signature
189 @vindex package-unsigned-archives
190   If the user option @code{package-check-signature} is non-@code{nil},
191 Emacs attempts to verify signatures when you install packages.  If the
192 option has the value @code{allow-unsigned}, you can still install a
193 package that is not signed.  If you use some archives that do not sign
194 their packages, you can add them to the list @code{package-unsigned-archives}.
196   For more information on cryptographic keys and signing,
197 @pxref{Top,, Top, gnupg, The GNU Privacy Guard Manual}.
198 Emacs comes with an interface to GNU Privacy Guard,
199 @pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}.
201 @vindex package-pinned-packages
202   If you have more than one package archive enabled, and some of them
203 offer different versions of the same package, you may find the option
204 @code{package-pinned-packages} useful.  You can add package/archive
205 pairs to this list, to ensure that the specified package is only ever
206 downloaded from the specified archive.
208   Once a package is downloaded and installed, it is @dfn{loaded} into
209 the current Emacs session.  Loading a package is not quite the same as
210 loading a Lisp library (@pxref{Lisp Libraries}); its effect varies
211 from package to package.  Most packages just make some new commands
212 available, while others have more wide-ranging effects on the Emacs
213 session.  For such information, consult the package's help buffer.
215   By default, Emacs also automatically loads all installed packages in
216 subsequent Emacs sessions.  This happens at startup, after processing
217 the init file (@pxref{Init File}).  As an exception, Emacs does not
218 load packages at startup if invoked with the @samp{-q} or
219 @samp{--no-init-file} options (@pxref{Initial Options}).
221 @vindex package-enable-at-startup
222   To disable automatic package loading, change the variable
223 @code{package-enable-at-startup} to @code{nil}.
225 @findex package-initialize
226   The reason automatic package loading occurs after loading the init
227 file is that user options only receive their customized values after
228 loading the init file, including user options which affect the
229 packaging system.  In some circumstances, you may want to load
230 packages explicitly in your init file (usually because some other code
231 in your init file depends on a package).  In that case, your init file
232 should call the function @code{package-initialize}.  It is up to you
233 to ensure that relevant user options, such as @code{package-load-list}
234 (see below), are set up prior to the @code{package-initialize} call.
235 You should also set @code{package-enable-at-startup} to @code{nil}, to
236 avoid loading the packages again after processing the init file.
237 Alternatively, you may choose to completely inhibit package loading at
238 startup, and invoke the command @kbd{M-x package-initialize} to load
239 your packages manually.
241 @vindex package-load-list
242   For finer control over package loading, you can use the variable
243 @code{package-load-list}.  Its value should be a list.  A list element
244 of the form @code{(@var{name} @var{version})} tells Emacs to load
245 version @var{version} of the package named @var{name}.  Here,
246 @var{version} should be a version string (corresponding to a specific
247 version of the package), or @code{t} (which means to load any
248 installed version), or @code{nil} (which means no version; this
249 ``disables'' the package, preventing it from being loaded).  A list
250 element can also be the symbol @code{all}, which means to load the
251 latest installed version of any package not named by the other list
252 elements.  The default value is just @code{'(all)}.
254   For example, if you set @code{package-load-list} to @code{'((muse
255 "3.20") all)}, then Emacs only loads version 3.20 of the @samp{muse}
256 package, plus any installed version of packages other than
257 @samp{muse}.  Any other version of @samp{muse} that happens to be
258 installed will be ignored.  The @samp{muse} package will be listed in
259 the package menu with the @samp{held} status.
261 @node Package Files
262 @section Package Files and Directory Layout
263 @cindex package directory
265 @cindex package file
266 @findex package-install-file
267   Each package is downloaded from the package archive in the form of a
268 single @dfn{package file}---either an Emacs Lisp source file, or a tar
269 file containing multiple Emacs Lisp source and other files.  Package
270 files are automatically retrieved, processed, and disposed of by the
271 Emacs commands that install packages.  Normally, you will not need to
272 deal directly with them, unless you are making a package
273 (@pxref{Packaging,,,elisp, The Emacs Lisp Reference Manual}).  Should
274 you ever need to install a package directly from a package file, use
275 the command @kbd{M-x package-install-file}.
277 @vindex package-user-dir
278   Once installed, the contents of a package are placed in a
279 subdirectory of @file{~/.emacs.d/elpa/} (you can change the name of
280 that directory by changing the variable @code{package-user-dir}).  The
281 package subdirectory is named @file{@var{name}-@var{version}}, where
282 @var{name} is the package name and @var{version} is its version
283 string.
285 @cindex system-wide packages
286 @vindex package-directory-list
287   In addition to @code{package-user-dir}, Emacs looks for installed
288 packages in the directories listed in @code{package-directory-list}.
289 These directories are meant for system administrators to make Emacs
290 packages available system-wide; Emacs itself never installs packages
291 there.  The package subdirectories for @code{package-directory-list}
292 are laid out in the same way as in @code{package-user-dir}.
294   Deleting a package (@pxref{Package Menu}) involves deleting the
295 corresponding package subdirectory.  This only works for packages
296 installed in @code{package-user-dir}; if told to act on a package in a
297 system-wide package directory, the deletion command signals an error.