![]() |
Indexed GEDCOM MethodDetailed Setup Instructions |
![]() |
Concept originally created by Tim Doyle. Modified and enhanced by Randy Winch <gumby@edge.net>, with additional scripts added. Further modified and more new scripts added by Doug Macdonald <DAMacdonald@juno.com>.
This file is more than 10 pages long, and that may seem like a lot, or make it appear as if this is a complicated program, but it really isn't. These instructions are very detailed, and should walk you through the process step-by-step. Since so much depends on your server's setup (and every server is different <sigh>), much detail is needed to avoid confusion. My goal is to get you up and running on the first try.
The Indexed GEDCOM Method (IGM) is a powerful and flexible method for formatting and presenting genealogical data on the Internet. It employs CGI scripts to operate on an ordinary GEDCOM file in order to index it, and also to format various reports and charts in response to user requests.
A GEDCOM file is a kind of the universal language allowing communication between the growing number of genealogical database programs on the market. Whatever program you use, it should be able to export its data as a GEDCOM file, which can then be read by another program. This means that no matter what program you have used to assemble your data, you should be able to use the IGM method to display it on the Internet.
THe CGI scripts on which the IGM system is based are computer programs which are run on the web server, as opposed to the client or user machine. The IGM scripts are written in the Perl programming language.
The Indexed GEDCOM Method is simple to operate and to use. When a new or updated GEDCOM is to be made available, the program IGMMak is run on it. This program creates a master index file as well as a surname index and several HTML sub-index files. This process takes only about 1-2 minutes to index a 7,000+ person GEDCOM file, although this may vary based upon the system you are using.
Once the GEDCOM is indexed by IGMMak, users can access the automatically generated HTML index files or use the built-in search engine to find the person they are interested in. When they request information on any person in the database, the HTML index instructs the Web Server to run the IGMGet program. IGMGet opens the GEDCOM and goes directly to the person directed. It then loads all of the information for that person and his/her family, generates an HTML file, and sends that HTML file back to the user. The page generated by IGMGet contains links to request customized pedigree or descendancy charts for the subject of interest, to request a downloaded GEDCOM centered on the person, and to add a link to information about this person anywhere else on the web.
The HTML index files allow the user to search the database either by a range of names, or by an every-surname index. The user can also search names and places with the IGMSrch program or the entire GEDCOM for any text with the program IGMFind.
An important thing to note is that the HTML files sent to users are generated on the fly at the time of the request. This approach allows much greater flexibility in formatting information than methods which rely on a fixed set of pre-generated static webpages.
All of the scripts, IGMMak, IGMMake, IGMLivng, IGMGet, IGMFind, IGMSrch, IGMLink, IGMPed, IGMDesc, IGMGed, IGMPedTree, IGMDescTree, IGMLib, and IGMIni are written in the Perl programming language and can be modified, provided that the original copyright information is not removed or modified.
Other exciting features include:
There a few things that you'll need to know before you can use these scripts. You should check with your web hosting provider you don't know the following:
The following paragraphs summarize how to download and unpack the IGM program suite. A "packing list" summarizing the files which comprise it is also provided.
The following summarizes the files contained within the IGM program suite. More detailed descriptions are given later. Please check to make sure that you have all of these.
IGM Program Suite Contents | |
CGI Scripts - These are the Perl files which generate HTML pages from the GEDCOM file in response to user requests | |
igmini | The .ini file - very important |
igmlib | Contains all subroutines - also very important |
igmget.cgi | Creates the individual's page when called |
igmdesc.cgi | Creates text-style descendant charts |
igmped.cgi | Creates text-style pedigree charts |
igmdesctree.cgi | Creates tree-style descendant charts |
igmpedtree.cgi | Creates tree-style pedigree charts |
igmsrch.cgi | The NAME/PLACE search engine |
igmfind.cgi | The FREESTYLE TEXT search engine |
igmged.cgi | Creates the custom GEDCOMs |
igmlink.cgi | Links common individuals in remote databases |
Perl Command Files - These are Perl files which are run manually on the server in order to prepare and index the GEDCOM for use in the IGM database | |
igmmak | Creates the whole shebang - this is run from the shell |
igmmake | The original version of igmmak - Now essentially obsolete, but included for reference |
igmlivng | A preprocessor for the GEDCOM which removes birth information for living individuals |
Utility Command Files - These are files which are run manually on the user's PC before uploading the GEDCOM in order to prepare it for use in the IGM database | |
d2u.exe | Converts files from DOS to UNIX form by changing CRLFs to LFs |
addphotos.exe | Automates the process of adding photograph citations to the database |
Graphics Files - These are files which provide some of the graphical aspects of the generated web pages | |
bkgd.jpg | Background for the generated web pages - may be changed if desired |
photo.gif | A small image to flag individuals for whom photos exist in the database |
Documentation Files - These files document the IGM suite of programs | |
igm-how2.htm | This file |
igm-photos.htm | Instructions for adding photographs to the database |
igmgendex.htm | Instructions for adding your database to the Gendex master database of databases |
In addition to the above files, you'll need 2 additional files, and an optional third file, which you will supply. The first, obviously, is the GEDCOM itself. The second (required) file is a data file which should have the same root name as the GEDCOM, and the extension '.dat' (e.g. Macdonald.dat). This file is used to put the owner's name and email address on each created page. Details of this file are given later. The third (optional) file is a data file which should have the same root name as the GEDCOM, and the extension '.info' (e.g. Macdonald.info). This file should contain a short text introduction or description of your database, which will be included on the main index HTML page. The contents of this file are also described later.
As a result of running igmmak on the server, a set of static (permanent) files will be created. For instance, if the GEDCOM is called Smith.ged, then the files will be as follows:
Smith.htm | The Master Index HTML page |
Smith-surname.htm | The surname index HTML page |
Smith-photo.htm | The photograph index HTML page (if applicable) |
Smith1.htm (Smith2.htm, Smith3.htm, etc.) | Sub-index HTML pages |
igmlog.htm | Logs information on database accesses |
Smith.cnt | Keeps track of total number of 'hits' |
Smith.pag, Smith.dir OR Smith.db | Database index files (if DBM indexing is chosen) |
Smith.idx | Database index file (if DBM indexing is not chosen) |
Smith.gdx | For use with Gene Stark's or John Rigdon's indexes |
It is important to note that most of these permanent files are indices into the database. Most of the files sent to a user in response to specific requests are generated at the time of the request.
Depending on the conventions used by your server, you may need to modify some or all of the scripts to make them functional on the server. This is most easily done on your home computer before uploading the files to the server. The editing should be done with a text mode editor such as the DOS Editor or Notepad. The following paragraphs summarize the changes which need to be made to each file.
igmini
This file is called by every
one of the IGM scripts. It contains
all the main variables and the
paths which are used throughout the
IGM series. This is also where
optional items are set, such as
whether or not to include aliases
on an individual's page, background
colors or graphics, default depths of
the displayed pedigrees and descendant
charts, etc.
This file will require the most editing, but it's fairly straightforward. The first section deals with defining your URL and path - on your server. The script contains my own personal setup. If it will help any, my online database is located at
http://www.macdonda.spaceports.com/genealogy/Macdonald/Macdonald.htm
Please compare the above to what you see in the igmini file. It may help you to understand this section.
The next section covers the names of the scripts. Please make sure that the names here match the actual names and extensions of the scripts, including capitalization. In other words, if you renamed the scripts for any reason, be sure to change them in this section, too.
The last two sections of the igmini file contain the options that you can set. They're pretty self-explanatory.
The table below explains this in more detail.
IGMINI File Variables | |
Web Server variables | |
WebSite | This is the name of the system hosting the scripts as seen from the web. Example: 'http://www.macdonda.spaceports.com' |
WebIGMDir | This is the parent directory off of which all IGM databases exist as seen from the web. This is combined with WebSite to create the web URL to your database(s). Note that the public_html part of the pathname is not included. Example: 'gedcom' |
WebCGIDir | This is your CGI directory as seen from the web. This is combined with WebSite to create the web URL to your CGI directory. Example: 'cgi-bin' |
Local Server variables | |
LocIGMDir | The directory off of which all IGM databases exist as seen from your local server. Example: '/home/macdonal/public_html/gedcom' |
LocCGIDir | The directory off of which all IGM scripts exist as seen from your local server. Example: '/home/macdonal/public_html/cgi-bin' |
PictureDir | Directory where photos are stored (relative to main database directory) Example: 'photos' |
Script program name variables | |
GetScript | The name of the 'get' script to run. Note that for all of these items, case (i.e. upper or lower) is important.) Example: 'igmget' or 'igmget.cgi' |
PedScript | The name of the 'Text Pedigree Chart' script to run. Example: 'igmped' or 'igmped.cgi' |
DescScript | The name of the 'Text Descendency Chart' script to run. Example: 'igmdesc' or 'igmdesc.cgi' |
PedTreeScript | The name of the 'Tree Pedigree Chart' script to run. Example: 'igmpedtree' or 'igmpedtree.cgi' |
DescTreeScript | The name of the 'Tree Descendency Chart' script to run. Example: 'igmdesctree' or 'igmdesctree.cgi' |
SrchScript | The name of the 'Fast Search' script to run. Example: 'igmsrch' or 'igmsrch.cgi' |
FindScript | The name of the 'Find' script to run. Example: 'igmfind' or 'igmfind.cgi' |
LinkScript | The name of the 'Link' script to run. Example: 'igmlink' or 'igmlink.cgi' |
GedScript | The name of the 'GEDCOM Extraction' script to run. Example: 'igmged' or 'igmged.cgi' |
Color and image variables | |
Back | Background image. Put the name of a JPEG or GIF file here. This file must be placed in the user's main database directory. Default is a file called bkgd.jpg. Set to ' ' to disable. |
Photo | This option contains the filename for a 'Photo Indicator' graphic. The file must be placed in the user's main database directory. A small file called photo.gif is the default. |
BGColor | The background color. Default: #BFBFBD (Gray) |
Text | The text color. Default: #000000 (Black) |
Link | The link color. Default #0000EE (Blue) |
VLink | The visited link color. Default: #551A8B (Purple) |
Miscellaneous variables | |
UseDBM | This option controls the method used to index the GEDCOM file. If set to ' ', the program will use an index file. This option requires less space but the entire index file must be loaded each time that IGMGet, IGMPed or IGMDesc is run. If the database size is anything but small, this can cause slow page display times and increased server load. If set to 'yes', the program will use a DBM index file. This option requires slightly more space but reduces display times and server load. Recommendation: 'yes' |
UseXrefTags | This option controls the method used to access individuals. If set to ' ', the program will use seek addresses for accessing individuals. This is slightly faster but the seek addresses will probably change each time that the database is rebuilt. If set to 'yes', the program will use xref tags to access individuals. This is slightly slower but individuals xref tags are more likely to remain stable after a rebuild. Recommendation: 'yes' |
MaxInIndex | This option controls the number of individuals that are allowed in a sub-index page. Default: 250 |
Peddepth | This option sets the default depth (number of generations) for the pedigree chart programs. Recommendation: 5-6 |
Pedfull | This option determines whether empty pedigree entries are included in pedigree trees. ' ' to disable or 'yes' to enable |
Descdepth | This option sets the default depth (number of generations) for the descendency chart programs. Recommendation: 3-4 |
AllowFind | This option controls the availability of the Find program. ' ' to disable or 'yes' to enable |
AllowLinks | This option controls the availability of the Link program. ' ' to disable or 'yes' to enable |
AllowGED | This option controls the availability of the GEDCOM Extraction program. ' ' to disable or 'yes' to enable |
MaxGED | This option set the maximum number of generations a user can request in a downloaded GEDCOM file |
InlineSource | This option controls the format used to display sources. ' ' to use footnotes or 'yes' to use inline text. |
IndexAliases | This option controls the indexing of alias names during database rebuild. ' ' to disable or 'yes' to enable |
Suffix | This option lets you set the filename suffix of the HTML files generated by the IGM programs. Your server may prefer to use 'htm' or 'html'. |
FormMeth | This option lets you set the FORM METHOD used to retrieve data from an HTML form. Specify 'GET' or 'POST' as appropriate for your application. |
Provider | This option provides for a footnote at the bottom of all pages. Can be used to link to another page, for a copyright notice, etc. |
HowTo | This option provides for a link back to these pages describing these programs. |
HomePage | This option provides for a link back to your homepage. |
igmlib
This file contains all of the
subroutines that may be called from
any of the IGM 'modules'. This
is an extremely important file, and
fortunately, requires no editing.
igmget.cgi
This script does the majority
of the work for the web users. When
an individual is selected for
displaying, this is the script that
creates that individual's page.
It reads in the GEDCOM, extracts
the information, and displays
the page. Once another individual is
selected, or the user leaves
the program, the individual's page no
longer exists on your server.
The only lines you may need to edit are the following:
#!/usr/bin/perl | This is the very first line of any script, and should list the exact path from "Before You Begin" Step 4 (above). Do not remove the # or the !. |
require 'igmini'; | If you renamed
the igmini file to suit your server, the name has to be changed here, too.
You may need to do a bit of experimentation here after uploading your files
to the server. Perl looks for included
files like this by checking directories contained in one of its internal
parameters called @INC. Depending on how your server is set up, this
parameter may or may not include the 'current directory.' I ended up having
to specify the full server pathname of the igmini file here, i.e.
require '/home/macdonal/public_html/gedcom/igmini'; |
require 'igmlib'; | Same comments as for igmini. |
igmdesc.cgi
This script is called whenever
anyone chooses to display a
text-format descendancy chart.
Changes to this script are the
same as for igmget.cgi
igmped.cgi
This script is called whenever
anyone chooses to display a
text-format pedigree chart.
Changes to this script are the
same as for igmget.cgi
igmdesctree.cgi
This script is called whenever
anyone chooses to display a
tree-format descendancy chart.
Changes to this script are the
same as for igmget.cgi
igmpedtree.cgi
This script is called whenever
anyone chooses to display a
tree-format pedigree chart.
Changes to this script are the
same as for igmget.cgi
igmsrch.cgi
Searches the *.gdx file instead
of the entire GEDCOM for a
particular name or surname, and
returns a linked list of all matches.
Changes to this script are the
same as for igmget.cgi
igmfind.cgi
Does a FREESTYLE TEXT search
whenever anyone choses that option from
the Master index page, and returns
a linked list of all matches.
Changes to this script are the
same as for igmget.cgi
igmged.cgi
This script creates the customized
GEDCOMs for downloading.
Changes to this script are the
same as for igmget.cgi
igmlink.cgi
This script is called when you
want to link an individual in your
database to another database
containing the same individual.
Changes to this script are the
same as for igmget.cgi
igmmak
Executed from the command line
while dialed in to your shell account.
This script is responsible for
reading in the GEDCOM and creating
all indexes and other static
pages. It is much faster than igmmake.
Changes which may be necessary for this script are the following:
igmmake
Like igmmak, this script would be executed
from the command line while
dialed into your shell account.
It is now essentially obsolete, and is included in the IGM distribution
for reference.
Does basically the same thing as
igmmak, but is a lengthier process.
Changes for this script are the same as for igmmak.
igmlivng
Like igmmak, this script is executed
from the command line while
dialed into your shell account.
It should be run before igmmak is run, and will will create a GEDCOM file
with the birth information of living individuals removed.
Changes for this script are the same as for igmmak.
A couple of files are used to automate the process of creating the index files from the GEDCOM. These are both small ASCII text files. You can create these file in any text editor (The DOS Editor or Notepad will be fine.)
DAT File
This file is
used to put the owner's name and email
address on each created page.
It should have the same root name (with the same capitalization)
as the GEDCOM, and
the extension '.dat' (e.g. Macdonald.dat).
This file contains up
to four lines, the first two of
which are required, and the last
two of which are optional.
INFO File
This file is used to "personalize" the main index HTML page of your database.
It should have the same root name (with the same capitalization)
as the GEDCOM, and the extension '.info' (e.g. Macdonald.info).
It should contain a short text introduction or description of your database,
which igmmak will insert on the main index HTML page when it creates
it. This file can contain more than just text; it can contain HTML tags
and references to images to be included on the index page. Keep in mind,
though, that this description should be short enough that it does not
push useful links down off the initial browser screen view of the main
index page. The INFO file is
optional; if you don't want a description on the main index page, you don't
need to create this file.
Three more steps remain in preparing the scripts for upload to the server. The first step is only necessary if you are going to add photographs to your database. The last two steps are only applicable if the server is running UNIX or one of its variants. This will apply in most cases, however, since most servers where Perl is available are UNIX servers. Some of these steps will modify your GEDCOM file in ways which may may make it incompatible with the programs which created it. Therefore, it is strongly suggested that you make a copy of the GEDCOM in a special pre-upload directory and perform these steps on that copy.
Now you're ready to upload the programs to your server and set up your database. The instructions below assume the GEDCOM database being created is named Macdonald, and that the installation is on a UNIX server. You should modify the procedure accordingly for your setup. Note that the following procedure assumes that you have TelNet access to your account. It is still possible to set things up if this is not true; just see the notes at the end of the precedure.
Once this step is complete, you'll finally be ready to enjoy your handiwork! You can close down FTP if you haven't already, and you can close down TelNet or whatever other program you used.
Start up your web browser. Enter the URL of the Main Index Page, which will look something like this:
http://domain/~you/main_database_directory/gedcom_name/gedcom_name.htm
You should see your main index page come up. Check the links on it to be sure that they are all resolved. Go to an individual's data page and check it out. Try doing a search for a name.
THAT SHOULD BE ALL THERE IS TO IT !!!
Although the above procedure assumed that you had TelNet access to your
account, this is not really necessary. All of the setup can be done through
FTP alone, with only a little more difficulty. All of the directory creations
and file permission settings performed above can be done with any reasonably
full featured FTP program, for instance WS_FTP from
Ipswitch. And the IGMLivng and IGMMak
scripts can be run via http requests by simply renaming them as
ordinary CGI scripts and uploading them to your cgi-bin directory.
Since they take single arguments, they can be run with a command like:
http://domain/~you/cgi-bin/igmmak.cgi?Macdonald
Once you're sure your site is working, there are a couple of optional steps you can take to make it more visible to the outside world.
Note that updating your site (for instance after changing the GEDCOM), is substantially easier than this first-time installation. Just make a copy of your GEDCOM on your home PC, run addphotos.exe and d2u.exe on it, then upload it to your server using FTP, and run igmlivng and igmmak on it there.
If something is not working, check first for the following common errors.
If you experience any problems, please seek help with your server first. Most servers have user's group mail lists, and you're bound to find a CGI expert there. If all else fails, feel free to contact me
Note that the Indexed GEDCOM Method programs are freeware, which means that you can use and modify them as you see fit, provided that the original copyright information is not removed or modified. If you download them and find them of use, please let me know by email, and I will notify you if there are improvements or upgrades in the programs.
Doug Macdonald <DAMacdonald@juno.com>
Best of Luck to you, and ENJOY !!!