[1600] in Coldmud discussion meeting
Installation Guide & Some FAQ
daemon@ATHENA.MIT.EDU (Sun Jul 2 19:47:29 2000
)
From: "Peter Bombard" <pbombard@altavista.net>
To: <coldstuff@cold.org>
Date: Sun, 2 Jul 2000 19:41:55 -0400
Reply-To: coldstuff@cold.org
This is a multi-part message in MIME format.
------=_NextPart_000_0008_01BFE45D.94F15A80
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Since the original FAQ was lost and I had to ask a bunch of questions to get
started, I figured I'd write up some of those questions and answers into a
document.
I'm sure my installation guide suggests some in-elegant things to do, since
I am not all that familiar with UNIX after having been away from it for
years and am a beginner in Linux.
If you have any suggestions or corrections, please let me know!
-pete (PBombard@altavista.net)
------=_NextPart_000_0008_01BFE45D.94F15A80
Content-Type: text/plain;
name="ColdFAQ.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="ColdFAQ.txt"
The Cold FAQ
** INSTALLING GENESIS WITH COLDCORE ON LINUX:
* You'll need the following from the cold FTP:
ftp://ftp.cold.org/cold/dbs/ColdCore/ColdCore-STABLE.tar.gz =20
ftp://ftp.cold.org/src/stable/Genesis.tar.gz
* First, let's install Genesis:
Change directory to where ever you want to install Genesis and=20
move the tarball there. Then, extract Genesis:
gzip -dc Genesis.tar.gz | tar -xf -
=09
This will unzip/tar the file into a directory that looks like
"Genesis-1.1.8-STABLE", depending on the version downloaded.
=09
To make less typing and an easier to read directory, I suggest=20
renaming the directory created to "Genesis":
=09
mv Genesis-1.1.8-STABLE Genesis
=09
First, make a directory called "cold" (for later use):
mkdir cold
=09
Second, change directory to Genesis
=09
cd Genesis
=09
Third, run make:
=09
make
=09
This will result with a bunch of information about the most=20
recent changes to Genesis. It starts out with:
=09
-- Configuration for Genesis 1.1.8-STABLE (the Cold Driver) --
- Creating cache ./etc/config.cache
This is the STABLE release of Genesis. This means no features will
be added to this release--only bug fixes and patches. There is also
a higher level of run-time stability for this release which you will
not have with the DEV release (alpha developmental).
Help can be found through the web site, or on the mailing list
(genesis@cold.org). A few pointer URLs:
http://www.cold.org/Software/Genesis/
http://www.cold.org/info/lists
RELEASE INFORMATION:
After any relevant release notes, it will prompt you:
=09
[Return to Continue]=20
=09
Hit Enter/Return. It will then proceed to determine your system
configuration.
=09
After some time, it will prompt you with:
=09
###
### MALLOC()
###=20
#
# We provide a malloc implementation by Poul-Henning Kamp. Using this
# malloc is suggested, as designs take it into consideration, and =
because
# it is integrated into the functionality of genesis for better error
# recovery. We suggest using this malloc over your system's malloc,
# however if you encounter problems you should drop back to your =
system's
# malloc. The best suggestion is to try both, analyze the memory
# imprint and run-time behaviour and decide which to stay with.
#
##
## At the moment, mileage with phk_malloc() may vary, it is
## only guaranteed to be useful and functional in FreeBSD and Linux
##
=09
Use phk_malloc()? [no]=20
=09
If you are running FreeBSD or Linux, type "yes" (without the
quotes!) and hit enter.
If you are running in another environment, type "no" (without the
quotes!) and hit enter.
=09
It then prompts you with:
=09
###
### CRYPT()
###
#=20
# The ColdC builtin function crypt() uses SHA-1 encryption based off =
FreeBSD's
# MD5 crypt(). If your OS has its own crypt() (likely DES based), and =
your
# database includes DES encrypted passwords (this used to be the =
default for
# ColdC crypt()), you may want to have match_crypted() use DES =
encryption
# as well as SHA-1 for the DES passwords. If your database does not =
have
# any DES encrypted passwords, there is no need to include DES =
encryption.
# If your database predates Genesis 1.0p14 it will have DES based =
passwords.
#
Include your OS crypt() in match_crypted()? [no]=20
=09
You can just hit enter.
=09
It then prompts you with:
=09
###
### FILES
###
#=20
# File operations may be restricted. Restrictions include paths
# (all files must stay within the 'root' subdirectory), as well as
# other security restrictions, such as disallowing sticky or setuid
# file perms with fchmod()
#
Restrict files? [yes]=20
=09
You can just hit enter.
=09
It then prompts you with:
###
### CACHE SIZE
###
#=20
# The size of the object cache will ultimately determine how much =
memory
# genesis will use, when running. The cache is defined as WIDTH by =
DEPTH.
# the primary number to be concerned with is WIDTH, as the DEPTH is =
only
# used when collisions occur. For better distribution, the WIDTH size
# should be a prime number. If you want low memory usage (about 4MB =
in
# unix) a cache size of 31x10 is suggested, increase as you desire. =20
# Keep in mind this is ONLY active objects in your database, namely =
those
# which are currently in use.
#
# You can use GNU's bc command with the file etc/primes.b to generate =
a list
# of prime numbers in the range you are interested in, by typing:
#
# bc etc/primes.p
#
Cache Width [61]
The default is fine to start out with. If you want to run the primes =
script, you=20
might have to use "bc ./etc/primes.b" instead of the documented =
command. For easy=20
reference, here are several primes smaller and larger than the=20
default: 41, 53, 59, 67, 71, 83.
=09
If you wish to keep the default, just hit enter, otherwise type your =
prime and hit=20
enter.
=09
It then prompts you with:
=09
Cache Depth [10]
=09
This can be any number. If you wish to keep the default, just hit =
enter, otherwise=20
type your value and hit enter.
=09
It then prompts you with:
###
### INSTALL
###
#=20
# Where do you want to install Genesis? This is the database/world
# directory, and should be seperate from the Genesis release =
directory,
# so you can delete the entire Genesis release directory when =
finished.
#
Install Directory [~/cold]=20
=09
To make it easy, I suggest typing "../cold" (without the quotes!) and =
then hitting=20
enter. This will use the directory you created in the beginning and =
keep all of your=20
cold stuff under one parent, but keep the database/world directory out =
of the source=20
trees.
=09
It then prompts you with:
=09
# Which install mode?
#
# Do not change this unless you understand the implications.
Install Mode [755]=20
=09
The default is fine for this initial install, so just hit enter.
=09
It then prompts you with:
=09
# Which User to install as? Do not change this unless you are root,
# or are aware of the implications.
Install User [loginuser]=20
=09
The default is fine for this initial install, so just hit enter.
It then prompts you with:
###
### COMPILER FLAGS
###
#
# Specify compiler optimization flags (if you are unsure which to use,
# simply select the default).
#
# You are running gcc, suggested:
#
# -O3 -- full optimization, good for basic =
compilation
# -ggdb -O -Wall -pedantic -- use this for driver development
=09
Optimization flags: [-g -O]=20
The default is fine for this initial install, so just hit enter.
It then prompts you with:
# Genesis allows for native methods to be included in the database.
# This is done through modules, where each module adds native methods
# to one or more objects. For more information on adding your own
# native methods, refer to the documentation.
#
# Your current module configuration is:
#
# ColdC: yes
# VEIL: yes
# Web: yes
# Math: yes
Reconfigure Modules? [no]=20
The default is fine for this initial install, so just hit enter.
The make file will then continue building Genesis.... And finish.
=09
On some systems, the make file will not put your binaries in the bin =
directory.
If you look in ./bin and genesis and coldcc are not there, then you =
need to manually=20
move the files over (assuming your current directory is Genesis):
=09
mv ./src/genesis ./bin/
mv ./src/coldcc ./bin/
=09
This is a good time to check to make sure the compile worked:
=09
./bin/genesis
=09
Since you don't have a database set up, it should look something like:
=09
Unable to open log logs/db.log: No such file or directory
Defaulting to stdout..
Unable to open log logs/driver.log: No such file or directory
Defaulting to stderr..
genesis pid: 12398
Cannot find binary directory "binary".
=09
But, at least the program runs! If it doesn't, then you'll need to =
contact one of
the Cold mailing lists on this site for further assistance: =
coldstuff@cold.org
=09
More information can also be found in the README file located in the =
Genesis directory.
=09
* Next, lets install coldcore:
Change directory to where you installed Genesis and=20
move the tarball there. Then, extract coldcore:
gzip -dc ColdCore-STABLE.tar.gz | tar -xf -
=09
This will unzip/tar the file into a directory that looks like
"ColdCore-3.0.1999-08-28", depending on the version downloaded.
=09
At this point, the directory should look something like this:
=09
ColdCore-3.0.1999-08-28/ ColdCore-STABLE.tar.gz Genesis/ =
Genesis.tar.gz cold/
=09
Change directory to "ColdCore-3.0.1999-08-28":
=09
cd ColdCore-3.0.1999-08-28
=09
Then, move everything into the cold directory you created when you =
installed Genesis:
=09
mv * ../cold
=09
You can now back up to your main directory and remove the =
ColdCore-3.0.1999-08-28=20
directory:
=09
cd -
rmdir ColdCore
=09
Now, change directories into the cold directory:
=09
cd cold
=09
Now, change directory into the dbbin directory:
=09
cd dbbin
=09
Edit the backup file and find where it specifies the path:
=09
#!/usr/bin/perl
#
# Created by Brandon Gillespie
# Additional work by Vang (Dale Mayberry)
#
## This creates a FIFO list of backups based off your configuration,
## it can do regular, weekly and monthly backups, with the intervals
## and depth of the FIFO list defined by you.
#
# INSTALL:
#
# determine your world directory (i.e. the directory where 'binary'
# exists). Change the following variable to the full path to your
# world directory:
$base =3D "../";
=09
Change the line $base =3D "../"; to specify the cold directory's full =
path, then=20
save the file and exit your editor.
=09
Return to the cold directory:
=09
cd -
=09
Then, perform the following to copy necessary files from the Genesis =
directory=20
to the cold directory:
=09
cp ../Genesis/bin/* bin/
mkdir doc
cp ../Genesis/doc/* doc/=20
mkdir etc
cp ../Genesis/etc/* etc/=20
=09
The makeworld file is missing. So you will have to do it yourself =
(from=20
the cold directory):
=09
./bin/coldcc -tcoldcore
=09
This should result in:
=09
Compiling database...
Reading from "coldcore".
Cleaning up name holders...done. =20
Database compiled to "binary"
Closing binary database...
=09
And create a directory named "binary" under cold. At this point, your =
cold directory
should look something like:
=09
COPYRIGHT README backups/ bin/ binary/ coldcore dbbin/ doc/ =
etc/ logs/ root/
=09
Now, you should be able to fire up genesis with coldcore:
=09
./bin/genesis
=09
No '&' is necessary, as genesis forks automatically. If you are not =
running as root, you
will need to run genesis as root initially. You can force genesis to =
another userid after
it starts, but it must be run as root initially.
=09
If genesis doesn't run, then you'll need to contact one of the Cold =
mailing lists on this=20
site for further assistance: coldstuff@cold.org
=09
More information can also be found in the README file located in the =
cold directory.
=09
Next, go to a program to connect to your server. Specify the host that =
genesis is running
on, and port 1138. Then connect.
=09
* Next, configure the running core (the New Admin guide also covers much =
of this=20
information: http://web.cold.org/coldcore/newadmin.html)
When you first connect to the newly built core, you will something =
like:
=09
=09
+ ColdCore +
=09
Virtual Community Server
"The man who reads nothing at all is better educated =20
=20
than the man who reads nothing but newspapers." =20
=20
=20
=20
- Thomas Jefferson (1743-1826) =20
=20
=20
=20
Due to a disk failure we have reverted to an older copy of the =
db =20
If you had a user but do not now, this is why. =20
=20
Sorry! =20
=20
=20
=20
Administrators: nothing
Currently Connected users: 0
Core: ColdCore 3.0.1999-08-28
Driver: Genesis 1.1.8-STABLE
** Use 'Help' for a list of commands**
You will need to create an initial user account:
=09
create <administrator> <password> <email>
=09
where "<administrator>" is the name you want to give to the initial =
admin account.
and "<password>" is the password you want that account to have.
and "<email>" is the email address of the administrator.
For example:
=09
create PowerMad 1337h4x0r 5up3rh4x0r@hotmail.com
=09
It then proceeds to log in, show you the initial room, and starup the =
auto configure
script:
=09
The Pit
A cozy atmosphere pervades this room, a small hideaway where people =
can come to relax and socialize. The cement walls are covered with =
various scribbles burn marks, and stains of unrecognizable origin.
the Robot is here.
<Login> It is currently 04:38 AM (wintertime) in <Creation>
You have not yet set a description for yourself.
Perhaps you'd like to take a look at the tutorial.
Type @tutorial to read about how to set a description and more.
=
*************************************************************************=
*****
**************************** Welcome to ColdCore =
*****************************
=
*************************************************************************=
*****
This is an interactive configuration system which any admin who =
connects
(until it is completed) is sent through. You must complete =
this
configuration before you can do anything else. You can skip a =
specific
question at any time by typing '@skip'. Suggested default values =
will be
enclosed in square brackets. Pressing enter without any value will =
use the
default value.
=
*************************************************************************=
*****
What class should new users be created as? Available classes:
$player
$builder
$programmer
$admin
New User Class [$admin]
=09
Enter "$player" (without the quotes!) and hit enter. =20
You can always raise someone's permissions later on.
=09
=09
It then prompts you with:
---
What is your server name? [ColdCore]=20
=09
Enter what ever you want to have displayed as your server name.
=09
=09
It then prompts you with:
=09
---
What is your server title? [Virtual Community Server]=20
=09
Enter what ever you want to have displayed as your server title.
=09
=09
It then prompts you with:
=09
---
Which network daemons do you want to have automatically startup,
Other than $login_daemon. Available daemons:
$smtp_daemon (auto starting)
$http_daemon (auto starting)
$pop3_daemon
Auto-Start: [$login_daemon, $http_daemon, $smtp_daemon]=20
=09
The default is sufficient for now. Hit enter.
=09
It returns:
=09
*************************** Configuration Complete =
****************************
=09
At this point in time, issue a backup command to flush the database to =
disk:
=09
@backup
=09
Then run through the tutorial:
=09
@tutorial
=09
To exit the tutorial at any point, just type "exit" (without the =
quotes!)
=09
To shutdown the server immediately:
=09
@shutdown -t=3D0
=09
To leave the server running, but quit your current connection:
=09
@quit
=09
Enjoy!
** OTHER QUESTIONS:
* I hate Windows Telnet, are there any better options?
Cold recommends using tkMOO instead of telnet:
http://www.awns.com/tkMOO-light/
=09
This tool is available on multiple platforms and is suitable for=20
UNIX use as well.
* How do I change my description?
@describe me as <Description>
Alternatively, you can also use @describe me and then supply "." to
terminate or "@abort" to quit entering a description.
* How do I rename something?
@rename <source> to <destination> <options>
=09
Rename works either on objects or the name property of an object.=20
It also parses the name and sets a type than can be overriden by
<options>.
For example:
=09
@rename $the_pit to "The Pit"
=09
Will result in the name of $the_pit chaing from "The Pit" to "the
Pit", because of the parsing. "the Pit" is a unique name, while=20
"The Pit" was a proper name. =20
Using options, you might think you can override this behavior
by simply using +proper to force it to be a proper name. Nope.=20
This results in a conflict between the parser and your option.=20
Instead, use +ignore to force the type to be proper:
=09
@rename $the_pit to "The Pit" +ignore
=09
Will result in the name of $the_pit becoming "The Pit".
=09
You can also use @rename to rename the actual object itself.
=09
For example:
=09
@rename $thing_1 to $chair
=09
Objects that are "Core Objects" cannot be renamed. $the_pit is a
core object. If you attempt to rename $the_pit, you will get the
following response:
=09
$the_pit is a core object; you cannot change its object name!
* How do I see all the settings for an object?
@set $objectname:
=09
For example:
=09
@set $the_pit:
=09
Results:
=09
-- Settings on The Pit ($the_pit):
command-modules =3D=20
darkness =3D 0
help-node =3D=20
map-position =3D none
propagate =3D no
public-home =3D no
realm =3D <Creation> ($realm_of_creation)
restrict-entry =3D none
visibility =3D 0
---
=09
* How do I see all the messages for an object?
@msg $objectname:
=09
For example:
=09
@msg $the_pit:
=09
Results:
-- Messages on The Nook ($the_pit):
connect =3D [actor] wakes up.
disconnect =3D [actor] falls asleep.
housekeeper =3D The housekeeper arrives and takes [actor]'s body =
away.
---
* Hey I just noticed that there are a couple of weird local commands
on $the_pit and $place! How do I get rid of them, @bc "fribble
<any>" $place.fribble_cmd doesn't work? @bc "zibble <any>" $the_pit.
foo_cmd doesn't work?
The method name for @bc needs to include "()":
=09
@bc "fribble <any>" $place.fribble_cmd()
=09
This will remove the default local command attached to $place:
=09
Command "fribble <any>" removed from $place.fribble_cmd()
=09
* How do I hide the $thing decendant I just created in a room?
Assume the object is $thing_1:
@set $thing_1:visibility=3D-100
=09
This will return:
-- Setting changed to:
visibility =3D -100
--
=09
The object is now, for all reasonable tests, invisible.
=09
* How do I nail down that object, so it can't be picked up?
Assuming the object is named $thing_1 again. There are several=20
ways to do this:
=09
@set $thing_1:lock=3Dlocked
=09
This results in:
=09
-- Setting changed to:
lock =3D locked
--
get chair
A chair is locked to no.
=09
OK, if that doesn't really make you happy, try this:
=09
@set $thing_1:lock=3Dhere
=09
This results in:
=09
-- Setting changed to:
lock =3D $the_pit
--
get chair
A chair is locked to The Pit.
However, if you have Mojo, you'll still be able to drag the object
around.
If there is yet a better way, that results in messaging more
appropriate to the attempted action, I don't know how to do it.
** COLDCC COMMANDLINE OPTIONS
-- ColdCC 1.1-8 --
Usage: ./bin/coldcc [options]
Options:
-f force native methods to override existing methods.
-v version
-h This message.
-d Decompile.
-c Compile (default).
-b binary binary db directory name, current: "binary"
-t target target text db, current: "textdump"
If this is "stdin" it will read from stdin
instead. <target> may be a directory or file.
-p Partial compile, compile object(s) and insert
into database accordingly. Can be used with -w
for a ColdC code verification program.
+|-# Print/Do not print object numbers by default.
Default option is +#
print object names by default, if they exist.
-s WIDTHxDEPTH Cache size, default 10x30
-n List native method configuration.
+|-o Print/Do not print objects as they are processed.
-W Do not print warnings.
** GENESIS COMMANDLINE OPTIONS
-- Genesis 1.1-8 --
Usage: ./bin/genesis [base dir] [options]
Base directory will default to "." if unspecified. Arguments which
the driver does not recognize, or options which begin with "--" =
rather
than "-" are passed onto the database as arguments to =
$sys.startup().
Note: specifying "stdin" or "stderr" for either of the logs will
direct them appropriately.
Options:
-v version.
-f do not fork on startup
-db <dir> alternate binary directory, current: "binary"
-dr <dir> alternate root file directory, current: "root"
-dx <dir> alternate executables directory, current: "dbbin"
-ld <file> alternate database logfile, current: "logs/db.log"
-lg <file> alternate driver (genesis) logfile, current: =
"logs/driver.log"
-lp <file> alternate runtime pid logfile, current: =
"logs/genesis.run"
-s <size> Cache size, given as WIDTHxDEPTH, current: 61x10
-n <name> specify the hostname (rather than looking it up)
-u <user> if running as root, setuid to this user. This only =
works
in unix. Genesis must first be run as root.
-g <group> if running as root, setgid to this group. This only =
works
in unix. Genesis must first be run as root.
-p <port> prebind port, can exist multiple times. Port must be
formatted as: [ADDR]:PORT. UDP ports are specified with
negative numbers. Address is any, if unspecified, or =
must
be an IP address. All below are valid:
206.81.134.103:80
:-20
:23
------=_NextPart_000_0008_01BFE45D.94F15A80--