]> code.delx.au - gnu-emacs/blob - doc/emacs/package.texi
19d861a83955ae2149ad3c761732511db12bf3d1
[gnu-emacs] / doc / emacs / package.texi
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
11
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.
16
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}.
20
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.
25
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}.
30
31 For information about turning an Emacs Lisp program into an
32 installable package, @xref{Packaging,,,elisp, The Emacs Lisp Reference
33 Manual}.
34
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
40
41 @node Package Menu
42 @section The Package Menu Buffer
43 @cindex package menu
44 @cindex built-in package
45 @findex list-packages
46
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:
50
51 @itemize @bullet
52 @item
53 The package name (e.g., @samp{auctex}).
54
55 @item
56 The package's version number (e.g., @samp{11.86}).
57
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).
63
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}.
70
71 @item
72 A short description of the package.
73 @end itemize
74
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.
80
81 The following commands are available in the package menu:
82
83 @table @kbd
84 @item h
85 Print a short message summarizing how to use the package menu
86 (@code{package-menu-quick-help}).
87
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}).
93
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.
100
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.
108
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.
112
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.
118
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.
123
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.
128
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
135
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}.
139
140 @node Package Installation
141 @section Package Installation
142
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.
148
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.
157
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!
168
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.
187
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}.
195
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}.
200
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.
207
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.
214
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}).
220
221 @vindex package-enable-at-startup
222 To disable automatic package loading, change the variable
223 @code{package-enable-at-startup} to @code{nil}.
224
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 This will automatically 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.
240
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)}.
253
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.
260
261 @node Package Files
262 @section Package Files and Directory Layout
263 @cindex package directory
264
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}.
276
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.
284
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}.
293
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.