Mercurial > hg > xemacs-beta
diff man/gnats/p-inst.texi @ 112:48d667d6f17f r20-1b8
Import from CVS: tag r20-1b8
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:20:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/gnats/p-inst.texi Mon Aug 13 09:20:48 2007 +0200 @@ -0,0 +1,698 @@ +@c remember to put in the autoload stuff!!!! see the .el files + +@c This file is included as an appendix in gnats.texi. + +@cindex installing GNATS +@cindex configuring GNATS +@cindex setting up GNATS +@cindex building GNATS + +@xref{Locations,,Where the tools and utilities reside}. + +There are several steps you need to follow to fully configure and +install @sc{gnats} on your system. You need @code{root} access in order +to create a new account for @code{gnats} and to install the @sc{gnats} +utilities. You may need @code{root} access on some systems in order to +set mail aliases in place and to allow this new account access to +@code{cron} and @code{at}. + +If you are updating an older version of @sc{gnats} rather than installing +from scratch, see @ref{Upgrading,,Upgrading from older versions}. + +To build @sc{gnats}, you must: + +@itemize @bullet +@item +Run @code{configure}, with correct options if the defaults are +unsuitable for your site. @xref{Configure and make,,Configuring and +compiling the software}. Default installation locations are in +@ref{Locations,,Where @sc{gnats} lives}. + +@item +Compile the @sc{gnats} programs on your system. @xref{Configure and +make,,Configuring and compiling the software}. + +@item +Install the @sc{gnats} tools and utilities locally, and install the user +tools on every machine in your local network. @xref{Installing +utils,,Installing the utilities}. + +@item +Set up mail aliases for @sc{gnats}. @xref{Aliases,,Setting up mail +aliases}. + +@item +Install the @sc{gnats} user tools (@code{query-pr}, @code{nquery-pr}, @code{edit-pr}, +@code{send-pr}) around your network. @xref{Installing tools,,Installing +the user tools}. + +@item +Install the @sc{gnats} daemon @file{gnatsd}. + +@item +Update the local configuration files + +@smallexample +config categories submitters responsible gnatsd.conf +@end smallexample + +@noindent +in @w{@file{@var{GNATS_ROOT}/gnats-adm}}. @xref{Local +configuration,,Changing your local configuration}. + +@item +Create a distribution of @code{send-pr} for submitters outside your +organization. @xref{mkdist,,Configuring @code{send-pr} for the outside +world}. +@end itemize + +@menu +* Configure and make:: Configuring and compiling the software +* Installing utils:: Installing the utilities +* Aliases:: Setting up mail aliases +* Installing the daemon:: Installing the daemon +* Installing tools:: Installing the user tools +* Upgrading:: Upgrading from older versions +@end menu + +@node Configure and make +@section Configuring and compiling the software +@cindex unpacking the distribution +@cindex configuring and compiling the software +@cindex compiling the software +@cindex @code{configure} +@cindex @code{make} + +@enumerate 1 +@item +First, unpack your distribution. We provide source code in a @code{tar} +file which was compressed using @code{gzip}. The code can be extracted +into a directory @var{unpackdir} using + +@smallexample +mkdir @var{unpackdir} +cd @var{unpackdir} +tar zxvf gnats-@value{VERSION}.tar.z +@end smallexample + +The sources reside in a directory called @file{gnats-@value{VERSION}} +when unpacked. We call this the @dfn{top level} of the source +directory, or @dfn{srcdir}. The sources for the @sc{gnats} tools are in +the subdirectory @file{gnats-@value{VERSION}/gnats/*}. Lists of files +included in the distribution are in each directory in the file +@file{MANIFEST}. + +@cindex lisp file installation +@cindex Emacs lisp file installation +@item +You may wish to alter the installation directory for the Emacs lisp +files. If your Emacs lisp library is not in +@w{@file{@var{prefix}/lib/emacs/lisp}}, edit the files + +@smallexample +@var{srcdir}/gnats/Makefile.in @emph{and} +@var{srcdir}/send-pr/Makefile.in +@end smallexample + +@noindent +Change the variable @samp{lispdir} from @samp{$(datadir)/emacs/lisp} to +the directory containing your Emacs lisp library. For information on +@var{prefix}, see @ref{prefix,,@var{prefix}}. + +@item +Run @code{configure}. You can nearly always run @code{configure} with +the command + +@example +./configure --with-full-gnats +@end example + +@noindent +and the ``Right Thing'' happens: + +@itemize @bullet +@item +@sc{gnats} is configured in the same directory you unpacked it in; + +@item +when built, @sc{gnats} runs on the machine you're building it on; + +@item +when installed, files are installed under @file{/usr/local} +(@pxref{Locations,,Where @sc{gnats} lives}). + +@item +@sc{gnats} operates by default behavior (@pxref{default behavior,,Default +behavior}). +@end itemize + +@cindex @code{configure} +The full usage for @code{configure} is: + +@smallexample +configure [ --with-full-gnats ] + [ --prefix=@var{prefix} ] + [ --exec-prefix=@var{exec-prefix} ] + [ --with-gnats-root=@w{@var{GNATS_ROOT}} ] + [ --with-gnats-server=@w{@var{hostname}} ] + [ --with-gnats-service=@w{@var{service-name}} ] + [ --with-gnats-user=@w{@var{username}} ] + [ --with-gnats-port=@w{@var{port-number}} ] + [ --verbose ] +@end smallexample + +@table @code +@cindex @code{with-full-gnats} +@item --with-full-gnats +All programs are to be built; this includes the user utilities, the +administrative utilities, and the internal utilities. Use this when +configuring the utilities for the machine where @sc{gnats} is to run. +Omit it when building only the user utilities for other machines on your +network; see @ref{Installing tools,,Installing the user tools}. + +@cindex @var{prefix} +@item --prefix=@var{prefix} +All host-independent programs and files are to be installed under +@var{prefix}. (Host-dependent programs and files are also installed in +@var{prefix} by default.) The default for @var{prefix} is +@w{@file{/usr/local}}. @xref{Locations,,Where @sc{gnats} lives}. + +@cindex @var{exec-prefix} +@item --exec-prefix=@var{exec-prefix} +All host-dependent programs and files are to be installed under +@var{exec-prefix}. The default for @var{exec-prefix} is @var{prefix}. +@xref{Locations,,Where @sc{gnats} lives}. + +@cindex @var{GNATS_ROOT} +@item --with-gnats-root=@w{@var{GNATS_ROOT}} +The database and its data files are to be installed into +@w{@var{GNATS_ROOT}}. The default for @w{@var{GNATS_ROOT}} is +@w{@file{@var{prefix}/lib/gnats/gnats-db}}. @xref{Locations,,Where +@sc{gnats} lives}. + +@cindex --with-gnats-server +@item --with-gnats-root=@w{hostname} +FIXME + +@cindex --with-gnats-service +@item --with-gnats-root=@w{@var{service-name}} +FIXME + +@cindex --with-gnats-user +@item --with-gnats-user=@w{@var{username}} +FIXME + +@cindex --with-gnats-port +@item --with-gnats-port=@w{@var{port-number}} +FIXME + +@item --verbose +Give verbose output while @code{configure} runs. +@end table + +@xref{Using configure,,Using @code{configure},configure,Cygnus +configure}. + +@cindex building in a different directory +@cindex @var{objdir} +You can build @sc{gnats} in a different directory (@var{objdir}) from the +source code by calling the @code{configure} program from the new +directory, as in + +@smallexample +mkdir @var{objdir} +cd @var{objdir} +@var{srcdir}/configure @dots{} +make all +@end smallexample + +By default, @code{configure} compiles the programs in the same directory +as the sources (@var{srcdir}). Emacs lisp files are byte-compiled if +@code{make} can find Emacs on your local system. + +@item +Run + +@smallexample +make all info +@end smallexample + +@noindent +from the directory where @code{configure} created a @file{Makefile}. +(This may not be the same directory as the source directory.) These +targets indicate: + +@table @code +@item all +Compile all programs + +@item info +Create @samp{info} files using @code{makeinfo}. +@end table +@end enumerate + +@node Installing utils +@section Installing the utilities +@cindex installing the utilities + +The following steps are necessary for a complete installation. You may +need @code{root} access for these. + +@enumerate 1 +@item +Install the utilities by +invoking + +@smallexample +make install install-info +@end smallexample + +These targets indicate: + +@table @code +@item install +Installs all programs into their configured locations +(@pxref{Locations,,Where @sc{gnats} lives}). + +@item install-info +Installs @samp{info} files into their configured locations +(@pxref{Locations,,Where @sc{gnats} lives}). +@end table + +After you have installed @sc{gnats}, you can remove the object files with + +@smallexample +make clean +@end smallexample + +@cindex @code{autoload} commands +@cindex loading @code{.el} files +@cindex Emacs functions +@item +Place the following lines in the file @file{default.el} in your Emacs +lisp library, or instruct your local responsible parties to place the +lines in their local editions of @file{.emacs}: + +@smallexample +(autoload 'edit-pr "gnats" + "Command to edit a problem report." t) +(autoload 'view-pr "gnats" + "Command to view a problem report." t) +(autoload 'unlock-pr "gnats" + "Unlock a problem report." t) +(autoload 'query-pr "gnats" + "Command to query information about problem reports." t) +(autoload 'send-pr-mode "send-pr" + "Major mode for sending problem reports." t) +(autoload 'send-pr "send-pr" + "Command to create and send a problem report." t) +@end smallexample + +Emacs lisp files are byte-compiled if @code{make} can find Emacs on your +local system. + + +@item +@cindex creating an account for @sc{gnats} +Create an account for a user named @sc{gnats}. This user must have an +entry in the file @file{/etc/passwd}. The home directory for this +account should be the same directory you specified for @var{GNATS_ROOT} +in the file @file{Makefile.in}. Also, the default @code{PATH} for this +user should contain @w{@file{@var{exec-prefix}/bin}} and +@w{@file{@var{exec-prefix}/lib/gnats}}. + +@cindex @code{cron} +@cindex @code{at} +@item +Allow the new user @code{gnats} access to @code{cron} and @code{at}. To +do this, add the name @code{gnats} to the files @w{@file{cron.allow}} and +@w{@file{at.allow}}, which normally reside in the directory +@w{@file{/var/spool/cron}}. If these files do not exist, make sure +@code{gnats} does not appear in either of the files @w{@file{cron.deny}} +and @w{@file{at.deny}} (in the same directory). + +@noindent +For the following steps, log in as @code{gnats}. + +@itemize @bullet +@item +Edit the files @file{categories}, @file{responsible}, and +@file{submitters} in the directory @w{@file{@var{GNATS_ROOT}/gnats-adm}} +(@pxref{Local configuration,,Changing your local configuration}) to +reflect your local needs. Be sure to run @code{mkcat} after you update +the @file{categories} file (@pxref{mkcat,,Adding a new problem +category}). @emph{Note:} these templates are not installed if they +already exist, i.e. if you are upgrading. @xref{Upgrading,,Upgrading +from older versions}. + +@item +If you wish to install the @sc{gnats} user tools on other machines on +your network, see @ref{Installing tools,,Installing the user tools}. +@end itemize + +@cindex @code{crontab} +@item +Create a @code{crontab} entry that periodically runs the program +@code{queue-pr} with the @samp{--run} option. For example, to run +@w{@samp{queue-pr --run}} every ten minutes, create a file called +@file{.mycron} in the home directory of the user @code{gnats} which +contains the line: + +@smallexample +0,10,20,30,40,50 * * * * @var{exec-prefix}/lib/gnats/queue-pr --run +@end smallexample + +@noindent +(Specify the full path name for @code{queue-pr}.) Then run + +@smallexample +crontab .mycron +@end smallexample + +@noindent +See the @code{man} pages for @code{cron} and @code{crontab} for details +on using @code{cron}. +@end enumerate + +@node Aliases +@section Setting up mail aliases +@cindex mail aliases +@cindex aliases + +The following mail aliases must be placed in the file +@w{@file{/etc/aliases}} on the same machine where the @sc{gnats} tools +are installed. You may need @code{root} access to add these aliases. + +@itemize @bullet +@item +@cindex @code{gnats-admin} alias +Create an alias for the @sc{gnats} administrator. This address should +point to the address of the person in charge of administrating +@sc{gnats}: + +@smallexample +gnats-admin: @var{address} +@end smallexample + +@item +@cindex bug alias +@cindex incoming alias for Problem Reports +@cindex alias for incoming Problem Reports +@cindex @code{queue-pr -q} +Create an alias to redirect incoming Problem Reports. This alias should +redirect incoming mail via a @dfn{pipe} to the program @w{@samp{queue-pr +-q}}. For example, if Problem Reports coming to your site are to arrive +at the address @samp{bugs@@your.company.com}, create an alias to the +effect of: + +@smallexample +bugs: "| @var{exec-prefix}/lib/gnats/queue-pr -q" +@end smallexample + +@noindent +This places incoming Problem Reports in +@w{@file{@var{GNATS_ROOT}/gnats-queue}}. + +@item +@cindex @var{site} alias +@cindex mail alias for your @emph{site} +@cindex alias for your @emph{site} +Create an alias for your site. This alias should be the same nametag +indicated by the variable @w{@samp{GNATS_SITE}} in the file +@w{@file{@var{GNATS_ROOT}/gnats-adm/config}} (@pxref{config,,The +@code{config} file}), with an added suffix @samp{-gnats}. This alias, +@w{@samp{@var{GNATS_SITE}-gnats}}, should point toward the local +submission address. For instance, if your site is Tofu Technologies, +the presence of @sc{gnats} on your @var{site} would be aliased as the +following (the previous example is also shown): + +@smallexample +bugs: "| @var{exec-prefix}/lib/gnats/queue-pr -q" +tofu-gnats: bugs +@end smallexample + +@noindent +The report submission utility @code{send-pr} automatically appends the +@samp{-gnats} to any arguments you specify (@pxref{send-pr,,Submitting +Problem Reports}). The @code{send-pr} which was installed when you +typed @w{@kbd{make install}} has a default argument of @var{GNATS_SITE}, +your site, so that when your local users simply type @kbd{send-pr} mail +is sent to your local @sc{gnats}. Part of the installation process a +Submitter Site follows when installing @code{send-pr} is to set up an +alias for the Support Site from whom this submitter received +@code{send-pr}. In other words, anyone you distribute @code{send-pr} to +is instructed to make an alias + +@smallexample +tofu-gnats: bugs@@tofu.com +@end smallexample + +@item +You may also wish to forward a copy of each incoming Problem Report to a +log. This can be accomplished with something like: + +@smallexample +bug-q: "| @var{exec-prefix}/lib/gnats/queue-pr -q" +bug-log: @var{GNATS_ROOT}/gnats-adm/bugs.log +bugs: bug-q, bug-log +@end smallexample + +@noindent +This configuration archives incoming Problem Reports in the file +@w{@file{@var{GNATS_ROOT}/gnats-adm/bug.log}}, and also feeds them to the +program @code{queue-pr}. (Remember, @file{bug.log} needs to be +world-writable, and should be pruned regularly; @pxref{Management,, +@sc{gnats} Administration}.) + +@item +If you want your users to be able to query the database by mail, use the +following alias: + +@smallexample +query-pr: "| @var{exec-prefix}/lib/gnats/mail-query" +@end smallexample + +@noindent +The @code{mail-query} program uses @samp{--restricted} to search on the +database, and by default only searches for PRs that aren't closed +(@pxref{query-pr,,Querying the database}). + +@end itemize + +@c --------------------------------------------------------------- +@node Installing the daemon +@section Installing the daemon +@cindex daemon +@cindex using @sc{gnats} over a network + +By default, the daemon and clients are set to use port 1529. Add the line + +@smallexample +support 1529/tcp # GNATS +@end smallexample + +@noindent +to your @file{/etc/services} file. If you want a different port, +or a different service name or port, configure @sc{gnats} with + +@smallexample +--with-gnats-service=@var{servicename} +--with-gnats-port=@var{portnumber} +@end smallexample + +In your @file{inetd.conf} file, add the line + +@smallexample +support stream tcp nowait gnats /usr/local/lib/gnats/gnatsd gnatsd +@end smallexample + +@noindent +adjusting the path accordingly. To make inetd start spawning the @sc{gnats} daemon +when connected on that port, send it a hangup signal (@code{HUP}). + +By default, the server for the @sc{gnats} daemon is assumed to be one with the +name of @samp{gnats}. If you'd like something else, use + +@smallexample +--with-gnats-server=@var{hostname} +@end smallexample + +In the @file{gnats-adm} directory, you'll want to edit @file{gnatsd.conf}. +It lists the hosts allowed to access your server. Or, if you're using +Kerberos, it shows the sites that don't require Kerberos authentication. +The format is reserved for future revision; only the first field is +actually used: + +@smallexample +site.com:: +@end smallexample + +@noindent +The second field may be used for things like controlling what +categories, submitter-id'd PRs, etc., can be accessed from that site. +In the file that logs syslog messages (@file{/var/adm/messages}, for +example) you'll find the notification of denied access. + + +@c --------------------------------------------------------------- +@node Installing tools +@section Installing the user tools +@cindex networks +@cindex using @sc{gnats} over a network +@cindex configuring @sc{gnats} on a network + +When you install the @sc{gnats} utilities, the user tools are installed +by default on the host machine. If your machine is part of a network, +however, you may wish to install the user tools on each machine in the +network so that responsible parties on those machines can submit new +Problem Reports, query the database, and edit existing PRs. To do this, +follow these steps @emph{on each new host}. You may need root access on +each machine. + +@enumerate 1 +@item +Make sure that the directory where @sc{gnats} resides is mounted to each +system that will need access to it, so @var{GNATS_ROOT} will be the same +for each host. (You can do this with symbolic links as well.) + +@item +Either mount the disk which contains your source directory, or make a +copy of the @sc{gnats} source code tree in a separate directory on each +system you wish to build on. + +@item +Run @code{configure}, @emph{without} specifying +@w{@samp{--with-full-gnats}}, and using the same argument (if any) for +the option + +@smallexample +--with-gnats-root=@var{GNATS_ROOT} +@end smallexample + +that you specified when building the @sc{gnats} utilites +(@pxref{Configure and make,,Configuring and compiling the software}). +You may use different values for the other options to @code{configure}. +Again, @emph{do not} use @w{@samp{--with-full-gnats}} at this point, as +that creates all the @sc{gnats} programs. Without this option, +@code{configure} only instructs the resulting @file{Makefile} to create +the user utilities. + +@exdent +@emph{You may need @code{root} access on each host for the following steps.} + +@item +@cindex creating an account for @sc{gnats} +Create an account for a user named @sc{gnats} on the new host. This user +must have an entry in the file @file{/etc/passwd}. The user ID for +@code{gnats} must be the same as on the main @sc{gnats} host. + +@item +Run + +@smallexample +make all info install install-info +@end smallexample + +@noindent +This builds and installs the @code{gnats} user tools @w{@code{query-pr}}, +@w{@code{edit-pr}}, and @w{@code{send-pr}} on the new host, and installs +them in @w{@file{@var{exec-prefix}/bin}} on the new host (@emph{Note:} +the value for @var{exec-prefix} on the new host may be different from +the value you used when building the @sc{gnats} utilities; +@pxref{exec-prefix,,@var{exec-prefix}}). The programs @code{pr-edit} +and @code{pr-addr} are installed into +@w{@file{@var{exec-prefix}/lib/gnats}}. + +@code{info} files are created as well, and are installed into +@w{@file{@var{prefix}/info}}. The Elisp files @file{gnats.el} and +@file{send-pr.el} (and possibly @file{gnats.elc} +if @code{make} was able to compile them using Emacs) are installed into +@w{@file{@var{prefix}/lib/emacs/lisp}} unless you change the +@samp{lispdir} variable in @file{Makefile.in} (@pxref{Configure and +make,,Configuring and compiling the software}). + +@cindex @code{autoload} commands +@cindex loading @code{.el} files +@cindex Emacs functions +@item +Add the following lines to the file @w{@file{default.el}} in the Emacs +lisp repository on the new host, or instruct your responsible parties +who use these hosts to add them to their @file{.emacs} files: + +@smallexample +(autoload 'edit-pr "gnats" + "Command to edit a problem report." t) +(autoload 'view-pr "gnats" + "Command to view a problem report." t) +(autoload 'unlock-pr "gnats" + "Unlock a problem report." t) +(autoload 'query-pr "gnats" + "Command to query information about problem reports." t) +(autoload 'send-pr-mode "send-pr" + "Major mode for sending problem reports." t) +(autoload 'send-pr "send-pr" + "Command to create and send a problem report." t) +@end smallexample + +@item +Copy the file @w{@file{@var{prefix}/lib/gnats/@var{site}}} from the +original host to the new host (which may have a different value for +@var{prefix}). This is the list of valid categories that +@w{@code{send-pr}} uses (@pxref{Locations,,Where @sc{gnats} lives}). +@var{site} is your local site, the value of @w{@samp{GNATS_SITE}} in the +@file{config} file (@pxref{config,,The @code{config} file}). + +@end enumerate + +@c --------------------------------------------------------------- +@node Upgrading +@section Upgrading from older versions +@cindex upgrading from older versions + +If you are upgrading from a previous release of @sc{gnats}, you probably +do not want to delete your current configuration files or your current +database. The new @sc{gnats} can be installed around the older version. + +You need to: + +@itemize @bullet +@item +Specify your current @var{GNATS_ROOT} on the command line to +@code{configure} when you build the new tools, with + +@smallexample +configure --with-full-gnats --with-gnats-root=@var{GNATS_ROOT} +@end smallexample + +@noindent +(@xref{Configure and make,,Configuring and compiling the software}.) + +@item +Remove the directory @w{@file{gnats-bin}} from @w{@var{GNATS_ROOT}}; it is +no longer used. + +@item +Update your current mail aliases to reflect that @w{@code{queue-pr}} now +resides in @w{@file{@var{exec-prefix}/lib/gnats}} rather than +@w{@file{@var{GNATS_ROOT}/gnats-bin}} (@pxref{Locations,,Where @sc{gnats} +lives}). + +@item +Change the default @code{PATH} for the @code{gnats} user to search the +directories @w{@file{@var{exec-prefix}/bin}} and +@w{@file{@var{exec-prefix}/lib/gnats}}. + +@item +Reinstall the @sc{gnats} user tools on all other hosts on your network +(@pxref{Installing tools,,Installing the user tools}). + +@item +Redistribute @code{send-pr} to your Submitter Sites +(@pxref{mkdist,,Configuring @code{send-pr} for the outside world}). +This is not absolutely necessary, as @sc{gnats} can read Problem Reports +generated by older versions of @code{send-pr}. It should be done +eventually, however, as @w{@code{send-pr}} is improved over older +verisons. + +@c FIXME - anything else? +@end itemize