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)
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
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
move the tarball there. Then, extract Genesis:
gzip -dc Genesis.tar.gz | tar -xf -
This will unzip/tar the file into a directory that looks like
"Genesis-1.1.8-STABLE", depending on the version downloaded.
To make less typing and an easier to read directory, I suggest
renaming the directory created to "Genesis":
mv Genesis-1.1.8-STABLE Genesis
First, make a directory called "cold" (for later use):
mkdir cold
Second, change directory to Genesis
cd Genesis
Third, run make:
make
This will result with a bunch of information about the most
recent changes to Genesis. It starts out with:
-- 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:
[Return to Continue]
Hit Enter/Return. It will then proceed to determine your system
configuration.
After some time, it will prompt you with:
###
### MALLOC()
###
#
# 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
##
Use phk_malloc()? [no]
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.
It then prompts you with:
###
### CRYPT()
###
#
# 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]
You can just hit enter.
It then prompts you with:
###
### FILES
###
#
# 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]
You can just hit enter.
It then prompts you with:
###
### CACHE SIZE
###
#
# 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.
# 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
might have to use "bc ./etc/primes.b" instead of the documented command. For easy
reference, here are several primes smaller and larger than the
default: 41, 53, 59, 67, 71, 83.
If you wish to keep the default, just hit enter, otherwise type your prime and hit
enter.
It then prompts you with:
Cache Depth [10]
This can be any number. If you wish to keep the default, just hit enter, otherwise
type your value and hit enter.
It then prompts you with:
###
### INSTALL
###
#
# 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]
To make it easy, I suggest typing "../cold" (without the quotes!) and then hitting
enter. This will use the directory you created in the beginning and keep all of your
cold stuff under one parent, but keep the database/world directory out of the source
trees.
It then prompts you with:
# Which install mode?
#
# Do not change this unless you understand the implications.
Install Mode [755]
The default is fine for this initial install, so just hit enter.
It then prompts you with:
# Which User to install as? Do not change this unless you are root,
# or are aware of the implications.
Install User [loginuser]
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
Optimization flags: [-g -O]
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]
The default is fine for this initial install, so just hit enter.
The make file will then continue building Genesis.... And finish.
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
move the files over (assuming your current directory is Genesis):
mv ./src/genesis ./bin/
mv ./src/coldcc ./bin/
This is a good time to check to make sure the compile worked:
./bin/genesis
Since you don't have a database set up, it should look something like:
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".
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
More information can also be found in the README file located in the Genesis directory.
* Next, lets install coldcore:
Change directory to where you installed Genesis and
move the tarball there. Then, extract coldcore:
gzip -dc ColdCore-STABLE.tar.gz | tar -xf -
This will unzip/tar the file into a directory that looks like
"ColdCore-3.0.1999-08-28", depending on the version downloaded.
At this point, the directory should look something like this:
ColdCore-3.0.1999-08-28/ ColdCore-STABLE.tar.gz Genesis/ Genesis.tar.gz cold/
Change directory to "ColdCore-3.0.1999-08-28":
cd ColdCore-3.0.1999-08-28
Then, move everything into the cold directory you created when you installed Genesis:
mv * ../cold
You can now back up to your main directory and remove the ColdCore-3.0.1999-08-28
directory:
cd -
rmdir ColdCore
Now, change directories into the cold directory:
cd cold
Now, change directory into the dbbin directory:
cd dbbin
Edit the backup file and find where it specifies the path:
#!/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 = "../";
Change the line $base = "../"; to specify the cold directory's full path, then
save the file and exit your editor.
Return to the cold directory:
cd -
Then, perform the following to copy necessary files from the Genesis directory
to the cold directory:
cp ../Genesis/bin/* bin/
mkdir doc
cp ../Genesis/doc/* doc/
mkdir etc
cp ../Genesis/etc/* etc/
The makeworld file is missing. So you will have to do it yourself (from
the cold directory):
./bin/coldcc -tcoldcore
This should result in:
Compiling database...
Reading from "coldcore".
Cleaning up name holders...done.
Database compiled to "binary"
Closing binary database...
And create a directory named "binary" under cold. At this point, your cold directory
should look something like:
COPYRIGHT README backups/ bin/ binary/ coldcore dbbin/ doc/ etc/ logs/ root/
Now, you should be able to fire up genesis with coldcore:
./bin/genesis
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.
If genesis doesn't run, then you'll need to contact one of the Cold mailing lists on this
site for further assistance: coldstuff@cold.org
More information can also be found in the README file located in the cold directory.
Next, go to a program to connect to your server. Specify the host that genesis is running
on, and port 1138. Then connect.
* Next, configure the running core (the New Admin guide also covers much of this
information: http://web.cold.org/coldcore/newadmin.html)
When you first connect to the newly built core, you will something like:
+ ColdCore +
Virtual Community Server
"The man who reads nothing at all is better educated
than the man who reads nothing but newspapers."
- Thomas Jefferson (1743-1826)
Due to a disk failure we have reverted to an older copy of the db
If you had a user but do not now, this is why.
Sorry!
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:
create <administrator> <password> <email>
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:
create PowerMad 1337h4x0r 5up3rh4x0r@hotmail.com
It then proceeds to log in, show you the initial room, and starup the auto configure
script:
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]
Enter "$player" (without the quotes!) and hit enter.
You can always raise someone's permissions later on.
It then prompts you with:
---
What is your server name? [ColdCore]
Enter what ever you want to have displayed as your server name.
It then prompts you with:
---
What is your server title? [Virtual Community Server]
Enter what ever you want to have displayed as your server title.
It then prompts you with:
---
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]
The default is sufficient for now. Hit enter.
It returns:
*************************** Configuration Complete ****************************
At this point in time, issue a backup command to flush the database to disk:
@backup
Then run through the tutorial:
@tutorial
To exit the tutorial at any point, just type "exit" (without the quotes!)
To shutdown the server immediately:
@shutdown -t=0
To leave the server running, but quit your current connection:
@quit
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/
This tool is available on multiple platforms and is suitable for
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>
Rename works either on objects or the name property of an object.
It also parses the name and sets a type than can be overriden by
<options>.
For example:
@rename $the_pit to "The Pit"
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
"The Pit" was a proper name.
Using options, you might think you can override this behavior
by simply using +proper to force it to be a proper name. Nope.
This results in a conflict between the parser and your option.
Instead, use +ignore to force the type to be proper:
@rename $the_pit to "The Pit" +ignore
Will result in the name of $the_pit becoming "The Pit".
You can also use @rename to rename the actual object itself.
For example:
@rename $thing_1 to $chair
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:
$the_pit is a core object; you cannot change its object name!
* How do I see all the settings for an object?
@set $objectname:
For example:
@set $the_pit:
Results:
-- Settings on The Pit ($the_pit):
command-modules =
darkness = 0
help-node =
map-position = none
propagate = no
public-home = no
realm = <Creation> ($realm_of_creation)
restrict-entry = none
visibility = 0
---
* How do I see all the messages for an object?
@msg $objectname:
For example:
@msg $the_pit:
Results:
-- Messages on The Nook ($the_pit):
connect = [actor] wakes up.
disconnect = [actor] falls asleep.
housekeeper = 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 "()":
@bc "fribble <any>" $place.fribble_cmd()
This will remove the default local command attached to $place:
Command "fribble <any>" removed from $place.fribble_cmd()
* How do I hide the $thing decendant I just created in a room?
Assume the object is $thing_1:
@set $thing_1:visibility=-100
This will return:
-- Setting changed to:
visibility = -100
--
The object is now, for all reasonable tests, invisible.
* 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
ways to do this:
@set $thing_1:lock=locked
This results in:
-- Setting changed to:
lock = locked
--
get chair
A chair is locked to no.
OK, if that doesn't really make you happy, try this:
@set $thing_1:lock=here
This results in:
-- Setting changed to:
lock = $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
|