version 1.2, 2000/05/23 16:33:28
|
version 1.4, 2003/02/03 18:03:52
|
Line 1
|
Line 1
|
<HTML> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
<HEAD> |
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<TITLE>LON-CAPA Packaging</TITLE> |
<html> |
</HEAD> |
<head> |
<BODY BGCOLOR=white> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta> |
<H1>LON-CAPA Packaging and Filesystem Management</H1> |
<title>LON-CAPA Packaging</title> |
<B>Functional Model Description</B> <I>(Scott Harrison, April 2000)</I> |
</head> |
<P> |
<body bgcolor="white"> |
<OL> |
<h1>LON-CAPA Packaging and Filesystem Management</h1> |
<LI>Synopsis |
<b>Description</b> |
<LI>Summary of Data Store Objects <I>(e.g. CVS, RPM, LCIC)</I> |
<ol> |
<LI>Summary of Processes <I>(e.g. making a CD image, upgrading a system, altering package composition)</I> |
<li>Synopsis</li> |
<LI>Summary of Actor Objects <I>(e.g. cron jobs, programmers, head packaging |
<li>Diagram</li> |
developer)</I> |
</ol> |
<LI>Functional Model Diagram |
<h2>Synopsis</h2> |
<LI>Description of the Functional Model Diagram |
<table width="60%" border="1"> |
<OL> |
<tr> |
<LI>Data Store Objects |
<td bgcolor="#dddddd" width="33%"><font face="helvetica">Scene 1</font></td> |
<LI>Processes |
<td bgcolor="#dddddd" width="33%"><font face="helvetica">Scene 2</font></td> |
<LI>Actor Objects |
<td bgcolor="#dddddd" width="33%"><font face="helvetica">Scene 3</font></td> |
</OL> |
</tr> |
<LI>Frequently Asked Questions |
<tr> |
</OL> |
<td width="33%"> |
<P> |
|
<H1>1. Synopsis</H1> |
|
Up to this point, dozens of scripts have been written |
<img src="bug.gif" alt="a feature" /><br /> |
to automate various elements of the LON-CAPA <U>installation</U>, <U>upgrade</U>, and <U>software development</U> process. A number of significant issues |
<p> |
relate to this effort. Security on the system is largely a matter of <B>limiting</B> |
<strong>+ LON-CAPA<br /> |
unnecessary network services, <B>monitoring</B> the filesystem of LON-CAPA |
----------------<br /> |
servers to make full account for the presence of every file on the system, |
= LON-CAPA (new)</strong> |
and securely <B>communicating potential problems</B> to system administrators of a given |
</p> |
LON-CAPA server machine. |
</td> |
<P> |
<td> |
This document is the functional model description which describes the computations |
<p><strong> |
and expected results necessary to manage packaging and filesystem management |
|
for LON-CAPA both now and in the future in a manner that is <B>synchronous</B> |
|
with software development, installations, and upgrades. Promulgation of coding |
LON-CAPA (new)<br /> |
changes, version control, and maintaining a handle on security and network optimization |
+ System Administrator<br /> |
issues (such as introducing SAMBA and NetaTalk into the network architecture) have |
----------------<br /> |
been some of the reasons for introducing a more strongly defined characterization |
= </strong><img src="almostfixed.gif" alt="good times" /></p></td> |
of all of these processes involved with LON-CAPA software packaging and file system |
<td> |
management. |
|
<P> |
|
<H1>2. Summary of Data Store Objects</H1> |
<img src="working.gif" alt="everything is wonderful" /></td> |
<UL> |
</tr> |
<LI><B>CVS</B> |
<tr> |
<BR>Concurrent Versions System. A central file repository is set up for LON-CAPA software development. |
<td width="33%"> |
<LI><B>RPM</B> |
<p> |
<BR>Red Hat Package Manager. A system to manage software applications (packages). This system tracks package |
Once upon a time, a little green fellow added a "feature" |
interdependencies, configuration files, and file alterations. The RPM packaging system can (and probably should) reside on a different |
to a hypothetical piece of software called LON-CAPA |
computer than the central file repository computer. The RPM packaging system should probably be on a computer |
(for lack of a better term). |
accessible to programmers involved with system development. |
</p> |
<LI><B>LCIC</B> |
</td> |
<BR>LON-CAPA Integrity Check. A script-based system which analyzes a computer to determine the RPM composition |
<td width="33%"> |
(missing or contrastingly extraneous RPMs), extraneous files which do not belong to any RPM, and RPM file |
"Uh-oh" said the system administrator. "I have to upgrade |
alterations. |
my LON-CAPA system again?" |
</UL> |
</td> |
<P> |
<td width="33%"> |
<H1>3. Summary of Processes</H1> |
But because the green fellow used XML to specify |
<UL> |
the software, there weren't any errors during the |
<LI><B>Non-automated processes</B> |
software upgrade, so everybody lived happily ever after. |
<UL> |
</td> |
<LI><B>implements change</B> |
</tr> |
<BR>Programmer creates a successful change to the LON-CAPA software. To carry out this step, the programmer |
</table> |
must enter in bug-free code to the CVS file repository. The programmer must also inform the packaging developer |
<h2>Diagram</h2> |
as to where and how the files need to be placed and configured on LON-CAPA computer systems. |
<img src="scheme.gif" alt="diagram of the scheme" /> |
<LI><B>alter package composition</B> |
</body> |
<BR>The packaging developer may choose to add/remove different sets of entire RPM packages from LON-CAPA computer |
</html> |
systems. The packaging developer may also choose to modify the file composition and dependency details of individual |
|
RPM packages. <I>There are over 700 potential RedHat packages to select from on RedHat 6.1 disks. Selecting an appropriate |
|
mix of RPMs can GREATLY improve security on LON-CAPA systems (by, for instance, removing unnecessary services) and is |
|
considered the general start- and end- point of LON-CAPA security.</I> |
|
<LI><B>change process programs</B> |
|
<BR>The various automated processes are to be written and modified by the packaging developer. These processes should |
|
reside on the packaging development system (RPM packaging system) as well the CVS file repository. |
|
<LI><B>upgrade</B> |
|
<BR>The packaging developer chooses when to upgrade the packaging system so that the packaging system upgrade passes |
|
along to other computers in the software development cluster. |
|
</UL> |
|
<LI><B>Automated processes</B> |
|
<UL> |
|
<LI><B>LON_CAPA_update_RPM_build_tree</B> |
|
<BR>Retrieves files out of the central software development CVS file repository. Builds any customized packages associated |
|
with the LON-CAPA system. |
|
<LI><B>LON_CAPA_make_CD_image</B> |
|
<BR>Compiles a RedHat installation/upgrade CD image based on the current LON-CAPA RPM packaging descriptions. |
|
<LI><B>LON_CAPA_post_CD_image</B> |
|
<BR>Make CD image available for other LON-CAPA development/run-time systems to upgrade from. |
|
<LI><B>LON_CAPA_upgrade_sys</B> |
|
<BR>Check to see if a general LON-CAPA RedHat system upgrade should be performed based on the version available from the packaging |
|
system. Also, monitor current status of system with LCIC (perhaps a "corrupt" system should be re-upgraded/re-installed). If upgrade |
|
should be performed, then perform a network install/upgrade while preserving all LON-CAPA configuration files. |
|
</UL> |
|
</UL> |
|
<P> |
|
<H1>4. Summary of Actor Objects</H1> |
|
<UL> |
|
<LI><B>Head Packaging Developer</B> |
|
<BR>Responsible for maintaining and writing scripts which automate the packaging and monitoring of distributed LON-CAPA systems. Also |
|
responsible for altering overall package composition of LON-CAPA systems. |
|
<LI><B>Programmer</B> |
|
<BR>Responsible for introducing software improvements to the LON-CAPA system itself. Submits software additions and modifications to |
|
the central CVS file repository. |
|
<LI><B>Cron</B> |
|
<BR>Cron jobs issue scheduled commands to facilitate the independent distributed processing of the various scripts associated with |
|
LON-CAPA Packaging and Filesystem Management. |
|
</UL> |
|
<P> |
|
<H1>5. Functional Model Diagram</H1> |
|
<IMG BORDER=1 SRC=scheme.gif> |
|
<P> |
|
<H1>6. Description of the Functional Model Diagram</H1> |
|
I will now describe a semi-chronological viewpoint of how all the different processes take place |
|
so as to better understand both the specifics of the functional model, as well as the pertinent |
|
dynamical and object-oriented characteristics of the algorithm. |
|
<P> |
|
Every week on Thursday at 3 in the morning, a <B>cron</B> job associated with the <B>RPM</B> packaging system on |
|
the main packaging computer updates the build tree of all LON-CAPA source RPMs based on files in the central |
|
<B>CVS</B> file repository. It does this by initiating the process <B>LON_CAPA_update_RPM_build_tree</B>. This process |
|
requests and receives files from the central <B>CVS</B> file repository, and updates all the source RPM file trees. RPM packages |
|
are then "bundled" by issuing build commands to the "Red Hat Package Manager" (<I>rpm -b ...</I>). |
|
<P> |
|
The <B>LON_CAPA_update_RPM_build_tree</B> process calls the <B>LON_CAPA_make_CD_image</B> process which writes a |
|
CD image into a single file on the main packaging system. This is followed by the process <B>LON_CAPA_post_CD_image</B> |
|
which mounts and posts the CD image file onto a web accessible location. |
|
<P> |
|
The <B>LON_CAPA_upgrade_sys</B> process is launched by a <B>cron</B> job specific to every individual |
|
computer present in the software development cluster. Each individual computer checks the main packaging computer to see |
|
if a system upgrade is needed. System upgrade information is passed to the <B>LCIC</B> on each specific computer (LON-CAPA |
|
Integrity Checker) so that integrity checking is done as a function of the most recent system upgrade. |
|
<P> |
|
Finally, on Sunday at 3 in the morning, a <B>cron</B> job associated with each computer launches the <B>LCIC</B> integrity checker |
|
system which resyncs itself based on the RPMs and files present on the system as well as information pertaining to |
|
the expected status of the system (in terms of upgrade, RPM composition, etc). The results of the <B>LCIC</B> integrity checker |
|
"re-syncing" are posted under a password controlled directory. |
|
<P> |
|
<H1>7. Frequently Asked Questions</H1> |
|
<P> |
|
<OL> |
|
<LI><B>What does LON-CAPA stand for?</B> |
|
<BR>The LearningOnline Network with a Computer-Assisted Personalized Approach |
|
<P> |
|
<LI><B>What is the general structure of the CVS repository?</B> |
|
<BR>These are the current directories: |
|
<BR><U>loncom</U> - server configuration and application files associated with LON-CAPA library and access servers |
|
<BR><U>lonline</U> - lecture online |
|
<BR><U>CAPA</U> - files associated with CAPA (homework processing, grading, homework generating, exam and quiz administration) |
|
<BR><U>doc</U> - documentation |
|
<BR><U>modules</U> - custom built software modules meant for use with the LON-CAPA project |
|
<BR><U>rat</U> - the "RAT"; resource assembly tool |
|
<BR><U>packaging</U> - files (including this one) specific to packaging and filesystem management of LON-CAPA |
|
<P> |
|
<LI><B>How does a programmer set himself up to use CVS?</B> |
|
<BR> |
|
<PRE> |
|
you will need to have the CVSROOT enviroment variable set to |
|
:pserver:yourname@zaphod.lite.msu.edu:/home/cvs |
|
To do this if you are using csh or tcsh put in your .login: |
|
setenv CVSROOT :pserver:yourname@zaphod.lite.msu.edu:/home/cvs |
|
For bash put this in .bash_profile |
|
export CVSROOT=:pserver:yourname@zaphod.lite.msu.edu:/home/cvs |
|
|
|
You can add the "cvs login" command to your .login/.bash_profile if you wish to make this simple. |
|
And you can add "cvs logout" to your .logout/.bash_logout so you rember to logout. |
|
|
|
To use CVS, you must first login (cvs login) and enter in your zaphod password. |
|
To leave CVS, you must logout (cvs logout). |
|
</PRE> |
|
<P> |
|
<LI><B>How does a programmer retrieve files from the CVS repository for the first time?</B> |
|
<BR><TT>cvs checkout [resourcename]</TT> |
|
<BR><TT>[resourcename]</TT> is one of the directories above (loncom, rat, doc, and so on) |
|
<P> |
|
<LI><B>How does a programmer update his files from the CVS repository?</B> |
|
<BR>(In other words, CVS server ----to----your---->> client computer.) |
|
<BR><TT>cvs update -d [resourcename]</TT> |
|
<BR><TT>[resourcename]</TT> is one of the directories above (loncom, rat, doc, and so on) |
|
<P> |
|
<LI><B>How does a programmer send his changes to the central CVS repository?</B> |
|
<BR>(In other words, client computer ----to----our---->> CVS server.) |
|
<BR><TT>cvs commit [resourcename]</TT> |
|
<BR><TT>[resourcename]</TT> is one of the directories above (loncom, rat, doc, and so on) |
|
<P> |
|
<LI><B>How does a programmer add or remove files from the central CVS repository?</B> |
|
<BR>Note: this is different from "updating" or "committing" changes. This is not the alteration |
|
of existing files. This is the ADDITION or REMOVAL of files. |
|
<BR>Within "the" directory, use these two commands to add a file: |
|
<BR><TT>cvs add [filename]</TT>; <TT>cvs commit</TT> |
|
<BR>Within "the" directory, use these two commands to remove a file: |
|
<BR><TT>cvs remove [filename]</TT>; <TT>cvs commit</TT> |
|
<P> |
|
<LI><B>How does a programmer add or remove directories from the central CVS repository?</B> |
|
<BR>Within the upper directory, use these two commands to add a directory: |
|
<BR><TT>cvs add [directoryname]</TT>; <TT>cvs commit</TT> |
|
<BR>Within "the" directory, use these two commands to remove a directory: |
|
<BR><TT>cvs remove [directoryname]</TT>; <TT>cvs commit</TT> |
|
<BR>There is a slight catch that you cannot directly "add" a new major directory like |
|
loncom, lonline, rat, doc, and so on. You must first "cvs add" it as a subdirectory, then |
|
move that subdirectory to the top directory structure and "cvs commit". |
|
<P> |
|
Better yet, you can <TT>cvs import</TT> your new directory into the top level area of the CVS repository. |
|
<LI><B>How does a programmer "inform" the packaging developer of changes to LON-CAPA system file composition?</B> |
|
<BR>By talking to the packaging developer in person. |
|
<BR>By making well-formatted changes to the <TT>packaging/file_map.txt</TT> file in the CVS repository. See below |
|
for more information on how to format the <TT>packaging/file_map.txt</TT> file. |
|
<P> |
|
<LI><B>What does "run any process" mean in the functional model?</B> |
|
<BR>Most processes are meant to run <I>automatically</I> and are invoked by cron jobs on various machines. |
|
It may be the case that, for instance, the processes need to be manually invoked so as to prepare |
|
a specific CD release. |
|
<P> |
|
<LI><B>Where are the automated processes located?</B> |
|
<BR>In the directory <TT>/usr/local/bin</TT>. |
|
<BR>By typing <TT>ls /usr/local/bin/LON_CAPA_*</TT>, you can view all the automated LON-CAPA processes associated with the computer systems. |
|
<P> |
|
<LI><B>Where are the <U>cron</U> jobs located? What are their names and how reliable are they?</B> |
|
<BR>On every LON-CAPA computer there is a file <TT>/etc/cron.d/LON_CAPA_filesystem</TT> which launches standard cron jobs. |
|
<BR>On the LON-CAPA main packaging computer there is a file <TT>/etc/cron.d/LON_CAPA_packager</TT> which launches cron jobs specific to the |
|
main packaging computer. |
|
<BR>On LON-CAPA software development computers, there is a file <TT>/etc/cron.d/LON_CAPA_upgrader</TT> which upgrades all computers in the |
|
LON-CAPA software development cluster. |
|
<P> |
|
<LI><B>Can automated processes be run manually? On the packaging computer? On other LON-CAPA computers?</B> |
|
<BR>Yes. To correctly manually run an automated process, look to see how the process is invoked in the <TT>/etc/cron.d</TT> directory. |
|
<P> |
|
<LI><B>What are the specifics associated with the RPM packaging system on the main packaging computer?</B> |
|
<BR>The RPM packaging system on the main packaging computer introduces the following differences to the main packaging computer compared to |
|
other computers in the software development cluster: |
|
<UL> |
|
<LI>Presence of RPM build tree |
|
<LI>Presence of CD image |
|
<LI>More automated processes present on system (LON_CAPA_update_RPM_build_tree, LON_CAPA_make_CD_image, LON_CAPA_post_CD_image) |
|
</UL> |
|
<P> |
|
<LI><B>What are the specifics associated with the process LON_CAPA_update_RPM_build_tree?</B> |
|
<BR>This process checkouts LON-CAPA directories and files. This process reads from the <TT>packaging/file_map.txt</TT> and the |
|
<TT>packaging/permissions.txt</TT> file. This process reads RPM <TT>.spec</TT> template files to set up the two LON-CAPA RPMs (LON-CAPA-base and LON-CAPA-auxiliary). |
|
These updated RPMs are placed into a pool of RPMs from which to generate the customized RedHat installation/upgrade CD. |
|
A 'comps' file is generated to customize the grouping of packages on the CD image. The CD image is written and made accessible |
|
on the web. |
|
<P> |
|
<LI><B>What are the specifics associated with the writing and web posting of the LON-CAPA system CD image on the main packaging computer?</B> |
|
<BR>There are a number of shell commands which need to be launched. (Details coming soon in this document.) |
|
<P> |
|
<LI><B>What are the specifics associated with the process LON_CAPA_make_CD_image?</B> |
|
<BR>There are a number of shell commands which need to be launched. (Details coming soon in this document.) |
|
<P> |
|
<LI><B>How are upgrades performed on the packaging computer? Is there any way to upgrade/install LON-CAPA on a new machine?</B> |
|
<BR>Upgrades are performed only based on package composition. New machines can be upgraded via network install or CD install. (More details coming soon.) |
|
<P> |
|
<LI><B>What are the specifics associated with the process LON_CAPA_post_CD_image?</B> |
|
<BR>There are a number of shell commands which need to be launched. (Details coming soon in this document.) |
|
<P> |
|
<LI><B>What are the specifics associated with the process LON_CAPA_upgrade_sys?</B> |
|
<BR>LON_CAPA_upgrade_sys does an automated network upgrade of any out-of-date packages based on the main packaging computer. |
|
LON_CAPA_upgrade_sys initializes and invokes the LCIC (integrity checker) based on current upgrade information. |
|
<P> |
|
<LI><B>What output from the LCIC (integrity checker) warrants taking corrective action?</B> |
|
<BR>Currently, the output from the LCIC consists of two files, TOTAL_FILE.txt and SUMMARY_FILE.txt. There are no immediate plans for |
|
automating any form of response to this output. This does provide information as to whether critical system binaries or configuration |
|
files are being tampered with. Perhaps the SUMMARY_FILE.txt should be e-mailed weekly to a system administrator at the responsible |
|
institution. |
|
<P> |
|
<LI><B>What is the correct format for the <TT>packaging/file_map.txt</TT> file?</B> |
|
<BR>Every line refers to a file or directory to install/upgrade on a LON-CAPA system. There are six fields to each line which are tab-separated. |
|
<PRE> |
|
[computer-type] |
|
[file location on CVS repository] |
|
[ultimate location on LON-CAPA system] |
|
[package name] |
|
[configuration settings that need to be saved?] |
|
[description of file and what it does] |
|
</PRE> |
|
<P> |
|
<LI><B>What is the correct format for the <TT>packaging/permissions.txt</TT> file?</B> |
|
<BR>Every line refers to a file or directory to install/upgrade on a LON-CAPA system. There are four/five fields to each line which are space-separated. |
|
File listing: |
|
<PRE> |
|
[octal mode] |
|
[user to own file] |
|
[group to own file] |
|
[file name] |
|
</PRE> |
|
Directory listing: |
|
<PRE> |
|
[octal mode] |
|
[user to own file] |
|
[group to own file] |
|
DIR |
|
[file name] |
|
</PRE> |
|
<UL> |
|
<LI><TT>[computer-type]</TT> - a list of capitalized letters indicating which computer-types this file is to be installed on. P=main packaging computer. A=LON-CAPA software development access server. L=LON-CAPA software development library server. C=central CVS file repository computer. PAL means this file is to be installed on the main packaging computer and the software development library and access servers. P means this file is to be installed on just the main packaging computer. AL means the file is to be installed on just the software development library and access servers. |
|
<LI><TT>[file location on CVS repository]</TT> - the file location on the CVS repository. For example, <TT>/loncom/htpasswd</TT>, <TT>loncom/startup.pl</TT>, and |
|
<TT>/rat/images/1.1.dt.gif</TT> are possible entries. |
|
<LI><TT>[ultimate location on LON-CAPA system]</TT> - where the file (taken from the CVS repository) is to be installed on the LON-CAPA system. For example, |
|
<TT>/home/httpd/lonTabs/htpasswd</TT>, <TT>/etc/httpd/conf/startup.pl</TT>, and <TT>/home/httpd/html/adm/rat/1.1.dt.gif</TT> are possible entries. |
|
<LI><TT>[package name]</TT> - What RPM package should this file be incorporated into for the final RPM install? Current possible entries are |
|
<TT>LON-CAPA-auxiliary</TT> and <TT>LON-CAPA-base</TT>. |
|
<LI><TT>[configuration settings that need to be saved?]</TT> - Every machine is anticipated to have a unique identity in terms of the role it |
|
fills at a given institution. For instance, /etc/httpd/conf/httpd.conf has settings like these: |
|
<PRE> |
|
PerlSetVar lonHostID msua3 |
|
# Role of this machine: library, access |
|
PerlSetVar lonRole access |
|
# Server Administration |
|
PerlSetVar lonAdmEMail korte@lite.msu.edu |
|
# Default domain |
|
PerlSetVar lonDefDomain msu |
|
</PRE> |
|
At some point, these settings need to be saved and used during upgrade processes. |
|
<LI><TT>[description of file and what it does]</TT> - a brief sentence. |
|
</UL> |
|
<P> |
|
<LI><B>What controls version naming in terms of system upgrades?</B> |
|
<BR>This information is present in <TT>packaging/version.txt</TT>. This file consists of three tab-separated fields (version number, release number, and version |
|
name). The release number is automatically incremented each week as a function of LON_CAPA_post_CD_image. The version number and release numbers are used |
|
to label the LON-CAPA-base and LON-CAPA-auxiliary RPMs as well as the customized RedHat CD release. |
|
</OL> |
|
</BODY> |
|
</HTML> |
|