import -ko -b 1.1.3 XEmacs XEmacs-21_2 r21-2-35
[chise/xemacs-chise.git.1] / man / xemacs / packages.texi
1 @node Packages, Abbrevs, Running, Top
2 @comment  node-name,  next,  previous,  up
3
4 @section Packages
5 @cindex packages
6
7 The XEmacs 21 distribution comes only with a very basic set of
8 built-in modes and packages.  Most of the packages that were part of
9 the distribution of earlier versions of XEmacs are now available
10 separately.  The installer as well as the user can choose which
11 packages to install; the actual installation process is easy.
12 This gives an installer the ability to tailor an XEmacs installation for
13 local needs with safe removal of unnecessary code.
14
15 @menu
16 * Package Terminology:: Understanding different kinds of packages.
17 * Using Packages::      How to install and use packages.
18 * Building Packages::   Building packages from sources.
19 @end menu
20
21 @node Package Terminology, Using Packages, , Packages
22 @comment  node-name,  next,  previous,  up
23
24 @subsection Package Flavors
25
26 There are two main flavors of packages.
27
28 @itemize @bullet
29 @item Regular Packages
30 @cindex regular packages
31 A regular package is one in which multiple files are involved and one
32 may not in general safely remove any of them.
33
34 @item Single-File Packages
35 @cindex single-file packages
36 A single-file package is an aggregate collection of thematically
37 related but otherwise independent lisp files.  These files are bundled 
38 together for download convenience and individual files may be deleted at
39 will without any loss of functionality.
40 @end itemize
41
42 @subsection Package Distributions
43
44 XEmacs Lisp packages are distributed in two ways, depending on the
45 intended use.  Binary Packages are for installers and end-users and may
46 be installed directly into an XEmacs package directory.  Source Packages
47 are for developers and include all files necessary for rebuilding
48 bytecompiled lisp and creating tarballs for distribution.
49
50 @subsection Binary Packages
51 @cindex binary packages
52 Binary packages may be installed directly into an XEmacs package
53 hierarchy.
54
55 @subsection Source Packages
56 @cindex source packages
57 Source packages contain all of the Package author's (where appropriate
58 in regular packages) source code plus all of the files necessary to
59 build distribution tarballs (Unix Tar format files, gzipped for space
60 savings).
61
62 @node Using Packages, Building Packages, Package Terminology, Packages
63 @comment  node-name,  next,  previous,  up
64
65 @subsection Getting Started
66
67 When you first download XEmacs 21, you will usually first grab the
68 @dfn{core distribution},
69 @cindex core distribution
70 a file called
71 @file{xemacs-21.0.tar.gz}. (Replace the @t{21.0} by the current version
72 number.)  The core distribution contains the sources of XEmacs and a
73 minimal set of Emacs Lisp files, which are in the subdirectory named
74 @file{lisp}.  This subdirectory used to contain all Emacs Lisp files
75 distributed with XEmacs.  Now, to conserve disk space, most
76 non-essential packages were made optional.
77
78 @subsection Choosing the Packages You Need
79
80 The available packages can currently be found in the same ftp directory
81 where you grabbed the core distribution from, and are located in the
82 subdirectory @file{packages/binary-packages}.  Package file names follow
83 the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
84
85 If you have EFS @ref{(EFS)}, packages can be installed over the network.
86 Alternatively, if you have copies of the packages locally, you can
87 install packages from a local disk or CDROM.
88
89 The file @file{etc/PACKAGES} in the core distribution contains a list of
90 the packages available at the time of the XEmacs release.  Packages are
91 also listed on the @code{Options} menu under:
92
93 @example
94         Options->Customize->Emacs->Packages
95 @end example
96
97 However, don't select any of these menu picks unless you actually want 
98 to install the given package (and have properly configured your system 
99 to do so).
100
101 You can also get a list of available packages, and whether or not they
102 are installed, using the visual package browser and installer.  You can
103 access it via the menus:
104
105 @example
106         Options->Manage Packages->List & Install
107 @end example
108
109 Or, you can get to it via the keyboard:
110
111 @example
112 M-x pui-list-packages
113 @end example
114
115 Hint to system administrators of multi-user systems: it might be a good
116 idea to install all packages and not interfere with the wishes of your
117 users.
118
119 If you can't find which package provides the feature you require, try
120 using the @code{package-get-package-provider} function. Eg., if you know 
121 that you need @code{thingatpt}, type:
122
123 @example
124 M-x package-get-package-provider RET thingatpt
125 @end example
126
127 which will return something like (fsf-compat "1.06"). You can the use
128 one of the methods above for installing the package you want.
129
130 @subsection XEmacs and Installing Packages
131
132 Normally, packages are installed over the network, using EFS
133 @ref{(EFS)}.  However, you may not have network access, or you may
134 already have some or all of the packages on a local disk, such as a
135 CDROM.  If you want to install from a local disk, you must first tell
136 XEmacs where to find the package binaries.  This is done by adding a line
137 like the following to your init file:
138
139 @example
140 (setq package-get-remote (cons (list nil "/my/path/to/package/binaries")
141                                package-get-remote))
142 @end example
143
144 @xref{Init File}.
145
146 Here, you'd change @file{/my/path/to/package/binaries} to be the path
147 to your local package binaries.  Next, restart XEmacs, and you're ready
148 to go (advanced users can just re-evaluate the sexp).
149
150 If you are installing from a temporary, one-time directory, you can also 
151 add these directory names to @code{package-get-remote} using:
152
153 @example
154         M-x pui-add-install-directory
155 @end example
156
157 Note, however, that any directories added using this function are not
158 saved; this information will be lost when you quit XEmacs.
159
160 If you're going to install over the network, you only have to insure
161 that EFS @ref{(EFS)} works, and that it can get outside a firewall, if
162 you happen to be behind one.  You shouldn't have to do anything else;
163 XEmacs already knows where to go. However you can add your own mirrors
164 to this list. See @code{package-get-remote}.
165
166 The easiest way to install a package is to use the visual package
167 browser and installer, using the menu pick:
168
169 @example
170         Options->Manage Packages->List & Install
171 @end example
172 or
173 @example
174         Options->Manage Packages->Using Custom->Select-> ...
175 @end example
176
177 You can also access it using the keyboard:
178
179 @example
180 M-x pui-list-packages
181 @end example
182
183 The visual package browser will then display a list of all packages.
184 Help information will be displayed at the very bottom of the buffer; you
185 may have to scroll down to see it.  You can also press @kbd{?} to get
186 the same help.  From this buffer, you can tell the package status by the
187 character in the first column:
188
189 @table @kbd
190 @item -
191 The package has not been installed.
192 @item *
193 The package has been installed, but a newer version is available.  The
194 current version is out-of-date.
195 @item +
196 The package has been marked for installation/update.
197 @end table
198
199 If there is no character in the first column, the package has been
200 installed and is up-to-date.
201
202 From here, you can select or unselect packages for installation using
203 the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
204 the (Popup) Menu.
205 Once you've finished selecting the packages, you can
206 press the @kbd{x} key (or use the menu) to actually install the
207 packages. Note that you will have to restart XEmacs for XEmacs to
208 recognize any new packages.
209
210 Key summary:
211
212 @table @kbd
213 @item ?
214 Display simple help.
215 @item @key{RET}
216 @itemx @key{Mouse-2}
217 Toggle between selecting and unselecting a package for installation.
218 @item x
219 Install selected packages.
220 @item @key{SPC}
221 View, in the minibuffer, additional information about the package, such
222 as the package date (not the build date) and the package author.  Moving 
223 the mouse over a package name will also do the same thing.
224 @item v
225 Toggle between verbose and non-verbose package display.
226 @item g
227 Refresh the package display.
228 @item q
229 Kill the package buffer.
230 @end table
231
232 Moving the mouse over a package will also cause additional information
233 about the package to be displayed in the minibuffer.
234
235 @subsection Other package installation interfaces
236
237 For an alternative package interface, you can select packages from the
238 customize menus, under:
239
240 @example
241         Options->Customize->Emacs->Packages-> ...
242 @end example
243 or
244 @example
245         Options->Manage Packages->Using Custom->Select-> ...
246 @end example
247
248 Set their state to on, and then do:
249
250 @example
251         Options->Manage Packages->Using Custom->Update Packages
252 @end example
253
254 This will automatically retrieve the packages you have selected from the
255 XEmacs ftp site or your local disk, and install them into
256 XEmacs.  Additionally it will update any packages you already have
257 installed to the newest version.  Note that if a package is newly
258 installed you will have to restart XEmacs for the change to take effect.
259
260 You can also install packages using a semi-manual interface:
261
262 @example
263 M-x package-get-all <return>
264 @end example
265
266 Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
267 will search for the latest version (as listed in the lisp file
268 @file{lisp/package-get-base.el}), and install it and any packages that
269 it depends upon.
270
271 @subsection Manual Binary Package Installation
272
273 Pre-compiled, binary packages can be installed in either a system
274 package directory (this is determined when XEmacs is compiled), or in
275 one of the following
276 subdirectories of your @file{$HOME} directory:
277
278 @example
279 ~/.xemacs/mule-packages
280 ~/.xemacs/xemacs-packages
281 @end example
282
283 Packages in the former directory will only be found by a Mule-enabled
284 XEmacs.
285
286 XEmacs does not have to be running to install binary packages, although
287 XEmacs will not know about any newly-installed packages until you
288 restart XEmacs.  Note, however, that installing a newer version of a
289 package while XEmacs is running could cause strange errors in XEmacs;
290 it's best to exit XEmacs before upgrading an existing package.
291
292 To install binary packages manually:
293
294 @enumerate
295 @item
296 Download the package(s) that you want to install.  Each binary package
297 will typically be a gzip'd tarball.
298
299 @item
300 Decide where to install the packages: in the system package
301 directory, or in @file{~/.xemacs/mule-packages} or
302 @file{~/.xemacs/xemacs-packages}, respectively.  If you want to install
303 the packages in the system package directory, make sure you can write
304 into that directory.  If you want to install in your @file{$HOME}
305 directory, create the directory, @file{~/.xemacs/mule-packages} or
306 @file{~/.xemacs/xemacs-packages}, respectively.
307
308 @item
309 Next, @code{cd} to the directory under which you want to install the
310 package(s).
311
312 @item
313 From this directory, uncompress and extract each of the gzip'd tarballs
314 that you downloaded in step 1.  Unix and Cygnus cygwin users will
315 typically do this using the commands:
316
317 @example
318         gunzip < package.tar.gz | tar xvf -
319 @end example
320
321 Above, replace @file{package.tar.gz} with the filename of the
322 package that you downloaded in step 1.
323
324 Of course, if you use GNU @code{tar}, you could also use:
325
326 @example
327         tar xvzf package.tar.gz
328 @end example
329
330 @comment What about native MS Windows users???
331
332 @item
333 That's it.  Quit and restart XEmacs to get it to recognize any new or
334 changed packages.
335
336 @end enumerate
337
338 @node Building Packages, , Using Packages, Packages
339 @comment  node-name,  next,  previous,  up
340
341 Source packages are available from the @file{packages/source-packages}
342 subdirectory of your favorite XEmacs distribution site.  Alternatively,
343 they are available via CVS from @file{cvs.xemacs.org}.  Look at
344 @file{http://cvs.xemacs.org} for instructions.
345
346 @subsection Prerequisites for Building Source Packages
347
348 You must have GNU @code{cp}, GNU @code{install} (or a BSD compatible
349 @code{install} program) GNU @code{make} (3.75 or later preferred),
350 @code{makeinfo} (1.68 from @code{texinfo-3.11} or later required), GNU
351 @code{tar} and XEmacs 21.0.  The source packages will untar into a
352 correct directory structure.  At the top level you must have
353 @file{XEmacs.rules} and @file{package-compile.el}.  These files are
354 available from the XEmacs FTP site from the same place you obtained your
355 source package distributions.
356
357 @subsection What You Can Do With Source Packages
358
359 NB:  A global build operation doesn't exist yet as of 13 January 1998.
360
361 Source packages are most useful for creating XEmacs package tarballs
362 for installation into your own XEmacs installations or for
363 distributing to others.
364
365 Supported operations from @file{make} are:
366
367 @table @code
368 @item clean
369 Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
370
371 @item distclean
372 Remove XEmacs backups as well as the files deleted by @code{make clean}.
373
374 @item all
375 Bytecompile all files, build and bytecompile byproduct files like
376 @file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
377 of TeXinfo documentation if present.
378
379 @item srckit
380 Usually aliased to @code{make srckit-std}.  This does a @code{make
381 distclean} and creates a package source tarball in the staging
382 directory.  This is generally only of use for package maintainers.
383
384 @item binkit
385 May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
386 @code{binkit-sourcedata}, or
387 @code{binkit-sourcedatainfo}. @code{sourceonly} indicates there is
388 nothing to install in a data directory or info directory.
389 @code{sourceinfo} indicates that source and info files are to be
390 installed.  @code{sourcedata} indicates that source and etc (data) files
391 are to be installed.  @code{sourcedatainfo} indicates source, etc
392 (data), and info files are to be installed.  A few packages have needs
393 beyond the basic templates so this is not yet complete.
394
395 @item dist
396 Runs the rules @code{srckit} followed by @code{binkit}.  This is
397 primarily of use by XEmacs maintainers producing files for distribution.
398
399 @end table