*** empty log message ***
This commit is contained in:
245
sys/unix/Install.unx
Normal file
245
sys/unix/Install.unx
Normal file
@@ -0,0 +1,245 @@
|
||||
Instructions for installing NetHack 3.3
|
||||
on a UNIX system
|
||||
=======================================
|
||||
|
||||
0. Read this entire file before starting, and come back to the Notes
|
||||
below if you have any problems. If you are trying to use X11,
|
||||
also read all of win/X11/Install.X11, or read win/Qt/Install.Qt
|
||||
if you are using Qt or KDE under X11. For help in controlling
|
||||
and running the game after it is installed, see the '?' command
|
||||
within the game and doc/Guidebook (non-installers want to know
|
||||
about those things too).
|
||||
|
||||
1. Make sure all the NetHack files are in the appropriate directory
|
||||
structure. You should have a main directory with subdirectories
|
||||
dat, doc, include, src, util, sys/share, sys/unix, win/tty, win/X11,
|
||||
and win/Qt. You may have other subdirectories under sys and win,
|
||||
but they will not affect compilation for a UNIX system. If you do
|
||||
not follow this structure, the Makefiles will not function properly.
|
||||
The .c files for the main program belong in src, those for utility
|
||||
programs in util, and UNIX-specific ones in sys/unix. All the .h
|
||||
files belong in include, the documentation in doc, and assorted
|
||||
data files in dat. Some UNIX versions may also be interested in
|
||||
sys/share's random.c or its lex/yacc output, as explained in note 11.
|
||||
(A more detailed explanation of the directory structure may be found
|
||||
in Files, which should be in the top directory.)
|
||||
|
||||
2. Your Makefiles may still be in sys/unix with tags on the end of them.
|
||||
If so, run setup.sh in that directory to distribute the Makefiles to
|
||||
places they can do their work. (If later official patches change
|
||||
these Makefiles, setup.sh should be rerun to make sure you use the
|
||||
current copies.)
|
||||
|
||||
3. Go to the include subdirectory and edit config.h according to the
|
||||
comments to match your system and desired set of features. Similarly
|
||||
edit unixconf.h. Please see the "Notes:" section, below, for some
|
||||
configuration hints for particular systems.
|
||||
|
||||
4. If you want to, look through system.h. This file attempts to match the
|
||||
types for system calls and library routines with various flavors of
|
||||
operating systems. Leaving this file alone is unlikely to cause worse
|
||||
problems than lint errors, but it's worth checking if you get compile
|
||||
errors, especially if you have an unusual system.
|
||||
|
||||
5. Go to the src subdirectory and look at the top of topten.c. You may want
|
||||
to change the definitions of PERSMAX and PERS_IS_UID here to get different
|
||||
behavior from the high score list.
|
||||
|
||||
6. Edit the top sections of the src and util Makefiles. (If you are doing
|
||||
a full recompile, or if you got your files from someplace besides the
|
||||
official distribution, type 'touch makedefs.c' to make sure certain files
|
||||
(onames.h, pm.h) get remade instead of relying on the potentially
|
||||
troublesome timestamps.) Then type 'make' in src and go get a cup of
|
||||
coffee or take a nap, depending on the speed of your system. You should
|
||||
now have created the game executable.
|
||||
|
||||
7. Go back to the top directory and edit that Makefile, explaining where
|
||||
you want everything to be installed.
|
||||
|
||||
Make sure that you follow the comments about setting GAMEDIR -- the
|
||||
installation process will wipe out the contents of the directory you
|
||||
point it at, under the assumption that it's debris from an old version
|
||||
of NetHack. If this is not the case, you'll want to install somewhere
|
||||
else, or comment out the rm under the install target.
|
||||
|
||||
The Makefile assumes you want to run NetHack setuid 'games' to cut down
|
||||
on possible tampering; it's fairly straightforward to comment out the
|
||||
appropriate chmod if you don't want that, or to change any of the rest
|
||||
of the procedure. (Note that if you don't want to run NetHack either
|
||||
setuid or setgid, and people in more than one group will be playing it,
|
||||
you'll need to go back and set FCMASK to 0666 in unixconf.h and let
|
||||
everybody fiddle with the files NetHack creates.)
|
||||
|
||||
If the tbl, nroff or col commands are not available on your system,
|
||||
edit the doc/Makefile and change the GUIDECMD as directed.
|
||||
|
||||
Type 'make all' from the top directory to set up all the auxiliary
|
||||
files the main executable will use. Then become root if necessary and
|
||||
type 'make install'. Everything should now be set.
|
||||
|
||||
8. Read doc/recover.man or doc/recover.txt, and think about whether and
|
||||
how you want to install the recover program. If you decide to install
|
||||
it, type 'make recover' in the util directory and then install recover
|
||||
by hand in your desired manner.
|
||||
|
||||
Notes:
|
||||
|
||||
1. Save files and bones files from previous versions will not work with
|
||||
NetHack 3.3. Don't bother trying to keep them.
|
||||
|
||||
2. To install an update of this version of NetHack after changing something,
|
||||
type 'make update' from the main directory. If you created the new
|
||||
version yourself, it should be safe to use 'make update' as long as you
|
||||
did not add, delete, or reorder monsters or objects and you did not change
|
||||
the format of saved level files. If you did any of these things, you
|
||||
should also remove any saved games and bones levels. (Trying to use such
|
||||
files often produces amusing but useless confusions on the game's part.)
|
||||
|
||||
3. If you insisted on doing the final installation by hand, you probably
|
||||
forgot to make a save directory. If you don't go back and do this, you
|
||||
won't be able to save games.
|
||||
|
||||
4. If you get unexplained deaths by trickery, you are probably running
|
||||
NetHack on a bunch of workstations, but you have overlooked the NETWORK
|
||||
definition in unixconf.h that is necessary in that configuration.
|
||||
|
||||
5. If spurious characters appear on the screen while throwing, kicking,
|
||||
zapping, etc., it is likely that you have linked the source to the wrong
|
||||
library or mistakenly defined/undefined TERMINFO. A number of systems,
|
||||
such as Xenix, support both the termcap and terminfo terminal capability
|
||||
libraries. In such cases, the TERMINFO definition in unixconf.h and the
|
||||
WINTTYLIB definition in the source Makefile must correspond.
|
||||
|
||||
If your terminal library does not provide suitable delays, NetHack will
|
||||
try to fake its own if you set the nonull option.
|
||||
|
||||
6. Since NetHack overflows the stock C preprocessors for AT&T 3b1 and 3b2
|
||||
systems ("too many defines"), we are including an alternate preprocessor
|
||||
to allow these folks to compile. This is the DECUS cpp by Martin Minow,
|
||||
slightly modified by Kevin Darcy to use larger buffers, be less verbose,
|
||||
and handle strange constructs in AT&T's include files.
|
||||
|
||||
To use this preprocessor, unpack the cpp* files found in sys/unix into
|
||||
some handy directory (util will do). For the AT&T machines mentioned
|
||||
above, nothing needs to be configured; you should get a working cpp by
|
||||
merely typing "make -f makefile.txt". To get your compiler to use the
|
||||
new cpp, you will have to add to CFLAGS in src/Makefile and util/Makefile.
|
||||
If you put the cpp files in /foo/bar/util, add "-B/foo/bar/util/ -tp"
|
||||
for a 3b1 or "-Yp,/foo/bar/util" for a 3b2.
|
||||
|
||||
For any other machine whose preprocessor can't handle the NetHack source,
|
||||
you'll have to play it by ear. The preprocessor has many esoteric
|
||||
configuration options, but most probably you will only need to change
|
||||
the flags in makefile.txt, and then refer to your compiler's documentation
|
||||
to find the appropriate CFLAGS for the NetHack Makefiles. (The SunOS flag,
|
||||
for instance, would be "-Qpath /foo/bar/util", although the native cpp
|
||||
has no trouble with NetHack. So much for standardization.)
|
||||
|
||||
7. If you are trying to compile NetHack on an AT&T 3B that is running an
|
||||
OS earlier than SVR3, you are likely to have problems with overflowing
|
||||
symbol tables. This can be worked around by editing the source Makefile
|
||||
to make the Sys.3B2 target work more like the SysV-AT target, adding
|
||||
-DDUMB to CFLAGS and DUMB.Setup to the Sys.3B2 dependency line. The
|
||||
compiler provided with later versions of the OS has a large enough
|
||||
symbol table that it does not need this workaround.
|
||||
|
||||
8. If NetHack seems to compile fine, starts up, allows you to pick a
|
||||
character, and then hangs indefinitely, gets a segmentation fault, or
|
||||
traps you in a single room on the first level, you might try changing
|
||||
the schar and uchar definitions in config.h to short ints. This problem
|
||||
is known to occur on the AT&T 3B series, Silicon Graphics Irises, and
|
||||
IBM systems (PC/RT & RS/6000) running AIX, and may occur on other
|
||||
computers as well.
|
||||
|
||||
This problem is really most likely caused by having a non-__STDC__
|
||||
compiler with char's unsigned by default. Since some such compilers
|
||||
don't understand the new "signed" keyword, and others don't have signed
|
||||
characters to use (the 3B2 line falls into this category), "signed"
|
||||
is #ifdefed away for them. If you are sure your compiler can deal
|
||||
with it, you can add your compiler to the __HC__ case in tradstdc.h.
|
||||
|
||||
Alternatively, if the compiler supports a command line switch for
|
||||
setting the default char type to signed, you could try setting it in
|
||||
the Makefiles. The appropriate switch for SGI Irises with MIPS C
|
||||
compiler is "-signed" and for RS/6000's with standard cc "-qchars=signed".
|
||||
(SGI machines running IRIX 4.0.x have a compiler close enough to
|
||||
standard to suit NetHack, so you may merely use the suggested flags
|
||||
in the Makefiles.)
|
||||
|
||||
Note that at least RS/6000's seem to like changing the default to
|
||||
signed better but there is also a problem: The lexers created by
|
||||
the standard lex program in AIX may come out faulty when this switch
|
||||
is used (known to happen at least in AIX 3.1.3), so you may have to
|
||||
use an alternative, like flex, which is available at major archive
|
||||
sites (see notes 10 and 11).
|
||||
|
||||
By AIX 3.2.5, this whole problem should be taken care of automatically
|
||||
(but AIX_31 should still be defined in unixconf.h for other reasons).
|
||||
|
||||
9. Under SCO UNIX, you may have all sorts of complaints about
|
||||
include/obj.h. Go to the file and uncomment the marked line, working
|
||||
around the fact that SCO's system include files preempt a major
|
||||
NetHack structure name. Also, there are difficulties with SCO's cc
|
||||
that thus far have been solved only by changing compilers; one report
|
||||
says gcc-NetHack works, and another says rcc-NetHack can be made to
|
||||
work by defining NOTSTDC, applying note 8, and compiling with -tinfo
|
||||
and -xenix. The cc problems are old enough that a new, working
|
||||
version may have been released by this time.
|
||||
|
||||
10. Xenix/286's lex generates a faulty lexical analyser from lev_comp.l.
|
||||
The beta-release of flex 2.3 (available from uunet, osu-cis,
|
||||
prep.ai.mit.edu, etc.) can be used to generate the lexer.
|
||||
The only change to flex is to change "#define yyleng (yy_cp - yy_bp)"
|
||||
to "#define yyleng (int)(yy_cp - yy_bp)" in flex.skel.
|
||||
Flex is not needed with Xenix/386, as its lex generates a proper lexical
|
||||
analyser. [Xenix instructions by J.T. Conklin]
|
||||
|
||||
11. If your system does not have a lex/yacc or flex/bison combination
|
||||
capable of producing the dungeon and level compilers, lex and yacc
|
||||
output from one of our development systems can be found in sys/share.
|
||||
Unfortunately, this output is less portable than the rest of the code,
|
||||
as it contains skeleton parsing code provided by the specific vendor
|
||||
who has no particular incentive to make such skeletons portable, but
|
||||
the output works on most systems. To try it on yours, copy dgn_comp.h
|
||||
and lev_comp.h to include and dgn_lex.c, dgn_yacc.c, lev_lex.c, and
|
||||
lev_yacc.c to util.
|
||||
|
||||
12. Yes, Virginia, you compile NetHack for a NeXT as if it ran UNIX instead
|
||||
of Mach. Just tell NetHack you're a BSD system (Mach is extremely
|
||||
close to BSD UNIX for traditional system calls, so this is also a
|
||||
likely thing to try for any other programs you want to compile).
|
||||
|
||||
If you get errors when starting nethack warning that "Setuid execution is
|
||||
not allowed", you might want to re-install using the setgid option instead
|
||||
(see Note 7 above, and the setgid comment in the toplevel Makefile).
|
||||
|
||||
13. If you are using Solaris 2.x (aka SunOS 5.x) you shouldn't have to
|
||||
do any system configuration -- this is the default. In case it is
|
||||
messed up, follow these instructions.
|
||||
|
||||
Solaris is basically a SVR4 system, not a BSD system. Therefore, you
|
||||
configure config.h and unixconf.h as per a SVR4 system:
|
||||
|
||||
config.h: UNIX, TTY_GRAPHICS
|
||||
unixconf.h: SYSV, SVR4, TERMINFO, POSIX_JOB_CONTROL, POSIX_TYPES
|
||||
|
||||
X11_GRAPHICS does work. Do not define OPENWINBUG. You may safely define
|
||||
NETWORK, TEXTCOLOR if desired. Other #defines in these files may be
|
||||
defined too, as needed. Just make sure that the set mentioned here are
|
||||
not misdefined, or your compile will fail (do _not_ define BSD or SUNOS4).
|
||||
Unless you are using gzip you will probably want to define COMPRESS to
|
||||
be "/usr/bin/compress".
|
||||
|
||||
When compiling, make sure that you use the ANSI C SVR4 compatible
|
||||
compiler, /usr/bin/cc, or gcc, but _not_ ucbcc. The lattermost will
|
||||
not work. After this, you should get a clean compile.
|
||||
|
||||
Also, it is recommended that you use FLEX instead of the standard
|
||||
lex bundled with Solaris 2.x (even if that last one should work ;-).
|
||||
|
||||
14. If your machine is a 286, 386, or 486 running an appropriate OS, you
|
||||
may wish to use the console speaker driver included in
|
||||
sys/unix/snd86unx.shr. This will allow audible music to be played
|
||||
on your console speaker in certain appropriate game situations. The only
|
||||
modification to the main-line code needed to enable use of the driver
|
||||
is defining UNIX386MUSIC or VPIX_MUSIC in unixconf.h.
|
||||
Reference in New Issue
Block a user