File:  [LON-CAPA] / doc / build / Attic / understanding_files.html
Revision 1.1: download - view: text, annotated - select for diffs
Sat May 19 14:44:23 2001 UTC (23 years, 5 months ago) by harris41
Branches: MAIN
CVS tags: stable_2002_spring, stable_2001_fall, HEAD
description of how files and software packages are handled for the
LON-CAPA system

<html>
<head>
<title>Understanding the Files</title>
</head>
<body>
<h1>Understanding the Files</h1>
<p>
Scott Harrison, last updated 05/19/2001
</p>
<h3>Source repository summary</h3>
<p>
Within our source repository, there are 420 files which
are mapped into 39 different system directories.
</p>
<h3>The "one file" information strategy</h3>
<p>
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).
</p>
<p>
This "one file" also encodes the invocation of "build"
commands whenever compiled binaries need to be
regenerated due to changing source code.
</p>
<h3>Categorizing the files</h3>
<p>
To most efficiently manage details associated with
groups of files, we categorize them as shown in
the table below.
<TABLE BORDER=1 CELLPADDING=5 WIDTH=60%>
<TR>
<TH ALIGN=LEFT BGCOLOR=#FFFFFF>Type</TH>
<TH ALIGN=LEFT BGCOLOR=#FFFFFF>Permissions</TH>
<TH ALIGN=LEFT BGCOLOR=#FFFFFF>Development Permissions</TH>
</TR>
<TR>
<TD>symbolic link</TD>
<TD><TT> root:root</TT></TD>
<TD><TT> root:root</TT></TD>
</TR>
<TR>
<TD>interface file</TD>
<TD><TT>0444 root:root</TT></TD>
<TD><TT>0644 www:users</TT></TD>
</TR>
<TR>
<TD>setuid script</TD>
<TD><TT>6755 root:root</TT></TD>
<TD><TT>6755 root:root</TT></TD>
</TR>
<TR>
<TD>system file</TD>
<TD><TT>0644 root:root</TT></TD>
<TD><TT>0644 root:root</TT></TD>
</TR>
<TR>
<TD>script</TD>
<TD><TT>0700 www:users</TT></TD>
<TD><TT>0500 www:users</TT></TD>
</TR>
<TR>
<TD>conf</TD>
<TD><TT>0644 root:root</TT></TD>
<TD><TT>0644 root:root</TT></TD>
</TR>
<TR>
<TD>root script</TD>
<TD><TT>0700 root:root</TT></TD>
<TD><TT>0700 root:root</TT></TD>
</TR>
<TR>
<TD>handler</TD>
<TD><TT>0444 root:root</TT></TD>
<TD><TT>0600 www:users</TT></TD>
</TR>
<TR>
<TD>static conf</TD>
<TD><TT>0444 root:root</TT></TD>
<TD><TT>0444 root:root</TT></TD>
</TR>
<TR>
<TD>graphic file</TD>
<TD><TT>0444 root:root</TT></TD>
<TD><TT>0400 www:users</TT></TD>
</TR>
</table>
</p>
<h3>Special treatment of the "conf" category</h3>
<p>
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:
</p>
<ul>
<li>"/etc/httpd/conf/access.conf"</li>
<li>"/etc/smb.conf"</li>
<li>"/home/httpd/lonTabs/hosts.tab"</li>
<li>"/home/httpd/lonTabs/spare.tab"</li>
<li>"/etc/krb.conf"</li>
<li>"/etc/ntp.conf"</li>
</ul>
<p>
The command "make configinstall" will correctly
upgrade these files and intelligently conserve
configuration information present within them.
</p>
<h3>The entire file space</h3>
<p>
A standard LON-CAPA development system has a total
of 47464 files belonging to a total of 416 different
software packages.
</p>
<p>
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.
</p>
<table border=1>
<tr><td>LON-CAPA-setup-3.1-1</td>
<td>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.</td></tr>
<tr><td>LON-CAPA-base-3.1-1</td>
<td>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.</td></tr>
<tr><td>LON-CAPA-krb4-3.1-1</td>
<td>This RPM encodes 222 files needed to support Athena-Kerberos version
4 authentication.</td></tr>
<tr><td>LON-CAPA-loncapaconfig-3.1-1</td>
<td>This RPM encodes a python-Tk GUI for configuring variables
on your LON-CAPA machine.  There are 569 files in this RPM.
/usr/sbin/loncapaconfig launches the GUI.  The GUI works well,
but is not yet recommended for standard use.
</td></tr>
<tr><td>LON-CAPA-mysql-3.1-1</td>
<td>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.</td></tr>
<tr><td>LON-CAPA-systemperl-3.1-1</td>
<td>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.
</td></tr>
<tr><td>LON-CAPA-barcode-3.1-1</td>
<td>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</td></tr>
</table>
</p>
<h3>A note on dependencies</h3>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<h3>A note on the installation CD</h3>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
</body>
</html>


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>