Understanding the Files

Scott Harrison, last updated 05/19/2001

Source repository summary

Within our source repository, there are 420 files which are mapped into 39 different system directories.

The "one file" information strategy

We manage all the installation file details of LON-CAPA within one file. This file keeps track of the associated file ownerships and permissions as well as directory ownerships and permissions. We also allow for different sets of file/directory ownerships and permissions to be applied (a development set, and a run-time "secure" set).

This "one file" also encodes the invocation of "build" commands whenever compiled binaries need to be regenerated due to changing source code.

Categorizing the files

To most efficiently manage details associated with groups of files, we categorize them as shown in the table below.
Type Permissions Development Permissions
symbolic link root:root root:root
interface file 0444 root:root 0644 www:users
setuid script 6755 root:root 6755 root:root
system file 0644 root:root 0644 root:root
script 0700 www:users 0500 www:users
conf 0644 root:root 0644 root:root
root script 0700 root:root 0700 root:root
handler 0444 root:root 0600 www:users
static conf 0444 root:root 0444 root:root
graphic file 0444 root:root 0400 www:users

Special treatment of the "conf" category

During both installation and upgrades, our procedures safeguard the contents of your machine's configuration. During a CVS upgrade, when you type: "make install", NONE of your "conf" files are overwritten. These include:

The command "make configinstall" will correctly upgrade these files and intelligently conserve configuration information present within them.

The entire file space

A standard LON-CAPA development system has a total of 47464 files belonging to a total of 416 different software packages.

409 of these packages come from ftp.redhat.com. The other 7 of these packages represent "custom-built subsystems" needed to implement LON-CAPA on a machine.

LON-CAPA-setup-3.1-1 Used only during a fresh installation, this RPM overwrites the /etc/passwd, /etc/group, /etc/hosts.deny, /etc/pam.d/login, and /etc/pam.d/passwd files of the standard RedHat setup-*.rpm. This RPM is installed automatically by the LON-CAPA installation CD. (You should never install this manually since you will lose ability to log into your computer). This RPM also sets up a /home/www directory during the installation.
LON-CAPA-base-3.1-1 This RPM can be built from CVS by the RPM target in CVS:loncom/build/Makefile. This RPM handles the installation of all 420 CVS source files. We recommend that you do NOT upgrade this RPM on a running LON-CAPA system since you may lose your machine's configuration. All "conf" files are saved with .rpmsave extensions during an RPM upgrade. However, if you upgrade twice, you will wind up with useless .rpmsave backup files.
LON-CAPA-krb4-3.1-1 This RPM encodes 222 files needed to support Athena-Kerberos version 4 authentication.
LON-CAPA-mysql-3.1-1 This encodes MySQL version 3.23.33. This is the backend 'engine' for handling libraries of metadata. The usage of MySQL and LON-CAPA is described in greater detail at http://install.lon-capa.org/docs/loncapasqldatabase.html. This RPM contains 1066 files.
LON-CAPA-systemperl-3.1-1 This RPM contains 445 files which encode for various builds of perl modules taken from www.cpan.org. These perl modules come from about 16 different CPAN packages: Algorithm::Diff, Authen::Krb4, Crypt::DES, Crypt::IDEA, DBI, Digest::MD5, HTML-Tree, HTML::Parser, HTML::Tagset, MIME-tools, MIME::Base64, Msql-Mysql-modules, Net, Safe::Hole, URI, and libwww-perl.
LON-CAPA-barcode-3.1-1 This RPM contains 73 files which encode for the GD graphics library and a perl module GD::Barcode which manipulates the graphics library to produce a wide range of barcode formats. This RPM is described better at CVS:doc/build/barcode.html

A note on dependencies

In an ideal world, we could understand how to install anything and how every piece of software relied on every other piece of software. This would make compiling installations and upgrading computers a LOT easier.

Ideally, we would have used pre-existing RPMs for MySQL and some of the perl modules. The current, pre-existing RPMs for these components are found within ftp "contrib" repositories.

Unfortunately, these "contrib" RPMs make false assumptions about the standard directory setup of a RedHat 6.2 system as well as the existing shared object libraries. The solution was to "roll our own" RPMs based on compilations directly from source.

A note on the installation CD

We make every effort to include up-to-date RPMs on our installation CDs. This helps reduce the number of errors and increase security on LON-CAPA systems.

Unfortunately, it is not straightforward to have up-to-date kernels installed on machines. This is because the installation code (mostly written by RedHat) only supports one kernel version. After installation, you will need to upgrade your kernel by following instructions at http://www.redhat.com/support/docs/howto/kernel-upgrade/kernel-upgrade.html. I recommend that you do this soon after installation. In case something goes wrong, you can always start again.

The only other minor note is that the RedHat 6.2 upgrade RPM xntp3-5.93-15 was not installing correctly from the installation CD due to a dependency on a high version of rpmlib not present in the installation CD binaries. This was fixed by rebuilding the xntp3-5.93-15 RPM from a .src.rpm (source rpm) on a RedHat system with old versions of the rpm-* RPMs.