www-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

www/server/standards README.savannah.html


From: Karl Berry
Subject: www/server/standards README.savannah.html
Date: Sat, 01 Dec 2007 23:22:57 +0000

CVSROOT:        /web/www
Module name:    www
Changes by:     Karl Berry <karl>       07/12/01 23:22:57

Modified files:
        server/standards: README.savannah.html 

Log message:
        this savannah info is wildly outdated; redirect to current doc pages 
instead

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/server/standards/README.savannah.html?cvsroot=www&r1=1.62&r2=1.63

Patches:
Index: README.savannah.html
===================================================================
RCS file: /web/www/www/server/standards/README.savannah.html,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- README.savannah.html        30 Nov 2007 22:37:18 -0000      1.62
+++ README.savannah.html        1 Dec 2007 23:22:42 -0000       1.63
@@ -1,2370 +1 @@
-<html lang="en">
-<head>
-<title>`Savannah'</title>
-<meta http-equiv="Content-Type" content="text/html">
-<meta name=description content="`Savannah'">
-<meta name=generator content="makeinfo 4.1">
-<link href="http://texinfo.org/"; rel=generator-home>
-</head>
-<body>
-<h1>`Savannah'</h1>
-<p><hr>
-Node:<a name="Top">Top</a>,
-Next:<a rel=next href="#Introduction">Introduction</a>,
-Previous:<a rel=previous href="#dir">(dir)</a>,
-Up:<a rel=up href="#dir">(dir)</a>
-<br>
-
-<h2>Savannah</h2>
-
-<p>This document (<a href="#Publishing%20this%20document">Publishing this 
document</a>) is for Savannah
-administrators, not Savannah users. It describes the GNU Savannah software and 
takes the subversions installation as example.
-
-<a href="http://savannah.gnu.org/";>Savannah</a> is a <a 
href="http://www.sourceforge.net";>SourceForge</a>
-clone based on the
-<a 
href="http://download.sourceforge.net/alexandria/SF2_0.tar.gz";>SourceForge-2.0</a>
-software. It is dedicated to Free Software projects.
-
-<p>Because of the highly specific nature of the software, Savannah is a
-fork of the SourceForge-2.0 software.  Attempting to make it modular and
-configurable can be seen as a waste of time. 
-Anyway, <a href="mailto:address@hidden";>Jaime E. Villate</a> and <a 
href="mailto:address@hidden";>Mathieu Roy</a> are trying to do improve 
configurability because the original SourceForge software is no longer 
maintained. The whole Savannah software is
-<a href="http://savannah.gnu.org/cvs/?group_id=11";>available from CVS</a> and
-is managed by the
-<a href="http://savannah.gnu.org/projects/savannah/";>Savannah</a> project. The
-<a 
href="http://savannah.gnu.org/cgi-bin/viewcvs/savannah/savannah/ChangeLog";>ChangeLog</a>
-explains the modifications made to the original code.
-
-<p>The GNU Savannah Project have two major focus:
-<ul>
-<li>Enhancing the GNU Savannah software as possible (portability, swiftness, 
design, simplicity...) 
-<li>Hosting Free Softwares using GNU Savannah on subversions.gnu.org, at 
savannah.gnu.org (for GNU Projects) and freesoftware.fsf.org (for non-GNU 
Projects)
-
-</ul>
-
-<ul>
-<li><a href="#Introduction">Introduction</a>: 
-<li><a href="#Installation">Installation</a>: 
-<li><a href="#Database">Database</a>: 
-<li><a href="#Savannah%20Administrator">Savannah Administrator</a>: 
-<li><a href="#Group%20Types">Group Types</a>: 
-<li><a href="#Site%20Specific%20Content">Site Specific Content</a>: 
-<li><a href="#Download%20area">Download area</a>: 
-<li><a href="#CVS%20repositories">CVS repositories</a>: 
-<li><a href="#Set%20up%20a%20mailing%20list">Set up a mailing list</a>: 
-<li><a href="#Account%20Management">Account Management</a>: 
-<li><a href="#Mailman">Mailman</a>: 
-<li><a href="#Mails%20and%20aliases">Mails and aliases</a>: 
-<li><a href="#Unlock%20alias%20at%20gnu.org%20account">Unlock alias at gnu.org 
account</a>: 
-<li><a href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>: 
-<li><a href="#Publishing%20this%20document">Publishing this document</a>: 
-<li><a href="#System%20Administration">System Administration</a>: 
-<li><a href="#Concept%20Index">Concept Index</a>:
-
-<p>--- The Detailed Node Listing ---
-
-<p>Installation
-
-</p><li><a href="#A%20Typical%20Installation">A Typical Installation</a>: 
-<li><a href="#Subversions%20installation">Subversions installation</a>:
-
-<p>Database
-
-</p><li><a href="#Setting%20up%20the%20Database">Setting up the Database</a>: 
-<li><a href="#Remote%20Access">Remote Access</a>: 
-<li><a href="#XML%20Dump">XML Dump</a>: 
-<li><a href="#Database%20Backups">Database Backups</a>: 
-<li><a href="#Group%20Types%20Table">Group Types Table</a>: 
-<li><a href="#Skill%20List">Skill List</a>:
-
-<p>Savannah Administrator
-
-</p><li><a href="#How%20it%20works%20in%20general">How it works in 
general</a>: 
-<li><a href="#How%20it%20works%20on%20subversions">How it works on 
subversions</a>:
-
-<p>Group Types
-
-</p><li><a href="#Understand%20Group%20Types">Understand Group Types</a>: 
-<li><a href="#GNU%20and%20non-GNU%20on%20subversions">GNU and non-GNU on 
subversions</a>:
-
-<p>Site Specific Content
-
-</p><li><a href="#One%20more%20time%20how%20it%20works%20in%20general">One 
more time how it works in general</a>: 
-<li><a href="#One%20more%20time%20how%20it%20works%20on%20subversions">One 
more time how it works on subversions</a>:
-
-<p>CVS repositories
-
-</p><li><a href="#Import%20repositories">Import repositories</a>: 
-<li><a href="#Sources%20CVS%20repositories">Sources CVS repositories</a>: 
-<li><a href="#Getting%20email%20from%20CVS">Getting email from CVS</a>: 
-<li><a href="#Source%20CVS%20tarbals">Source CVS tarbals</a>: 
-<li><a href="#Web%20CVS%20repositories">Web CVS repositories</a>: 
-<li><a href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic links</a>: 
-<li><a href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on 
commit</a>: 
-<li><a href="#Web%20CVS%20and%20Projects">Web CVS and Projects</a>:
-
-<p>Mailing lists for non-GNU packages
-
-</p><li><a href="#...Managed%20by%20Group%20Type">...Managed by Group Type</a>:
-
-<p>System Administration
-
-</p><li><a href="#SSL%20certificate">SSL certificate</a>: 
-<li><a href="#Project%20registration%20discarding">Project registration 
discarding</a>: 
-<li><a href="#Web%20Usage%20Statistics">Web Usage Statistics</a>: 
-<li><a href="#Savannah%20crontab">Savannah crontab</a>: 
-<li><a href="#Savannah%20logs">Savannah logs</a>: 
-<li><a href="#Savannah%20software%20root">Savannah software root</a>: 
-<li><a href="#NGROUPS_MAX">NGROUPS_MAX</a>: 
-<li><a href="#cvs">cvs</a>: 
-<li><a href="#cron">cron</a>: 
-<li><a href="#sftp">sftp</a>: 
-<li><a href="#lsh%20and%20ssh">lsh and ssh</a>: 
-<li><a href="#Booting%20with%20grub%20and%20not%20lilo">Booting with grub and 
not lilo</a>: 
-<li><a href="#Emergency%20situation">Emergency situation</a>: 
-<li><a href="#Linux%20configuration">Linux configuration</a>: 
-<li><a href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>: 
-<li><a href="#Savannah%20themes">Savannah themes</a>: 
-<li><a href="#Savannah%20elisp">Savannah elisp</a>:
-
-</ul>
-
-<p><hr>
-Node:<a name="Introduction">Introduction</a>,
-Next:<a rel=next href="#Installation">Installation</a>,
-Previous:<a rel=previous href="#Top">Top</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Introduction</h2>
-
-<p>Savannah currently provides a CVS frontend, web space management thru
-CVS, HTTP download area, bug tracking and mailing
-lists.
-
-<p>Setting up Savannah is not an easy task because it has to integrate existing
-habits and projects without breaking anything. However, the <a 
href="http://www.zoy.org/~guillaum/SF/";>SourceForge Installation Guide</a> by
-<a href="mailto:address@hidden";>Guillaume Morin</a> helps a lot
-understanding the software.
-
-<p><hr>
-Node:<a name="Installation">Installation</a>,
-Next:<a rel=next href="#Database">Database</a>,
-Previous:<a rel=previous href="#Introduction">Introduction</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Installation</h2>
-
-<ul>
-<li><a href="#A%20Typical%20Installation">A Typical Installation</a>: 
-<li><a href="#Subversions%20installation">Subversions installation</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="A%20Typical%20Installation">A Typical Installation</a>,
-Next:<a rel=next href="#Subversions%20installation">Subversions 
installation</a>,
-Previous:<a rel=previous href="#Installation">Installation</a>,
-Up:<a rel=up href="#Installation">Installation</a>
-<br>
-
-<h3>A Typical Installation</h3>
-
-<p>First, you need to get a copy of Savannah. See <a 
href="http://savannah.gnu.org/cvs/?group=savannah";>http://savannah.gnu.org/cvs/?group=savannah</a>.
 The Savannah CVS have several modules. The base module is <code>savannah</code>
-
-<br><pre># anonymous access
-cvs -d:pserver:address@hidden:/cvsroot/savannah login
-cvs -z3 -d:pserver:address@hidden:/cvsroot/savannah co savannah
-</pre>
-
-<p>Then, you can configure it. There are two configuration files. The first 
one is called <code>local.inc.pl</code>, coded in Perl, the second is 
<code>local.inc</code>, in PHP, used by the PHP Engine. The second is generated 
by reading the first, so it does not make sense to modify the second.
-
-<p>To create <code>local.inc.pl</code>, you must use the script 
<code>sv_update_conf</code>. This is how you should proceed:
-
-<br><pre>cd where_savannah_was_downloaded
-./configure
-make conf
-</pre>
-
-<p>At this point, you should manually edit this file, especially if you want 
extra features such as kerberos, webalizer (described below). After editing 
<code>sv_update_conf</code>, you must run <code>sv_update_conf</code>. This is 
how you should proceed:
-
-<br><pre># pwd == where_savannah_was_downloaded
-# Edit the file with the extensible One
-emacs etc/savannah/local.inc.pl
-make update-conf
-</pre>
-
-<p><code>sv_update_conf</code> also created a log and crontab entries. We'll 
explain this later.
-
-<p>Finish the installation by copying the savannah scripts (with sv_ prefix) 
typing:
-
-<br><pre>make install
-</pre>
-
-<p>The scripts will be installed in <code>bindir</code> (check the Makefile 
for the actual value of bindir).
-
-<p>Finally, you need to edit the Apache configuration. Add something like the 
following (assuming that your configuration file (<code>local.inc.pl</code>) is 
in <code>/etc/savannah</code>):
-
-<br><pre>&lt;Location thisdomain&gt;
-    SetEnv SV_LOCAL_INC_PREFIX /etc/savannah
-&lt;/Location&gt;
-</pre>
-
-<p><hr>
-Node:<a name="Subversions%20installation">Subversions installation</a>,
-Previous:<a rel=previous href="#A%20Typical%20Installation">A Typical 
Installation</a>,
-Up:<a rel=up href="#Installation">Installation</a>
-<br>
-
-<h3>Subversions Installation</h3>
-
-<p>Savannah is installed on the machine subversions.gnu.org. The root
-of the installation is in /subversions/sourceforge. All the software
-that is not system wide and is needed to run Savannah is installed in
-this directory. The structure of this directory is similar to FHS-2.1. 
-In the following table the path names are relative to the installation
-root. All directories covered by the <a 
href="http://www.zoy.org/~guillaum/SF/";>SourceForge Installation Guide</a> are 
omitted.
-
-<dl>
-
-<br><dt><code>/etc/savannah</code>
-<dd>Savannah configuration files such as <code>local.inc.pl</code> and 
<code>local.inc</code>.
-
-<br><dt><code>tmp</code>
-<dd>Directory to run the backend scripts.
-
-<br><dt><code>src/savannah</code>
-<dd>The SourceForge software and the <a 
href="http://savannah.gnu.org/";>Savannah</a>
-web pages.
-
-<br><dt><code>src/savannah/www</code>
-<dd>The document root of <a href="http://savannah.gnu.org/";>Savannah</a>
-web pages.
-
-<br><dt><code>src/savannah/gnuscripts</code>
-<dd>Savannah specific backend scripts.
-
-</dl>
-
-<p>The whole Savannah software is
-<a href="http://savannah.gnu.org/cvs/?group_id=11";>available from CVS</a>
-and is managed by the
-<a href="http://savannah.gnu.org/projects/savannah/";>Savannah</a> project.
-
-<p>In the root user home, symlinks exists to the savannah installation. 
<code>~/sv_subversions</code> point to 
<code>/subversions/sourceforge/src/savannah</code>.
-
-<p><hr>
-Node:<a name="Database">Database</a>,
-Next:<a rel=next href="#Savannah%20Administrator">Savannah Administrator</a>,
-Previous:<a rel=previous href="#Installation">Installation</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Database</h2>
-
-<ul>
-<li><a href="#Setting%20up%20the%20Database">Setting up the Database</a>: 
-<li><a href="#Remote%20Access">Remote Access</a>: 
-<li><a href="#XML%20Dump">XML Dump</a>: 
-<li><a href="#Database%20Backups">Database Backups</a>: 
-<li><a href="#Group%20Types%20Table">Group Types Table</a>: 
-<li><a href="#Skill%20List">Skill List</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="Setting%20up%20the%20Database">Setting up the Database</a>,
-Next:<a rel=next href="#Remote%20Access">Remote Access</a>,
-Previous:<a rel=previous href="#Database">Database</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>Setting up the Database</h3>
-
-<p>GNU Savannah uses MySQL. We plan to make it support PostgreSQL in the 
future. 
-The database may be called <code>savannah</code>. On subversions, for 
historical reasons, it's name is <code>sourceforge</code>.
-
-<p>You may create a <code>~/.my.cnf</code> for the root user to defines the 
user/passwd. This is not mandatory but it saves typing them on the command line 
and allows cron jobs to run. This is an example of this file
-
-<br><pre>[client]
-user=mysql_user
-password=hey_this_is_supposed_to_be_secret
-</pre>
-
-<p>To create your database, you must have previously created a basic 
configuration. See the previous chapter. In the following manners, you can 
create and initialize the whole database:
-
-<br><pre>make database
-make database-structure
-make database-initvalues
-</pre>
-
-<p>You can take a look at <code>savannah/db/mysql</code>, each table
-is described here and in the READMEs.
-
-<p><hr>
-Node:<a name="Remote%20Access">Remote Access</a>,
-Next:<a rel=next href="#XML%20Dump">XML Dump</a>,
-Previous:<a rel=previous href="#Setting%20up%20the%20Database">Setting up the 
Database</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>Remote Access</h3>
-
-<p>A read-only access to the <code>sourceforge</code> database on subversions 
is granted  to the following machines:
-
-<dl>
-
-<br><dt><code>fr.fsf.org</code>
-<dd>with the user name france and the password is known by
-<a href="mailto:address@hidden";>Loic Dachary</a>.
-
-</dl>
-
-<p><hr>
-Node:<a name="XML%20Dump">XML Dump</a>,
-Next:<a rel=next href="#Database%20Backups">Database Backups</a>,
-Previous:<a rel=previous href="#Remote%20Access">Remote Access</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>XML Dump</h3>
-
-<p>The <code>sv_xml</code> script builds daily an XML dump of the
-public information from the Savannah database into a filled called
-savannah.xml.
-
-<p>In addition a dump containing information that users may not want to
-publish to the public such as email and ssh public keys is built in
-<code>/subversions/sourceforge/dumps/savannah.xml</code>. The command line
-
-<br><pre>sv_xml --private
-</pre>
-
-<p>is used to generate this dump.
-
-<p>The directory where those files are stored is defined in 
<code>local.inc.pl</code>. It's the <code>sys_miscdir</code>.
-
-<p>A set of XSLT files can be written in the /subversions/sourceforge/dumps 
(in the case of subversions - replace this by your <code>sys_miscdir</code>)
-directory to build custom files from the <code>savannah.xml</code> file that
-is located in the same directory. This is used, for instance, for
-account creation information files. If an XSLT file is created
-(<code>a.xsl</code> for instance) the <code>Makefile</code> must be updated to 
add the
-<code>a.txt</code> file in the list of dependencies of the <code>all</code> 
goal. 
-For instance:
-
-<br><pre>all: accounts-fsffr.txt accounts.txt myown.txt
-</pre>
-
-<p>The generation of both savannah.xml files and the XSLT processing is
-run daily from the crontab.
-
-<p><hr>
-Node:<a name="Database%20Backups">Database Backups</a>,
-Next:<a rel=next href="#Group%20Types%20Table">Group Types Table</a>,
-Previous:<a rel=previous href="#XML%20Dump">XML Dump</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>Database Backups</h3>
-
-<p>The MySQL database (named <code>sourceforge</code> on subversions) that 
holds all the
-information used by you Savannah installation is dumped daily.
-
-<p>For subversions, see http://savannah.gnu.org/projects/sysadmin/ to find out 
where the dumps are stored. The dumps are compressed and rotated daily with a 
maximum of 30, as described in <code>logrotate.conf</code>.  The
-<code>sv_backup</code> script takes care of all this and is called from the
-crontab.
-
-<p>Normally, it's stored in the <code>sys_miscdir</code> defined in the 
configuration file <code>local.inc.pl</code>.
-
-<p><hr>
-Node:<a name="Group%20Types%20Table">Group Types Table</a>,
-Next:<a rel=next href="#Skill%20List">Skill List</a>,
-Previous:<a rel=previous href="#Database%20Backups">Database Backups</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>Group Types Table</h3>
-
-<p>We recently (Aug 2002) changed the usage of the group_type table. If
-you have a old savannah installation, drop the old table and create
-the new one by using the files 
<code>savannah/db/mysql/table_group_type*</code>.
-
-<p>The new group_type usage is described in a whole chapter. See below.
-
-<p><hr>
-Node:<a name="Skill%20List">Skill List</a>,
-Previous:<a rel=previous href="#Group%20Types%20Table">Group Types Table</a>,
-Up:<a rel=up href="#Database">Database</a>
-<br>
-
-<h3>Skill List</h3>
-
-<p>The tables <code>people_skill</code> and <code>people_skill_level</code> 
are loaded
-from the skill database maintained by CJN (http://cjn.sourceforge.net/). 
-The script <code>sv_skill</code>
-loads the XML skill files from CJN and replace the content of the
-tables in the savannah database.
-
-<p>You can remove some softwares you do not to be shown on the list:
- add them to the %ignore table in the sv_skill script and re-run it.
-
-<p>In the case of subversion, we do not want to see proprietary softwares.
-
-<br><pre>cd /subversions/sourceforge/src/savannah/gnuscripts
-edit sv_skill
-sv_skill
-cvs commit -m 'Ignore proprietary software xxxx'
-</pre>
-
-<p><hr>
-Node:<a name="Savannah%20Administrator">Savannah Administrator</a>,
-Next:<a rel=next href="#Group%20Types">Group Types</a>,
-Previous:<a rel=previous href="#Database">Database</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Savannah Administrator</h2>
-
-<ul>
-<li><a href="#How%20it%20works%20in%20general">How it works in general</a>: 
-<li><a href="#How%20it%20works%20on%20subversions">How it works on 
subversions</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="How%20it%20works%20in%20general">How it works in general</a>,
-Next:<a rel=next href="#How%20it%20works%20on%20subversions">How it works on 
subversions</a>,
-Previous:<a rel=previous href="#Savannah%20Administrator">Savannah 
Administrator</a>,
-Up:<a rel=up href="#Savannah%20Administrator">Savannah Administrator</a>
-<br>
-
-<h3>How it works in general</h3>
-
-<p>At a given time only one person can be in charge of approving or
-rejecting projects submitted to the Savannah installation. The /admin/ 
interface is not fit for concurrent access.
-
-<p>You must create an admin user. Go to the web interface and register an user 
(should be #101). 
-Then, execute the following mysql command:
-
-<br><pre>mysql -u user -ppassword -e "insert into user_group 
(user_id,group_id,admin_flags) values (101,1,'A')" dbname
-</pre>
-
-<p>You can give the admin rights to others users by adapting this command.
-
-<p><hr>
-Node:<a name="How%20it%20works%20on%20subversions">How it works on 
subversions</a>,
-Previous:<a rel=previous href="#How%20it%20works%20in%20general">How it works 
in general</a>,
-Up:<a rel=up href="#Savannah%20Administrator">Savannah Administrator</a>
-<br>
-
-<h3>How it works on subversions</h3>
-
-<p>Since at a given time only one person can be in charge of approving or
-rejecting projects submitted to the Savannah installation, the user assigned 
to this task is the one in charge. It is his responsibility to find someone 
else before leaving :-)
-
-<p>People currently (Aug 2002) playing this role are
-<a href="mailto:address@hidden";>Jaime E. Villate</a>, <a 
href="mailto:address@hidden";>Loic Dachary</a> and <a 
href="mailto:address@hidden";>Mathieu Roy</a>.
-
-<p>The tasks <a 
href="https://savannah.gnu.org/pm/task.php?func=detailtask&amp;project_task_id=54&amp;group_id=11&amp;group_project_id=30";>submission
 moderation</a> and <a 
href="https://savannah.gnu.org/pm/task.php?func=detailtask&amp;project_task_id=868&amp;group_id=11&amp;group_project_id=30";>bug
 dispatching</a> are assigned to the person currently in charge of approving 
the projects submitted to Savannah.
-
-<p>The password of the <code>admin</code> user is known by
-<a href="mailto:address@hidden";>Loic Dachary</a>, <a 
href="mailto:address@hidden";>Guillaume Morin</a>, <a 
href="mailto:address@hidden";>Hugo Gayosso</a>,
-<a href="mailto:address@hidden";>Jaime E. Villate</a> and
-<a href="mailto:address@hidden";>Mathieu Roy</a>.
-
-<p><hr>
-Node:<a name="Group%20Types">Group Types</a>,
-Next:<a rel=next href="#Site%20Specific%20Content">Site Specific Content</a>,
-Previous:<a rel=previous href="#Savannah%20Administrator">Savannah 
Administrator</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Group Types</h2>
-
-<ul>
-<li><a href="#Understand%20Group%20Types">Understand Group Types</a>: 
-<li><a href="#GNU%20and%20non-GNU%20on%20subversions">GNU and non-GNU on 
subversions</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="Understand%20Group%20Types">Understand Group Types</a>,
-Next:<a rel=next href="#GNU%20and%20non-GNU%20on%20subversions">GNU and 
non-GNU on subversions</a>,
-Previous:<a rel=previous href="#Group%20Types">Group Types</a>,
-Up:<a rel=up href="#Group%20Types">Group Types</a>
-<br>
-
-<h3>Understand Group Types</h3>
-
-<p>Something new we introduced recently (Aug 2002) in Savannah is group type. 
While, with the original SF code, group type was things like 
<code>Foundries</code> or <code>Project</code>, things really differents, now 
it just define thing that can be exactly the same: projects.
-
-<p>It defines what features a group can use (as cvs, mailing-list) and how 
(mailing-list default address, viewcvs base url, cvsroot directory, base host).
-
-<p>After creating an admin account, you must login and create at least one 
group type. Choose <code>Group Type Editing</code> in the menu.
-
-<p>While people will register project, they will be asked to tell which type 
of project their project should be.
-
-<p><hr>
-Node:<a name="GNU%20and%20non-GNU%20on%20subversions">GNU and non-GNU on 
subversions</a>,
-Previous:<a rel=previous href="#Understand%20Group%20Types">Understand Group 
Types</a>,
-Up:<a rel=up href="#Group%20Types">Group Types</a>
-<br>
-
-<h3>GNU and non-GNU on subversions</h3>
-
-<p>On Savannah, we host GNU and non-GNU project. We consider them as group 
type and so every definitions related to them are stored in group_type table.
-
-<p>The base host is different. While GNU project have savannah.gnu.org as base 
host, non-GNU have freesoftware.fsf.org.
-
-<p>Configuration files for GNU are in <code>/etc/savannah/savannah-conf</code> 
and the ones for non-GNU are in <code>/etc/savannah/freesoftware-conf</code>.
-
-<p>Content files for GNU are in <code>/etc/savannah/savannah-content</code> 
and the ones for non-GNU are in <code>/etc/savannah/freesoftware-content</code>.
-
-<p>Configuration files directly in <code>/etc/savannah</code> are symlinks to 
<code>/etc/savannah-conf</code> since savannah.gnu.org is the default virtual 
server.
-
-<p>Apache conf must be edited to reflect this. For example, we should have 
something like the following for each virtual server.
-
-<p>We also have a special group type called www.gnu.org which is about
-www.gnu.org webmastering. On this one, the homepage dir is not guessed
-(group type option). It permits to set this dir with a name different
-than the group name. For instance, the HTML cvs directory of
-japanesegnui is /japan.
-
-<br><pre>&lt;Location thisdomain&gt;
-    SetEnv SV_LOCAL_INC_PREFIX /etc/savannah-conf
-&lt;/Location&gt;
-</pre>
-
-<p><hr>
-Node:<a name="Site%20Specific%20Content">Site Specific Content</a>,
-Next:<a rel=next href="#Download%20area">Download area</a>,
-Previous:<a rel=previous href="#Group%20Types">Group Types</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Site Specific Content</h2>
-
-<ul>
-<li><a href="#One%20more%20time%20how%20it%20works%20in%20general">One more 
time how it works in general</a>: 
-<li><a href="#One%20more%20time%20how%20it%20works%20on%20subversions">One 
more time how it works on subversions</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="One%20more%20time%20how%20it%20works%20in%20general">One more 
time how it works in general</a>,
-Next:<a rel=next 
href="#One%20more%20time%20how%20it%20works%20on%20subversions">One more time 
how it works on subversions</a>,
-Previous:<a rel=previous href="#Site%20Specific%20Content">Site Specific 
Content</a>,
-Up:<a rel=up href="#Site%20Specific%20Content">Site Specific Content</a>
-<br>
-
-<h3>One more time how it works in general</h3>
-
-<p>You can change content of your Savannah installation. For instance, the 
footer of every page.
-
-<p>Data is partially separated for the PHP Engine. The default content is in 
<code>etc/site-specific-content</code>. But you can choose the directory you 
want and, as you may guess if you've read the previous chapter, choose 
different content for each group type.
-
-<p><hr>
-Node:<a name="One%20more%20time%20how%20it%20works%20on%20subversions">One 
more time how it works on subversions</a>,
-Previous:<a rel=previous 
href="#One%20more%20time%20how%20it%20works%20in%20general">One more time how 
it works in general</a>,
-Up:<a rel=up href="#Site%20Specific%20Content">Site Specific Content</a>
-<br>
-
-<h3>One more time how it works on subversions</h3>
-
-<p>Since we always want to manage content via CVS, the site specific content 
is in two cvs module called <code>savannah-content</code> and 
<code>freesoftware-content</code> created following the example of 
<code>savannah/etc/site-specific-content</code>.
-
-<p><hr>
-Node:<a name="Download%20area">Download area</a>,
-Next:<a rel=next href="#CVS%20repositories">CVS repositories</a>,
-Previous:<a rel=previous href="#Site%20Specific%20Content">Site Specific 
Content</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Download area</h2>
-
-<p>Here, we describe the subversion case. We recommand you to only accept 
secured transfer protocols. Do you need more informations?
-
-<p>Each project registered on Savannah that is not part of the GNU
-project is granted a publicly available file download area at
-
-<br><pre>http://freesoftware.fsf.org/download/projectname/
-</pre>
-
-<p>Each project member can upload files to this directory by using scp or
-rsync over ssh to the following location:
-
-<br><pre>freesoftware.fsf.org:/upload/projectname/
-</pre>
-
-<p>Sample commands for doing this are:
-
-<br><pre>#
-# Copy an entire tree verbatim, that may imply to remove files on
-# freesoftware.fsf.org.
-#
-rsync --delete -av --rsh=ssh . freesoftware.fsf.org:/upload/projectname
-#
-# Copy a single file with scp
-#
-scp -q file.tar.gz freesoftware.fsf.org:/upload/projectname
-#
-# Copy a single file with rsync over ssh
-#
-rsync --rsh=ssh file.tar.gz freesoftware.fsf.org:/upload/projectname
-</pre>
-
-<p>A reminder is included in the <code>Project Admin</code> page of each 
project.
-
-<p><hr>
-Node:<a name="CVS%20repositories">CVS repositories</a>,
-Next:<a rel=next href="#Set%20up%20a%20mailing%20list">Set up a mailing 
list</a>,
-Previous:<a rel=previous href="#Download%20area">Download area</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>CVS repositories</h2>
-
-<p>Here, we describe the example of subversions.
-
-<p>For each project registered on Savannah there may be two CVS repositories. 
-One to store the sources of the project and one to store the web of the
-project. The sources repository is in /cvsroot and the
-web repository is in /webcvs. This values are defined by <code>Group 
Type</code>.
-
-<ul>
-<li><a href="#Import%20repositories">Import repositories</a>: 
-<li><a href="#Sources%20CVS%20repositories">Sources CVS repositories</a>: 
-<li><a href="#Getting%20email%20from%20CVS">Getting email from CVS</a>: 
-<li><a href="#Source%20CVS%20tarbals">Source CVS tarbals</a>: 
-<li><a href="#Web%20CVS%20repositories">Web CVS repositories</a>: 
-<li><a href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic links</a>: 
-<li><a href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on 
commit</a>: 
-<li><a href="#Web%20CVS%20and%20Projects">Web CVS and Projects</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="Import%20repositories">Import repositories</a>,
-Next:<a rel=next href="#Sources%20CVS%20repositories">Sources CVS 
repositories</a>,
-Previous:<a rel=previous href="#CVS%20repositories">CVS repositories</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Import repositories</h3>
-
-<p>Existing projects that migrate to Savannah may want their CVS
-repository to be transfered to subversions. Time is essential for such
-an operation since the project contributors want to work on the new
-repository and stop using the old. When the author asks
address@hidden, ask him to send the tarball by mail or send a
-URL from which it can be downloaded.  Make an appointment with him and
-guarantee that the repository will be untarred in at most 24 hours. The
-project contributor must first create a project on savannah. When you
-have the tarball untar it at /cvsroot/project. Make sure it does not
-contain a CVSROOT that would override the existing CVSROOT. If it does
-manually copy the history and val-tags files only. Make sure the
-imported repository is untarred under /cvsroot/project/project and does
-not pollute the root of the repository.
-
-<p><hr>
-Node:<a name="Sources%20CVS%20repositories">Sources CVS repositories</a>,
-Next:<a rel=next href="#Getting%20email%20from%20CVS">Getting email from 
CVS</a>,
-Previous:<a rel=previous href="#Import%20repositories">Import repositories</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Sources CVS repositories</h3>
-
-<p>When a project has a license that is not <code>website</code> a source
-repository is created under /cvsroot/project with
-a private CVSROOT that only contains anoncvs. The developers of the
-project have write access to the CVSROOT directory.
-
-<p>This will change soon.
-
-<p>The group <code>project</code> is created to grant write access to the 
repository
-to all the members of the project.
-
-<p>When a Savannah project is assigned the <code>website</code> license, it 
only
-has a portion of the webcvs repository and no source CVS repository.
-
-<p>If the <code>html_cvs</code> field for a given Savannah project is empty, it
-is not associated with a part of the webcvs repository.
-
-<p>For compatibility with the cvs setup before Savannah was introduced,
-/subversions/cvs/common contains symbolic links to the corresponding
-Savannah directory. Developers are encourage to stop using this
-historical setup.
-
-<p>The /cvs symbolic link points to /subversions/cvs/common so that people
-already using it to access their repositories can continue to do so. Before
-Savannah existed a pserver access was available and Savannah continues to
-maintain it for these projects, updating the CVSROOT/passwd files with
-user/password pairs that are in the Savannah database.
-
-<p><hr>
-Node:<a name="Getting%20email%20from%20CVS">Getting email from CVS</a>,
-Next:<a rel=next href="#Source%20CVS%20tarbals">Source CVS tarbals</a>,
-Previous:<a rel=previous href="#Sources%20CVS%20repositories">Sources CVS 
repositories</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Getting email from CVS</h3>
-
-<p>In any large project, keeping track of changes is difficult.  CVS does
-a reasonable job of allowing source changes to be controlled and
-managed, but does not provide tools to make it easier to work with a
-changing code base.  The hardest part of working on a dynamic project
-with many changing modules is knowing when changes occur, and what
-those changes are.
-
-<p>Software developers often are heavy email users, spending huge amounts
-of time working with their email software.  Free software developers are
-among the most serious email addicts out there, sorting through
-hundreds of emails a day, since this is often the only way to stay in
-touch with users and fellow developers.
-
-<p>A project member may add e-mail notification of any commits to the
-repository by doing the following:
-(replace <code>project</code> with the name of the project and 
<code>user</code> by
-the Savannah login name).
-
-<br><pre>cvs -d address@hidden:/cvsroot/project co CVSROOT
-
-In CVSROOT/commitinfo
-
-^project /usr/local/bin/commit_prep -T project -r
-
-In CVSROOT/loginfo
-
-^project /usr/local/bin/log_accum -T project -C -m address@hidden -s %{sVv}
-</pre>
-
-<p>The email address must exist, it will not be automatically generated.
-
-<p><hr>
-Node:<a name="Source%20CVS%20tarbals">Source CVS tarbals</a>,
-Next:<a rel=next href="#Web%20CVS%20repositories">Web CVS repositories</a>,
-Previous:<a rel=previous href="#Getting%20email%20from%20CVS">Getting email 
from CVS</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Source CVS tarbals</h3>
-
-<p>The sv_backup script builds tarbals for each repository in the
-/cvsroot directory. Those tarbals are stored in
-the /subversions/cvs/software.backups directory and linked with the
-savannah.gnu.org:/cvs.backups URL. The tarbals are generated daily,
-if at least one file in the repository is more recent than the
-tarbal.
-
-<p><hr>
-Node:<a name="Web%20CVS%20repositories">Web CVS repositories</a>,
-Next:<a rel=next href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic 
links</a>,
-Previous:<a rel=previous href="#Source%20CVS%20tarbals">Source CVS tarbals</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Web CVS repositories</h3>
-
-<p>When a project has an <code>html_cvs</code> field that is not empty in the
-<code>group</code> table, a web repository is created in
-/webcvs/<code>html_cvs</code>. By default the <code>html_cvs</code> field has 
the
-value <code>/software/project/</code> but it may be edited by the Savannah
-administrators at the savannah.gnu.org/admin/ URL. Project members may
-not change this value. See the gnujobs and gdb projects for examples.
-
-<p>If a project is tagged as non-gnu (gnu field in table groups set to N)
-it is given a space in the /non-gnu/project directory instead.
-
-<p>When a Savannah project is assigned the <code>website</code> license, it 
only
-has a portion of the webcvs repository and no source CVS repository.
-
-<p>If the <code>html_cvs</code> field for a given Savannah project is empty, it
-is not associated with a part of the webcvs repository.
-
-<p>The group <code>webproject</code> is created to grant write access to the 
repository
-to all the members of the project.
-
-<p>All the www.gnu.org web was imported in /webcvs (early 2001). 
-When a project is registered on Savannah and there already exists
-a directory for it in the repository (either .../software/project or
-the value of the <code>html_cvs</code> field), a chgrp -R webproject is done
-on this repository to grant the members of the project a write access
-to this portion of the web repository and only this one.
-
-<p>The <code>www</code> project in Savannah is treated in a special way. All 
the
-members of the <code>www</code> project have access to the whole repository
-in /webcvs. It means that they are always included in every 
<code>webproject</code>
-created. However, the non-gnu projects and not included and webmasters may
-not modify them if they are not a member of the group.
-
-<p><hr>
-Node:<a name="Web%20CVS%20Symbolic%20links">Web CVS Symbolic links</a>,
-Next:<a rel=next href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of 
www.gnu.org on commit</a>,
-Previous:<a rel=previous href="#Web%20CVS%20repositories">Web CVS 
repositories</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Web CVS Symbolic links</h3>
-
-<p>Since CVS is not able to handle symbolic links, a simple mechanism has
-been implemented on the machine hosting the www.gnu.org to allow
-webmasters to control the symbolic link from the CVS tree.
-
-<p>The special file <code>.symlinks</code> contains a list of file name pairs,
-one per line. For instance:
-
-<br><pre>foo.html index.html
-bar.html other.html
-</pre>
-
-<p>is a valid <code>.symlinks</code> file. Every night a script reads all the
-<code>.symlinks</code> files, prepend a <code>ln -s</code> in front of each 
line
-and execute them. Well, in reality it's not that simple but you get
-the idea. The <code>.symlinks</code> file can only be used to control the
-symbolic link in the directory where they are.
-
-<p><hr>
-Node:<a name="Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on 
commit</a>,
-Next:<a rel=next href="#Web%20CVS%20and%20Projects">Web CVS and Projects</a>,
-Previous:<a rel=previous href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic 
links</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Sync of www.gnu.org on commit</h3>
-
-<p>The /webcvs/CVSROOT/loginfo file contains a trigger that
-update the gnudist.gnu.org:/home/www/html directory whenever a commit
-is done. There is a single CVSROOT for all the projects that have a
-web repository.
-
-<p>The /subversions/sourceforge/src/savannah/gnuscripts/sv_www_sync.c
-program was derived from the /usr/local/bin/webcvs.c program (now
-obsolete). It is called on each commit to keep the www.gnu.org web site
-in sync with the CVS repository.
-
-<p>The idea is to runs a cvs update -l (to prevent recursion) in the
-directory where the commit was done. Since the command will be called
-once for each directory where a commit did some action there is no
-need for recursion.
-
-<p>The %{s} argument given in the loginfo file is a single argument that
-lists the directory and all the files involved. As a special case if the
-directory was added the file list is replaced by '- New directory'. This
-is lame since adding the files -, New and directory will produce the
-same effect, but it's unlikely.
-
-<p>There are three cases to take in account:
-
-<ul>
-
-<li>commit that modify the top level directory files:
-cd topdir ; cvs update -l
-
-<li>commit that adds a new directory:
-cd topdir ; cvs update 'new directory'
-
-<li>commit that modify files in a subdirectory:
-cd topdir/subdirectory ; cvs update -l
-
-</ul>
-
-<p>In order to prevent security compromision the directory name is quoted.
-
-<p>The traces of all the updates are kept in /var/log/sv_sync_www.log.
-
-<p><hr>
-Node:<a name="Web%20CVS%20and%20Projects">Web CVS and Projects</a>,
-Previous:<a rel=previous href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of 
www.gnu.org on commit</a>,
-Up:<a rel=up href="#CVS%20repositories">CVS repositories</a>
-<br>
-
-<h3>Web CVS and Projects</h3>
-
-<p>The special project <code>www</code> have write access to all the /webcvs
-repository. It is possible to create projects that will limit write
-access of the members of the project to a subdirectory of the /webcvs
-repository only. For instance the <code>bravegw</code> Savannah project only
-give write access to the /webcvs/brave-gnu-world part of the repository.
-
-<p>A project bound to a specific subdirectory will grant write access to
-all the tree under this subdirectory. There is no way, for instance,
-to grant write access to group B to /webcvs/thispart and write access
-to group A to /webcvs/thispart/subdir. If you do this group B win and
-will have write access to /webcvs/thispart recursively and group A will
-have access to nothing. If you see a way to overcome this limitation,
-let us know.
-
-<p>The sv_www script generates the map that is published at
-<a href="http://www.gnu.org/server/standards/www2savannah.html";>www.gnu.org to 
Savannah</a>. It writes the file in 
/subversions/sourceforge/src/server/standards
-and commits it. The server/standards directory is a read-write checkout of
-the www.gnu.org web CVS. The sv_www script is run once a day by the
-crontab.
-
-<p>A more webmaster oriented documentation explains the
-<a href="http://www.gnu.org/server/standards/README.html";>organisation</a> of 
the
-www.gnu.org CVS tree and the rationale of its usage.
-
-<p><hr>
-Node:<a name="Set%20up%20a%20mailing%20list">Set up a mailing list</a>,
-Next:<a rel=next href="#Account%20Management">Account Management</a>,
-Previous:<a rel=previous href="#CVS%20repositories">CVS repositories</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Set up a mailing list</h2>
-
-<p>If you haven't already created a mailing list to handle messages sent
-by CVS, follow these instructions to do so.
-
-<p>To get started, surf to your project's "Project Page."  If the "Public
-Areas" section of the page doesn't list "Mailing Lists," click over to
-the <code>Project Admin</code> page, the to the <code>Edit Public Info</code>
-page.  Make sure the "Use Mailing Lists:" checkbox is on, and click
-"Update."  Now go back to your "Project Page."
-
-<p>Go to the <code>Mailing Lists</code> page and click through to the
-<code>Admin</code> page.  Select <code>Add Mailing List</code> to get a really
-easy-to-use form that asks you only <code>two questions</code>:
-
-<dl>
-<dt><code>What do you want to name your list?</code>
-<dd>
-Since all Savannah list names start with the Unix name of your
-project and a hyphen, you don't even have to worry about that part! 
-You just decide on the hard part: "Do I call it
-<code>myproject-commits</code>, or <code>myproject-checkins</code>?"  You can
-choose other names, but those are well-recognized by active Free
-Software developers.
-
-<br><dt><code>Should I let just anyone subscribe?</code>
-<dd>
-"Yes" will already be checked for you, so leave it that way.  You want
-your users to be able to subscribe so they'll know when you've fixed
-the bug they reported, because they want to try out the changes as
-soon as they're in.
-
-</dl>
-
-<p>Ok, so you really only had to decide one thing - that's even better. 
-Now, click the "Add This List" button, and wait for your list to be
-created.
-
-<p><hr>
-Node:<a name="Account%20Management">Account Management</a>,
-Next:<a rel=next href="#Mailman">Mailman</a>,
-Previous:<a rel=previous href="#Set%20up%20a%20mailing%20list">Set up a 
mailing list</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Account Management</h2>
-
-<p>It is convenient to use Savannah to manage accounts on a machine that is
-completely unrelated to Savannah itself. For instance, the project
-<a href="http://savannah.gnu.org/projects/fsffr/";>fsffr</a> lists all the
-users who should have an account on the <code>france.fsfeurope.org</code>
-machine.
-
-<p>A cron job on the remote machine can fetch the list of users from
-Savannah and update the password files accordingly. Adding a user
-to the machine can then be done by adding the user as a developer
-of the project.
-
-<p>A guide to install the <code>savannahusers</code> script on the target
-machine is available in the <a 
href="http://www.gnu.org/server/source/savannahusers.html";>savannahusers manual 
page</a>. This chapter deals with the necessary
-actions on the savannah.gnu.org machine, not on the target machine.
-
-<p>In order for remote machines to take advantage of Savannah for account
-management, a list of all Savannah users is dumped daily, both in XML
-format and text format (<a href="#XML%20Dump">XML Dump</a>).
-
-<p>The access to the user information is restricted and has to be done
-in the following way:
-
-<br><pre>rsync --rsh=ssh address@hidden: .
-</pre>
-
-<p>The user <code>xmlbase</code> on savannah.gnu.org is only used for this
-purpose. The ssh public key of the user doing the <code>rsync</code> on the
-remote machine must be registered in the <code>authorized_keys</code> file of
-the <code>xmlbase</code>. He will only be allowed to access a single file. 
-You don't need to give the command you want to execute, indeed
-this information is already in the authorized_key :
-
-<br><pre>command="rsync
-         --server --sender . /subversions/sourceforge/dumps/savannah.xml"
-        1024 35 1325...
-</pre>
-
-<p>Two files may be accessed in this way:
-
-<dl>
-<dt><code>savannah.xml</code>
-<dd>the content of savannah.xml is not documented but should be reasonably
-self-explanatory.
-
-<br><dt><code>accounts.txt</code>
-<dd>contains a block of lines describing the account of every user registered
-on Savannah. Here is an example with long lines truncated:
-
-<br><pre>loic
-Loic Dachary
address@hidden
-1024 35 14482406825620879676223610524821306708503540742800...
-
-rodolphe
-Rodolphe Quiedeville
address@hidden
-1024 35 13773675641076158303518150007131532895996406770957...
-1024 35 13392800240284295490871092259529193810644583890958...
-
-</pre>
-
-<p>Each account block is separated by an empty line. The first line is
-the uniq user name. The second line is the full name of the user. The
-third line is the e-mail address of the user. The next lines are the
-content of the <code>authorized_keys</code> file.
-
-</dl>
-
-<p>It is possible to generate files specific to a given target machine. 
-For instance the <code>account-fsffr.txt</code> file is a
-selection of the users that are members of the
-<a href="http://savannah.gnu.org/projects/fsffr/";>fsffr</a> projects. The
-<code>Makefile</code> in the dumps directory is responsible for the creation of
-these files. It uses XSLT to select the relevant informations from the
-<code>savannah.xml</code> dump.
-
-<h3>Remove a user</h3>
-
-<p>It is rarely needed to remove a user. Inactive accounts on Savannah do not
-hurt (neither in space nor in performance). When it appears to be necessary
-to remove a user account, the administrator should proceed as follows:
-<ul>
-<li>Go to the administration page of each project to which the user is
-bound and remove it. 
-<li>mysql -e "delete from user where user_name = 'username'" sourceforge
-</ul>
-
-<p>See Savannah Elisp to get shortcuts, under GNU Emacs, to perform this kind 
of tasks.
-
-<p>Send all questions and requests to address@hidden or
-to <a href="https://savannah.gnu.org/support/?group_id=11";>support 
requests</a>.
-
-<p><hr>
-Node:<a name="Mailman">Mailman</a>,
-Next:<a rel=next href="#Mails%20and%20aliases">Mails and aliases</a>,
-Previous:<a rel=previous href="#Account%20Management">Account Management</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Mailman</h2>
-
-<h3>Current setup</h3>
-
-<p>Savannah features a way to link a project with its mailing lists. They
-are handled by Mailman on fencepost. The purpose of this section is to
-explain the link between savannah and Mailman.
-
-<p>Some details regarding the setup of Mailman can be found in the
-sysadmin.texi file at http://savannah.gnu.org/projects/sysadmin/.
-
-<h3>Binding existing mailing lists</h3>
-
-<p>Before Savannah was available, some mailing lists have been created. 
-Some of the GNU packages have been migrated on savannah since then. 
-From the list administration page on each Savannah project, it is
-possible to to make the link between these packages and their mailing
-lists (the file is savannah.gnu.org/www/mail/admin/index.php). The
-administrator of the Savannah project has to fill aform with the name of
-its mailing lists and the admin password of the list.
-
-<h3>Adding a mailing list</h3>
-
-<p>When a Savannah project administrator chooses to add a mailing list for
-his(her) project, an entry is added to the Savannah database. This
-information will be dumped by (by the sv_xml script). A cronjob on
-fencepost.gnu.org will read that dump and find which lists must be
-created. It will launch the <code>newlist</code> binary and update the alias 
file.
-
-<h3>Mailing lists for GNU packages</h3>
-
-<p>This cronjob that creates mailing lists can be found in
-gnuscripts/Mailman/mailing_lists_create.pl in the CVS tree (see
-http://savannah.gnu.org/projects/savannah/ for get the source tree).
-
-<p>The parameters needed to bind an existing mailing list to a Savannah
-project (list name and password) are checked by a CGI script installed
-on fencepost.gnu.org. The related files are in the gnuscripts/Mailman
-directory of the Savannah sources (see
-http://savannah.gnu.org/projects/savannah/ for get them). They can be
-installed on fencepost via a Makefile (details are in sysadmin.texi).
-
-<h3>Mailing lists for non-GNU packages</h3>
-
-<p>The mailing lists of the Savannah projects that are not part of the
-GNU project are hosted under the domain freesoftware.fsf.org. This
-domain and the corresponding mailman installation are installed on
-the fencepost.gnu.org machine.
-
-<p>Mailman was installed in <code>/com/mailer/freesoftware</code>.
-
-<ul>
-<li><a href="#...Managed%20by%20Group%20Type">...Managed by Group Type</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="...Managed%20by%20Group%20Type">...Managed by Group Type</a>,
-Previous:<a rel=previous href="#Mailman">Mailman</a>,
-Up:<a rel=up href="#Mailman">Mailman</a>
-<br>
-
-<h3>...Managed by Group Type</h3>
-
-<p>Once more, the Group Type configuration is important for mailing-list 
configurations.
-
-<p><hr>
-Node:<a name="Mails%20and%20aliases">Mails and aliases</a>,
-Next:<a rel=next href="#Unlock%20alias%20at%20gnu.org%20account">Unlock alias 
at gnu.org account</a>,
-Previous:<a rel=previous href="#Mailman">Mailman</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Mails and aliases</h2>
-
-<p>Savannah will try to send mail to users under various circumstances (bug
-reports notification, account creation etc.). In some cases it will use
-the real mail address of the user, in others it will use
address@hidden In order for the address@hidden address
-to work properly for outgoing mails, the /etc/email-addresses file is updated
-automatically every 5 minutes with the following command:
-
-<br><pre>sv_aliases
-</pre>
-
-<p>The address@hidden can <code>never</code> be used to receive mail for
-the good reason that savannah.gnu.org does not listen on the SMTP port.
-
-<p><hr>
-Node:<a name="Unlock%20alias%20at%20gnu.org%20account">Unlock alias at gnu.org 
account</a>,
-Next:<a rel=next href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>,
-Previous:<a rel=previous href="#Mails%20and%20aliases">Mails and aliases</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Unlock alias at gnu.org account</h2>
-
-<p>People who have a simple alias address@hidden but no account on Kerberos
-cannot create an account on Savannah. When they ask to unlock the
-account name on address@hidden, tell them to create an account
-using a fake username and to send this username to address@hidden 
-When receiving that user name substitute the fake login name by the desired
-one:
-
-<br><pre>mysql -e "update user set user_name = 'desired' where user_name = 
'fake'" sourceforge
-</pre>
-
-<p><hr>
-Node:<a name="Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>,
-Next:<a rel=next href="#Publishing%20this%20document">Publishing this 
document</a>,
-Previous:<a rel=previous 
href="#Unlock%20alias%20at%20gnu.org%20account">Unlock alias at gnu.org 
account</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Users and CVS synchronization</h2>
-
-<p>Must be root to run this script and make sure you export CVS_RSH=ssh. 
-You are advised to run it in /subversions/sourceforge/tmp, although it
-is not mandatory.
-
-<p>It is run from the crontab and the output is logged in /var/log/sv_cvs.log.
-
-<p>The <code>sv_cvs</code> perl script generates a shell script that will 
synchronize
-the system files with the state of the Savannah database (sourceforge).
-
-<p>This script only generates lines if something needs to be done. When the
-resulting script is executed, another run <code>must not</code> display any
-action (unless the database was modified in the meantime which is unlikely).
-
-<p>It performs the following tasks, in this order.
-
-<dl>
-
-<br><dt><code>Add new projects</code>
-<dd>/cvsroot/project and /webcvs/software/project (or /webcvs/non-gnu/project)
-directories are created.
-
-<br><dt><code>Update existing projects</code>
-<dd>Fixes projects that do not have a /webcvs/software/project
-directory or a directory with wrong permissions.
-
-<br><dt><code>Add missing users</code>
-<dd>Create users (in /etc/passwd)  that are bound to at least one project in 
Savannah.
-
-<br><dt><code>Remove users</code>
-<dd>Remove users not bound to any project in Savannah
-If user belongs to groups not managed by Savannah, just redefine
-its group list.
-
-<br><dt><code>Update existing users</code>
-<dd>Modify the system files if they are not in sync with the Savannah
-database.
-
-<br><dt><code>Update the groups of anoncvs</code>
-<dd>The list of groups (projects) to which anoncvs belongs is restricted
-by the public/non public status of a project.
-
-<br><dt><code>Update the CVS password file</code>
-<dd>Update the /cvs/CVSROOT/passwd file to reflect the
-passwd and users bound to projects in Savannah.
-
-<br><dt><code>Create download area for non-GNU projects</code>
-<dd>A directory is created at /upload/projectname, only if the project
-is not part of the GNU project.
-
-<br><dt><code>Update cvs-pserver.conf</code>
-<dd>Update the list of all possible pserver roots.
-
-</dl>
-
-<p><hr>
-Node:<a name="Publishing%20this%20document">Publishing this document</a>,
-Next:<a rel=next href="#System%20Administration">System Administration</a>,
-Previous:<a rel=previous href="#Users%20and%20CVS%20synchronization">Users and 
CVS synchronization</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Publishing this document</h2>
-
-<p>The HTML version of this document is published in two places:
-<a href="http://savannah.gnu.org/savannah.html";>Savannah Administration 
Guide</a> and
-<a href="http://www.gnu.org/server/standards/README.savannah.html";>Savannah 
Administration Guide</a>. The source is stored in the
-<code>subversions.gnu.org:/cvsroot/savannah</code> CVS repository, in the
-<code>$Source: /web/www/www/server/standards/README.savannah.html,v $</code> 
file (and/or subversions.gnu.org:/cvs co gnudocs
-repository ? - FIXME).  To facilitate the publication process you can edit it 
in
-the subversions.gnu.org:/subversions/sourceforge/src/gnudocs directory
-and then issue a
-
-<br><pre>make publish
-</pre>
-
-<p>The <code>publish</code> goal assumes that the Savannah document root is in
-../savannah/www and a read-write checkout of the www.gnu.org/server/standards
-directory is in ../server/standards. It will format the document to
-HTML and commit the changes to the repository.
-
-<p><hr>
-Node:<a name="System%20Administration">System Administration</a>,
-Next:<a rel=next href="#Concept%20Index">Concept Index</a>,
-Previous:<a rel=previous href="#Publishing%20this%20document">Publishing this 
document</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>System Administration</h2>
-
-<ul>
-<li><a href="#SSL%20certificate">SSL certificate</a>: 
-<li><a href="#Project%20registration%20discarding">Project registration 
discarding</a>: 
-<li><a href="#Web%20Usage%20Statistics">Web Usage Statistics</a>: 
-<li><a href="#Savannah%20crontab">Savannah crontab</a>: 
-<li><a href="#Savannah%20logs">Savannah logs</a>: 
-<li><a href="#Savannah%20software%20root">Savannah software root</a>: 
-<li><a href="#NGROUPS_MAX">NGROUPS_MAX</a>: 
-<li><a href="#cvs">cvs</a>: 
-<li><a href="#cron">cron</a>: 
-<li><a href="#sftp">sftp</a>: 
-<li><a href="#lsh%20and%20ssh">lsh and ssh</a>: 
-<li><a href="#Booting%20with%20grub%20and%20not%20lilo">Booting with grub and 
not lilo</a>: 
-<li><a href="#Emergency%20situation">Emergency situation</a>: 
-<li><a href="#Linux%20configuration">Linux configuration</a>: 
-<li><a href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>: 
-<li><a href="#Savannah%20themes">Savannah themes</a>: 
-<li><a href="#Savannah%20elisp">Savannah elisp</a>: 
-</ul>
-
-<p><hr>
-Node:<a name="SSL%20certificate">SSL certificate</a>,
-Next:<a rel=next href="#Project%20registration%20discarding">Project 
registration discarding</a>,
-Previous:<a rel=previous href="#System%20Administration">System 
Administration</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>SSL certificate</h3>
-
-<p>The SSL certificate for savannah.gnu.org was generated in /etc/apache-ssl/. 
-Check the README file for a log of the command. There has been a lot of
-discussions regarding the root certificate for GNU, the use of a PKI. At
-some point the savannah certificate will be generated using a proper
-root certificate.
-
-<p><hr>
-Node:<a name="Project%20registration%20discarding">Project registration 
discarding</a>,
-Next:<a rel=next href="#Web%20Usage%20Statistics">Web Usage Statistics</a>,
-Previous:<a rel=previous href="#SSL%20certificate">SSL certificate</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Project registration discarding</h3>
-
-<p>Project registration that are disapproved with the PHP interface are marked 
with D in the SQL database.
-
-<p>To remove a project registration completely, sv_register_discard is used, 
specifying the project unix name as argument. It will ask you to give a 
comment, an explanation about the discard.
-
-<br><pre>sv_register_discard project_unix_name
-</pre>
-
-<p>Additionally, you can use -user and -comment options:
-
-<br><pre>sv_register_discard project_unix_name --user="yp" --comment="this 
project does not fit to our policy"
-</pre>
-
-<p>With no argument given, sv_register_discard will search any project marked 
as D and will ask you for a comment for each project registration discarded.
-
-<p>So, if needed, savannah-hackers can check the reason why a project has been 
discarded since it is logged in /var/log/sv_register_discard.log
-
-<p><hr>
-Node:<a name="Web%20Usage%20Statistics">Web Usage Statistics</a>,
-Next:<a rel=next href="#Savannah%20crontab">Savannah crontab</a>,
-Previous:<a rel=previous href="#Project%20registration%20discarding">Project 
registration discarding</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Web Usage Statistics</h3>
-
-<p>Statistics for savannah.gnu.org web usage are generated using webalizer. 
-The <code>sv_stat</code> script used to do the job on a daily basis (called 
from the
-crontab) using the <code>webalizer.conf</code> in the
-/subversions/sourceforge/src/savannah/www/webalizer directory and moving
-the generated report in the same directory.
-
-<p>The <code>sv_stat</code> script is also called before rotating logs, as 
specified
-in the <code>/etc/apache-ssl/cron.conf</code> script.
-
-<p>Now, since we found more interesting to let users choose features they want 
to use, webalizer must be installed via the normal way: packaged. On
-subversions.gnu.org, webalizer has been installed via apt-get.
-
-<p>In <code>/etc/savannah/local.inc.pl</code>, Savannah is configured to use 
webalizer.
-
-<p>The file used is now, as it should be,
-<code>/etc/cron.daily/webalizer</code>.
-
-<p>If for a reason of another all the logs need to be regenerated, try:
-
-<br><pre>cd /var/log/apache-ssl
-for log in `ls --sort=t -r access*`; do echo "parse $log" &amp;&amp; webalizer 
-q -c /usr/local/sourceforge/src/savannah/www/webalizer/webalizer.conf $log; 
done
-</pre>
-
-<p>Exactly the same goes for mrtg.
-
-<p><hr>
-Node:<a name="Savannah%20crontab">Savannah crontab</a>,
-Next:<a rel=next href="#Savannah%20logs">Savannah logs</a>,
-Previous:<a rel=previous href="#Web%20Usage%20Statistics">Web Usage 
Statistics</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Savannah crontab</h3>
-
-<p>The Savannah crontab jobs are in /etc/cron.d/savannah. Every cron command
-output is sent to address@hidden
-
-<br><pre>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/subversions/sourceforge/bin:/usr/local/mysql/bin
address@hidden
-#
-# Build /etc/aliases,
-# http://savannah.gnu.org/savannah.html#Mails%20and%20aliases
-#
-*/5 * * * *    root    sv_aliases
-#
-# Build www map,
-# http://savannah.gnu.org/savannah.html#Web%20CVS%20and%20Projects
-#
-10 4 * * *     root    sv_www
-#
-# Sync projects with CVS related system files,
-# http://savannah.gnu.org/savannah.html#Users%20and%20CVS%20synchronization
-#
-17 * * * *     root    cd /subversions/sourceforge/tmp ; sv_cvs | ( date ; sh 
-x ) &gt;&gt; /var/log/sv_cvs.log 2&gt;&amp;1
-#
-# Daily backups of the Savannah database,
-# http://savannah.gnu.org/savannah.html#Database%20Backups
-#
-7 5 * * *      root    sv_backup
-#
-# Daily XML dump of Savannah public information
-# http://savannah.gnu.org/savannah.html#XML%20Dump
-#
-7 6 * * *      root    sv_xml &gt; 
/subversions/sourceforge/src/savannah/www/savannah.xml
-14 6 * * *     root    sv_xml --private &gt; 
/subversions/sourceforge/dumps/savannah.xml
-30 6 * * *     root    make -s -C /subversions/sourceforge/dumps all
-0 */1 * * *    root    sv_xml --list &gt; 
/subversions/sourceforge/dumps/list.xml
-#
-# Daily web server statistics: It remains here for the memory.
-# As explained in
-# http://savannah.gnu.org/savannah.html#Web%20Usage%20Statistics
-# it's now useless and shouldn't be used.
-#
-#7 7 * * *     root    sv_stat
-</pre>
-
-<p><hr>
-Node:<a name="Savannah%20logs">Savannah logs</a>,
-Next:<a rel=next href="#Savannah%20software%20root">Savannah software root</a>,
-Previous:<a rel=previous href="#Savannah%20crontab">Savannah crontab</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Savannah logs</h3>
-
-<p>The logs of the Savannah scripts are in <code>/var/log</code>. They are
-rotated by the <code>/etc/logrotate.d/savannah</code> configuration file of
-logrotate.
-
-<dl>
-
-<br><dt><code>/var/log/sv_cvs.log</code>
-<dd>Modification of the the system files from the mysql database information
-so that CVS, upload etc can work properly.
-
-<br><dt><code>/var/log/sv_sync_www.log</code>
-<dd>Loginfo and update information generated by the sv_sync_www program. 
-This file <code>must</code> be read-write for everyone.
-
-<br><dt><code>/var/log/apache-ssl/access.log</code>
-<dd>savannah.gnu.org web server logs.
-
-</dl>
-
-<p><hr>
-Node:<a name="Savannah%20software%20root">Savannah software root</a>,
-Next:<a rel=next href="#NGROUPS_MAX">NGROUPS_MAX</a>,
-Previous:<a rel=previous href="#Savannah%20logs">Savannah logs</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Savannah software root</h3>
-
-<p>All software that is not system wide but only used for the purpose of
-Savannah must be installed in the prefix /subversions/sourceforge.
-
-<p>The MySQL installation is an exception that must be fixed. It is installed
-with the /usr/local/mysql prefix. It was not installed from the debian
-package because I (address@hidden) was not able to fix the MySQL-3.23
-package to make it work on potato. Now that the machine runs woody, this
-historical hack should be removed.
-
-<p><hr>
-Node:<a name="NGROUPS_MAX">NGROUPS_MAX</a>,
-Next:<a rel=next href="#cvs">cvs</a>,
-Previous:<a rel=previous href="#Savannah%20software%20root">Savannah software 
root</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>NGROUPS_MAX</h3>
-
-<p>The large number of groups a user can have (&gt;32) implies to modify
-some basic programs (namely useradd and usermod).
-
-<p>The cvs-1.11.1p1 executable was patched and the patches are available
-at cvs-1.11.1p1-2001-12-11.patch.
-
-<p>Here is the patch applied to /usr/local/src/shadow-19990827. The
-modified usermod and useradd have been installed in
-/subversions/sourceforge/bin.
-
-<br><pre>*** ./debian/rules.~1~        Fri Feb  9 02:05:06 2001
---- ./debian/rules     Fri Feb  9 02:05:41 2001
-***************
-*** 38,44 ****
-  ifneq ($(DEB_HOST_GNU_SYSTEM),gnu)
-    include debian/scripts/login.mk
-    package-list += binary-login
-!   config_options += --with-libpam
-    control_defs += -DMODDEP="(&gt;= 0.72-5)"
-  endif
-
---- 38,44 ----
-  ifneq ($(DEB_HOST_GNU_SYSTEM),gnu)
-    include debian/scripts/login.mk
-    package-list += binary-login
-! #  config_options += --with-libpam
-    control_defs += -DMODDEP="(&gt;= 0.72-5)"
-  endif
-
-*** ./build-tree/shadow-19990827/libmisc/addgrps.c.~1~ Mon Dec 28 12:34:41 1998
---- ./build-tree/shadow-19990827/libmisc/addgrps.c     Fri Feb  9 03:04:47 2001
-***************
-*** 20,25 ****
---- 20,28 ----
-   * already there.  Warning: uses strtok().
-   */
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  int
-  add_groups(const char *list)
-  {
-*** ./build-tree/shadow-19990827/src/usermod.c.~1~     Fri Jul  9 09:27:38 1999
---- ./build-tree/shadow-19990827/src/usermod.c Fri Feb  9 03:05:52 2001
-***************
-*** 74,79 ****
---- 74,82 ----
-
-  #define      VALID(s)        (strcspn (s, ":\n") == strlen (s))
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  static char *user_name;
-  static char *user_newname;
-  static char *user_pass;
-*** ./build-tree/shadow-19990827/src/groups.c.~1~      Mon Jun  7 09:40:45 1999
---- ./build-tree/shadow-19990827/src/groups.c  Fri Feb  9 03:15:54 2001
-***************
-*** 42,47 ****
---- 42,50 ----
-  static void print_groups P_((const char *));
-  int main P_((int, char **));
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  /*
-   * print_groups - print the groups which the named user is a member of
-   *
-*** ./build-tree/shadow-19990827/src/id.c.~1~  Mon Jun  7 09:40:45 1999
---- ./build-tree/shadow-19990827/src/id.c      Fri Feb  9 03:16:34 2001
-***************
-*** 50,55 ****
---- 50,58 ----
-  static void usage P_((void));
-  int main P_((int, char **));
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  static void
-  usage(void)
-  {
-*** ./build-tree/shadow-19990827/src/useradd.c.~1~     Fri Feb  9 02:06:01 2001
---- ./build-tree/shadow-19990827/src/useradd.c Fri Feb  9 03:28:52 2001
-***************
-*** 53,58 ****
---- 53,61 ----
-  #endif
-  #include "faillog.h"
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  #ifndef SKEL_DIR
-  #define SKEL_DIR "/etc/skel"
-  #endif
-*** ./build-tree/shadow-19990827/src/newgrp.c.~1~      Fri Feb  9 02:06:00 2001
---- ./build-tree/shadow-19990827/src/newgrp.c  Fri Feb  9 03:29:10 2001
-***************
-*** 49,54 ****
---- 49,57 ----
-  static GETGROUPS_T *grouplist;
-  #endif
-
-+ #undef NGROUPS_MAX
-+ #define NGROUPS_MAX 512
-+
-  static char *Prog;
-  static int is_newgrp;
-</pre>
-
-<p>The sshd daemon has been rebuilt with the following patch so that CVS
-ssh operations have the proper set of groups. The sources are in
-/usr/local/src/openssh-1.2.3/ and the corresponding debian package is at
-/usr/local/src/ssh_1.2.3-9.2loic_i386.deb. The package was tagged on
-hold using dselect to prevent accidental upgrade. Note that this patch
-may have hideous impact for users who have real account and use ssh
-since most of the commands that deal with groups have not been
-recompiled to handle more than the limit of 32 groups. For instance the
-id command will core dump. Here is the patch applied on the
-distribution:
-
-<br><pre>*** sshd.c.~1~        Fri Mar 17 04:40:18 2000
---- sshd.c     Tue Feb 13 06:32:17 2001
-***************
-*** 147,152 ****
---- 151,240 ----
-             const char *display, const char *auth_proto,
-             const char *auth_data, const char *ttyname);
-
-+ #ifdef AUTH_SERVER_SUPPORT
-+ #ifdef HAVE_GETSPNAM
-+ #include &lt;shadow.h&gt;
-+ #endif
-+ #endif /* AUTH_SERVER_SUPPORT */
-+
-+ /* The GNU C Library currently has a compile-time limit on the number of
-+    groups a user may be a part of, even if the underlying kernel has been
-+    fixed, and so we define our own initgroups. */
-+ #include &lt;grp.h&gt;
-+ static int
-+ xinitgroups (char *user, gid_t gid)
-+ {
-+   struct group *grp;
-+   gid_t *buf;
-+   int buflen, ngroups;
-+
-+   /* Initialise the list with the specified GID. */
-+   ngroups = 0;
-+   buflen = 16;
-+   buf = malloc (buflen * sizeof (*buf));
-+   buf[ngroups ++] = gid;
-+
-+   setgrent ();
-+   while ((grp = getgrent ()))
-+     {
-+       /* Scan the member list for our user. */
-+       char **p = grp-&gt;gr_mem;
-+       while (*p &amp;&amp; strcmp (*p, user))
-+      p ++;
-+
-+       if (*p)
-+      {
-+        /* We found the user in this group. */
-+        if (ngroups == buflen)
-+          {
-+            /* Enlarge the group list. */
-+            buflen *= 2;
-+            buf = realloc (buf, buflen * sizeof (*buf));
-+          }
-+
-+        /* Add the group id to our list. */
-+        buf[ngroups ++] = grp-&gt;gr_gid;
-+      }
-+     }
-+   endgrent ();
-+
-+   /* Return whatever setgroups says. */
-+   buflen = setgroups (ngroups, buf);
-+   free (buf);
-+   return buflen;
-+ }
-+ #define initgroups xinitgroups
-+
-+ /* This worked fine, and was adopted into glibc, until setgroups got a
-+    similar limitation, so we override it as well. */
-+ #include &lt;linux/posix_types.h&gt;
-+ #include &lt;sys/syscall.h&gt;
-+ #include &lt;errno.h&gt;
-+
-+ int
-+ setgroups (size_t n, const gid_t *groups)
-+ {
-+   size_t i;
-+   __kernel_gid_t kernel_groups[n];
-+
-+   for (i = 0; i &lt; n; i ++)
-+     kernel_groups[i] = groups[i];
-+
-+   {
-+     long res;
-+     __asm__ volatile ("int $0x80"
-+                    : "=a" (res)
-+                    : "0" (__NR_setgroups),"b" ((long)(n)),
-+                    "c" ((long)(kernel_groups)));
-+
-+     if ((unsigned long)(res) &gt;= (unsigned long)(-125)) {
-+       errno = -res;
-+       res = -1;
-+     }
-+     return (int) (res);
-+   }
-+ }
-+
-  /*
-   * Remove local Xauthority file.
-   */
-</pre>
-
-<p><hr>
-Node:<a name="cvs">cvs</a>,
-Next:<a rel=next href="#cron">cron</a>,
-Previous:<a rel=previous href="#NGROUPS_MAX">NGROUPS_MAX</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>cvs</h3>
-
-<p>The cron daemon was recompiled from 
<code>/usr/local/src/cvs-1.11.1p1/</code> with
-the following patches applied.
-
-<ul>
-
-<li><code>/usr/local/src/cvs-1.11.1p1-2001-12-11.patch</code> for NGROUPS_MAX
-
-<li><code>/usr/local/src/cvs-1.11.1p1-cvsroot.patch</code> for 
-allow-root-file. 
-It prevents the multiplcation of -allow-root arguments for anonymous
-cvs.
-
-</ul>
-
-<p><hr>
-Node:<a name="cron">cron</a>,
-Next:<a rel=next href="#sftp">sftp</a>,
-Previous:<a rel=previous href="#cvs">cvs</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>cron</h3>
-
-<p>The cron daemon was recompiled from 
<code>/usr/local/src/cron-3.0pl1/</code> with
-the following patch applied, to fix the NGROUPS_MAX limit.
-
-<br><pre>*** do_command.c.~1~  Tue Jun 12 06:35:48 2001
---- do_command.c       Tue Jun 12 06:25:48 2001
-***************
-*** 30,35 ****
---- 30,112 ----
-  # include &lt;syslog.h&gt;
-  #endif
-
-+ /* The GNU C Library currently has a compile-time limit on the number of
-+    groups a user may be a part of, even if the underlying kernel has been
-+    fixed, and so we define our own initgroups. */
-+ #include &lt;grp.h&gt;
-+ static int
-+ xinitgroups (char *user, gid_t gid)
-+ {
-+   struct group *grp;
-+   gid_t *buf;
-+   int buflen, ngroups;
-+
-+   /* Initialise the list with the specified GID. */
-+   ngroups = 0;
-+   buflen = 16;
-+   buf = malloc (buflen * sizeof (*buf));
-+   buf[ngroups ++] = gid;
-+
-+   setgrent ();
-+   while ((grp = getgrent ()))
-+     {
-+       /* Scan the member list for our user. */
-+       char **p = grp-&gt;gr_mem;
-+       while (*p &amp;&amp; strcmp (*p, user))
-+      p ++;
-+
-+       if (*p)
-+      {
-+        /* We found the user in this group. */
-+        if (ngroups == buflen)
-+          {
-+            /* Enlarge the group list. */
-+            buflen *= 2;
-+            buf = realloc (buf, buflen * sizeof (*buf));
-+          }
-+
-+        /* Add the group id to our list. */
-+        buf[ngroups ++] = grp-&gt;gr_gid;
-+      }
-+     }
-+   endgrent ();
-+
-+   /* Return whatever setgroups says. */
-+   buflen = setgroups (ngroups, buf);
-+   free (buf);
-+   return buflen;
-+ }
-+ #define initgroups xinitgroups
-+
-+ /* This worked fine, and was adopted into glibc, until setgroups got a
-+    similar limitation, so we override it as well. */
-+ #include &lt;linux/posix_types.h&gt;
-+ #include &lt;sys/syscall.h&gt;
-+ #include &lt;errno.h&gt;
-+
-+ int
-+ setgroups (size_t n, const gid_t *groups)
-+ {
-+   size_t i;
-+   __kernel_gid_t kernel_groups[n];
-+
-+   for (i = 0; i &lt; n; i ++)
-+     kernel_groups[i] = groups[i];
-+
-+   {
-+     long res;
-+     __asm__ volatile ("int $0x80"
-+                    : "=a" (res)
-+                    : "0" (__NR_setgroups),"b" ((long)(n)),
-+                    "c" ((long)(kernel_groups)));
-+
-+     if ((unsigned long)(res) &gt;= (unsigned long)(-125)) {
-+       errno = -res;
-+       res = -1;
-+     }
-+     return (int) (res);
-+   }
-+ }
-
-  static void          child_process __P((entry *, user *)),
-                       do_univ __P((user *));
-***************
-*** 240,246 ****
-                */
-               setgid(e-&gt;gid);
-  # if defined(BSD) || defined(POSIX)
-!              initgroups(env_get("LOGNAME", e-&gt;envp), e-&gt;gid);
-  # endif
-               setuid(e-&gt;uid);              /* we aren't root after this... 
*/
-               chdir(env_get("HOME", e-&gt;envp));
---- 317,323 ----
-                */
-               setgid(e-&gt;gid);
-  # if defined(BSD) || defined(POSIX)
-!              xinitgroups(env_get("LOGNAME", e-&gt;envp), e-&gt;gid);
-  # endif
-               setuid(e-&gt;uid);              /* we aren't root after this... 
*/
-               chdir(env_get("HOME", e-&gt;envp));
-*** cron.c.~1~ Tue Jun 12 06:35:35 2001
---- cron.c     Tue Jun 12 06:17:13 2001
-***************
-*** 25,35 ****
-
-  #include "cron.h"
-  #include &lt;signal.h&gt;
-- #if SYS_TIME_H
-- # include &lt;sys/time.h&gt;
-- #else
-  # include &lt;time.h&gt;
-- #endif
-
-
-  static       void    usage __P((void)),
---- 25,31 ----
-</pre>
-
-<p><hr>
-Node:<a name="sftp">sftp</a>,
-Next:<a rel=next href="#lsh%20and%20ssh">lsh and ssh</a>,
-Previous:<a rel=previous href="#cron">cron</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>sftp</h3>
-
-<p>The <code>sftp</code> is provided to Savannah project members and is
-implemented in the following way to ensure security.
-
-<ul>
-
-<li>/usr/local/bin/cvssh accepts the command /usr/lib/sftp-server
-and runs /usr/local/bin/savannah-sftp instead.
-
-<li>/usr/local/bin/savannah-sftp is a root set user id bit binary that chroot 
to /upload and runs /usr/lib/savannah-sftp-server (which is really 
/upload/usr/lib/savannah-sftp-server).
-
-<li>/usr/lib/savannah-sftp-server changes the id of the process to the id of 
the user that originally requested to run sftp-server and runs 
/usr/lib/sftp-server
-
-</ul>
-
-<p>The sources of savannah-sftp-server and savannah-sftp are located
-in /usr/local/bin.
-
-<p>The files added to /upload are the following:
-
-<br><pre>lib:
-total 2136
--rwxr-xr-x    1 root     root        90210 Jul 12 11:41 ld-linux.so.2
--rwxr-xr-x    1 root     root      1153784 Jul 12 11:41 libc.so.6
--rw-r--r--    1 root     root       771088 Jul 12 11:40 libcrypto.so.0.9.6
--rw-r--r--    1 root     root         8008 Jul 12 11:41 libdl.so.2
--rw-r--r--    1 root     root        69472 Jul 12 11:40 libnsl.so.1
--rw-r--r--    1 root     root         7600 Jul 12 11:39 libutil.so.1
--rw-r--r--    1 root     root        54632 Jul 12 11:39 libz.so.1
-
-usr:
-total 4
-drwxr-xr-x    2 root     root         4096 Jul 12 12:07 lib
-
-usr/lib:
-total 40
--rwxr-xr-x    1 root     root        14433 Jul 12 12:08 savannah-sftp-server
--rwxr-xr-x    1 root     root        23848 Jul 12 11:20 sftp-server
-</pre>
-
-<p><hr>
-Node:<a name="lsh%20and%20ssh">lsh and ssh</a>,
-Next:<a rel=next href="#Booting%20with%20grub%20and%20not%20lilo">Booting with 
grub and not lilo</a>,
-Previous:<a rel=previous href="#sftp">sftp</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>lsh and ssh</h3>
-
-<p>The <code>ssh</code> service is bound to
-<a href="http://www.net.lut.ac.uk/psst/";>lsh</a> with a fallback to 
<code>ssh</code>
-for protocol version 1. The startup of <code>lsh</code> is done with the
-<code>/etc/init.d/lsh</code> script.
-
-<p>The version of <code>lsh</code> installed is <code>1.4</code> compiled in
-<code>/usr/local/src/lsh-1.4</code>. It includes a patch for dealing
-with the NGROUPS_MAX problem described in another chapter. The
-patch was activated with the following:
-
-<br><pre>--- config.h.in.~1~     Thu May 16 17:38:54 2002
-+++ config.h.in Wed Jun  5 08:01:13 2002
-@@ -1,5 +1,7 @@
- /* config.h.in.  Generated from configure.ac by autoheader.  */
-
-+#define INITGROUPS_WORKAROUND 1
-+
- /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-    systems. This function is required for `alloca.c' support on those systems.
-    */
-</pre>
-
-<p>The people involved in this installation are
-<a href="mailto:address@hidden";>Niels Moller</a> (author of lsh),
-<a href="mailto:address@hidden";>Gordon Matzigkeit</a> (author of the 
NGROUPS_MAX
-patch) and <a href="mailto:address@hidden";>Loic Dachary</a> who did the 
installation.
-
-<p>Should a problem occur with this version of lsh, one has to send a bug
-report to <a href="mailto:address@hidden";>address@hidden</a>Niels Moller 
including the
-relevant <code>/var/log/syslog</code> lines (tagged with lshd) and a stack
-trace of the core, if available. To get the stack trace do the following:
-
-<br><pre>$ gdb /usr/local/sbin/lshd /core
-gdb&gt; bt
-</pre>
-
-<p>With the appropriate information Niels is usually able to provide a patch
-within very short delays.
-
-<p><hr>
-Node:<a name="Booting%20with%20grub%20and%20not%20lilo">Booting with grub and 
not lilo</a>,
-Next:<a rel=next href="#Emergency%20situation">Emergency situation</a>,
-Previous:<a rel=previous href="#lsh%20and%20ssh">lsh and ssh</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Booting with grub and not lilo</h3>
-
-<p>The menu.lst used by grub is installed at (/dev/hdb2)/boot/grub/menu.lst
-or, in grub jargon, hd(1,1)/boot/grub/menu.lst.
-
-<p>To access it
-
-<p>mount /dev/hdb2 /rescue
-edit /rescue/boot/grub/menu.lst
-umount /rescue
-
-<p><hr>
-Node:<a name="Emergency%20situation">Emergency situation</a>,
-Next:<a rel=next href="#Linux%20configuration">Linux configuration</a>,
-Previous:<a rel=previous 
href="#Booting%20with%20grub%20and%20not%20lilo">Booting with grub and not 
lilo</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Emergency situation</h3>
-
-<p>The service-entrance.gnu.org machine has two serial lines going to
-savannah.gnu.org. One that allows to see the console, the other that
-allows to power cycle the machine. More information on this subject
-may be found in sysadmin.texi (http://savannah.gnu.org/projects/sysadmin/).
-
-<p>A full Debian installation was done on <code>/dev/hdb2</code> and can be 
used
-if the installation is so corrupted that even a single boot will not
-work. This emergency installation is labeled as such in the grub menu.
-
-<p>When booting on the emergency partition, the file systems of the regular
-installation are mounted under the <code>/subversions.gnu.org/</code> 
directory.
-
-<p>The grub menu file (menu.lst) is located on this partition, as explained
-above.
-
-<p><hr>
-Node:<a name="Linux%20configuration">Linux configuration</a>,
-Next:<a rel=next href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>,
-Previous:<a rel=previous href="#Emergency%20situation">Emergency situation</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Linux configuration</h3>
-
-<p>The kernel was rebuilt in 
<code>/usr/src/kernel-source-2.2.19pre17-2.2.19pre17</code>
-and installed from 
<code>/usr/src/kernel-image-2.2.19pre17_512_i386.deb</code>. 
-It was recompiled with the following patch applied to raise the maximum
-number of groups per process to 512.
-
-<br><pre>*** include/asm-i386/param.h.~1~      Tue Aug  1 11:08:17 1995
---- include/asm-i386/param.h   Sat May 26 15:44:10 2001
-***************
-*** 8,14 ****
-  #define EXEC_PAGESIZE        4096
-
-  #ifndef NGROUPS
-! #define NGROUPS              32
-  #endif
-
-  #ifndef NOGROUP
---- 8,14 ----
-  #define EXEC_PAGESIZE        4096
-
-  #ifndef NGROUPS
-! #define NGROUPS              512
-  #endif
-
-  #ifndef NOGROUP
-*** include/linux/limits.h.~1~ Tue Dec  2 16:44:40 1997
---- include/linux/limits.h     Sat May 26 13:47:52 2001
-***************
-*** 3,9 ****
-
-  #define NR_OPEN              1024
-
-! #define NGROUPS_MAX       32 /* supplemental group IDs are available */
-  #define ARG_MAX       131072 /* # bytes of args + environ for exec() */
-  #define CHILD_MAX        999    /* no limit :-) */
-  #define OPEN_MAX         256 /* # open files a process may have */
---- 3,9 ----
-
-  #define NR_OPEN              1024
-
-! #define NGROUPS_MAX      512 /* supplemental group IDs are available */
-  #define ARG_MAX       131072 /* # bytes of args + environ for exec() */
-  #define CHILD_MAX        999    /* no limit :-) */
-  #define OPEN_MAX         256 /* # open files a process may have */
-</pre>
-
-<p><hr>
-Node:<a name="IDE%20Disk%20tweaking">IDE Disk tweaking</a>,
-Next:<a rel=next href="#Savannah%20themes">Savannah themes</a>,
-Previous:<a rel=previous href="#Linux%20configuration">Linux configuration</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>IDE Disk tweaking</h3>
-
-<p>The configuration of the IDE disks are done in 
<code>/etc/init.d/hdparm</code>. 
-That boosts the transfer rate from 4.4Mb/s to 23.4Mb/s.
-
-<br><pre>      hdparm -k 0 -d 1 -c 3 -m 16 -a 16 -u 1 -X66 /dev/hda
-       hdparm -k 0 -d 1 -c 3 -m 16 -a 16 -u 1 -X66 /dev/hdb
-       hdparm -k 0 -d 1 -c 3 -m 16 -a 16 -u 1 -X66 /dev/hdc
-</pre>
-
-<p><hr>
-Node:<a name="Savannah%20themes">Savannah themes</a>,
-Next:<a rel=next href="#Savannah%20elisp">Savannah elisp</a>,
-Previous:<a rel=previous href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Savannah themes</h3>
-
-<p>The theme system is simpler than the SourceForge original one : HTML code 
isn't redifined, the only differencies between themes are CSS file and images.
-
-<p>To create, add a theme, a new CSS file, taking as template savannah.css, 
should be aded in www/css with a filename that would be the theme name (as  
new_theme.css).
-
-<p>Also, the set of images should be added in www/images/new_theme.theme/* . 
To get the classical images with transparent background, just copy the files in 
www/images/transparent.themes. It is recommanded to add a non-transparent 
background to images since only decent www browser support well PNG 
transparency (ie, today, the 19 april 2002, only Konqueror and Mozilla support 
it).
-
-<p>Basically, it works by setting a cookie called SV_THEME (and eventually a 
SV_THEME_RANDOM) cookies. See www/include/theme2.php
-
-<p><hr>
-Node:<a name="Savannah%20elisp">Savannah elisp</a>,
-Previous:<a rel=previous href="#Savannah%20themes">Savannah themes</a>,
-Up:<a rel=up href="#System%20Administration">System Administration</a>
-<br>
-
-<h3>Savannah elisp</h3>
-
-<p>The file <code>savannah.el</code> can be used to get shortcuts to frequently
-moderation-related commands.
-
-<p>You should add this file to your GNU Emacs elisp path and add the
-following to your <code>.emacs</code>
-
-<br><pre>    (require `savannah)
-;;       or
-     (autoload 'savannah "/home/vrac/savannah/gnuscripts/savannah.el")
-</pre>
-
-<p>There are many functions that insert canned answers for project
-moderation purpose. It's usefull for gnus or VM users. Every functions
-begin with sv. So you just have to
-type sv-[TAB] to get a list of commands available.
-
-<br><pre>        # The license stuff is missing in the tarball
-        # It uses open in the name
-        # There's confusion between commercial and proprietary
-        M-x sv-[TAB]
-        M-x sv-no-license
-        M-x sv-use-open-in-name
-        M-x sv-confusion-commercial-and-proprietary
-        M-x sv-end-message
-</pre>
-
-<p>Additionally, there are canned bash commands available. They begin with
-sv-term. You need to run them in a shell/eshell. For instance:
-
-<br><pre>        # Logging in
-        M-x eshell
-        $ ssh address@hidden
-        [...]
-
-        # I want the list of projects waiting for approval.
-        M-x sv-term-project-pending-list
-        [RET]
-
-        # This project cannot be hosted here
-        # This function will remove the project from the database
-        # and add a log message using sv_register_discard
-        M-x sv-term-project-registration-discard
-        [RET]
-
-        # A user need to be renamed
-        M-x sv-term-user-rename
-
-        # A user need to be removed
-        M-x sv-term-user-remove
-</pre>
-
-<p>You're welcome to add/enhance this script. Keep in mind it should make
-use of preexisting non-elisp scripts as possible and try to conform to
-a coherent syntax (sv-use if a project use something and it's not ok,
-sv-no if something is missing, sv-term for terminal-related stuff,
-sv-term-user of for user-related stuff et caetera)
-
-<p><hr>
-Node:<a name="Concept%20Index">Concept Index</a>,
-Previous:<a rel=previous href="#System%20Administration">System 
Administration</a>,
-Up:<a rel=up href="#Top">Top</a>
-<br>
-
-<h2>Index of Concepts</h2>
-
-<ul compact>
-<li>.symlinks: <a href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic 
links</a>
-<li>/etc/aliases: <a href="#Mails%20and%20aliases">Mails and aliases</a>
-<li>/etc/cron.d/savannah: <a href="#Savannah%20crontab">Savannah crontab</a>
-<li>/etc/group: <a href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>
-<li>/etc/passwd: <a href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>
-<li>/subversions/sourceforge: <a 
href="#Subversions%20installation">Subversions installation</a>
-<li>/webcvs: <a href="#Web%20CVS%20repositories">Web CVS repositories</a>
-<li>/webcvs CVSROOT: <a href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of 
www.gnu.org on commit</a>
-<li>access to accounts.txt: <a href="#Account%20Management">Account 
Management</a>
-<li>access to savannah.xml: <a href="#Account%20Management">Account 
Management</a>
-<li>Account Management with Savannah: <a href="#Account%20Management">Account 
Management</a>
-<li>accounts.txt access: <a href="#Account%20Management">Account Management</a>
-<li>authorized_keys: <a href="#Account%20Management">Account Management</a>
-<li>backups of the database: <a href="#Database%20Backups">Database Backups</a>
-<li>booting: <a href="#Booting%20with%20grub%20and%20not%20lilo">Booting with 
grub and not lilo</a>
-<li>change html_cvs value: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>
-<li>CJN: <a href="#Skill%20List">Skill List</a>
-<li>commit notification: <a href="#Getting%20email%20from%20CVS">Getting email 
from CVS</a>
-<li>corrupted kernel or file system: <a 
href="#Emergency%20situation">Emergency situation</a>
-<li>crash recovery: <a href="#Emergency%20situation">Emergency situation</a>
-<li>crontab: <a href="#Savannah%20crontab">Savannah crontab</a>
-<li>CVS: <a href="#Introduction">Introduction</a>
-<li>CVS and symbolic links: <a href="#Web%20CVS%20Symbolic%20links">Web CVS 
Symbolic links</a>
-<li>CVS commit notification: <a href="#Getting%20email%20from%20CVS">Getting 
email from CVS</a>
-<li>CVS tarbals: <a href="#Source%20CVS%20tarbals">Source CVS tarbals</a>
-<li>disable Web CVS repository: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>, <a href="#Sources%20CVS%20repositories">Sources CVS 
repositories</a>
-<li>distributing tarbals: <a href="#Download%20area">Download area</a>
-<li>document root: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>DOCUMENT_ROOT: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>Dump in XML: <a href="#XML%20Dump">XML Dump</a>
-<li>emergency situation: <a href="#Emergency%20situation">Emergency 
situation</a>
-<li>fsffr accounts example: <a href="#Account%20Management">Account 
Management</a>
-<li>group file update: <a href="#Users%20and%20CVS%20synchronization">Users 
and CVS synchronization</a>
-<li>grub: <a href="#Booting%20with%20grub%20and%20not%20lilo">Booting with 
grub and not lilo</a>
-<li>hdparm: <a href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>
-<li>HTML version: <a href="#Publishing%20this%20document">Publishing this 
document</a>
-<li>html_cvs: <a href="#Web%20CVS%20repositories">Web CVS repositories</a>
-<li>IDE disks performance: <a href="#IDE%20Disk%20tweaking">IDE Disk 
tweaking</a>
-<li>kernel patch NGROUPS_MAX: <a href="#Linux%20configuration">Linux 
configuration</a>
-<li>lilo is not installed: <a 
href="#Booting%20with%20grub%20and%20not%20lilo">Booting with grub and not 
lilo</a>
-<li>Linux patch NGROUPS_MAX: <a href="#Linux%20configuration">Linux 
configuration</a>
-<li>machine crash: <a href="#Emergency%20situation">Emergency situation</a>
-<li>Makefile for XSLT files: <a href="#XML%20Dump">XML Dump</a>
-<li>MySQL prefix: <a href="#Savannah%20software%20root">Savannah software 
root</a>
-<li>NGROUPS_MAX &gt; 32: <a href="#NGROUPS_MAX">NGROUPS_MAX</a>
-<li>NGROUPS_MAX Linux patch: <a href="#Linux%20configuration">Linux 
configuration</a>
-<li>non-gnu projects web pages: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>
-<li>passwd file update: <a href="#Users%20and%20CVS%20synchronization">Users 
and CVS synchronization</a>
-<li>powercycle machine: <a href="#Emergency%20situation">Emergency 
situation</a>
-<li>project group: <a href="#Sources%20CVS%20repositories">Sources CVS 
repositories</a>
-<li>publish: <a href="#Publishing%20this%20document">Publishing this 
document</a>
-<li>publishing tarbals: <a href="#Download%20area">Download area</a>
-<li>remote boot: <a href="#Emergency%20situation">Emergency situation</a>
-<li>Savannah CVS: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>Savannah definition: <a href="#Top">Top</a>
-<li>Savannah prefix: <a href="#Savannah%20software%20root">Savannah software 
root</a>
-<li>Savannah project: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>Savannah root directory: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>savannah.xml access: <a href="#Account%20Management">Account Management</a>
-<li>skill: <a href="#Skill%20List">Skill List</a>
-<li>SourceForge: <a href="#Top">Top</a>
-<li>SourceForge fork rationale: <a href="#Top">Top</a>
-<li>SourceForge installation guide: <a href="#Introduction">Introduction</a>
-<li>statistics savannah.gnu.org: <a href="#Web%20Usage%20Statistics">Web Usage 
Statistics</a>
-<li>sv_aliases: <a href="#Mails%20and%20aliases">Mails and aliases</a>, <a 
href="#Subversions%20installation">Subversions installation</a>
-<li>sv_backup: <a href="#Source%20CVS%20tarbals">Source CVS tarbals</a>, <a 
href="#Database%20Backups">Database Backups</a>, <a 
href="#Subversions%20installation">Subversions installation</a>
-<li>sv_cvs: <a href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>, <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_export_db: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_migrate: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_non-gnu2gnu.sh: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_pass: <a href="#Subversions%20installation">Subversions installation</a>
-<li>sv_register_discard: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_skill: <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_stat: <a href="#Web%20Usage%20Statistics">Web Usage Statistics</a>, <a 
href="#Subversions%20installation">Subversions installation</a>
-<li>sv_sync_www: <a href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of 
www.gnu.org on commit</a>, <a href="#Subversions%20installation">Subversions 
installation</a>
-<li>sv_www: <a href="#Web%20CVS%20and%20Projects">Web CVS and Projects</a>, <a 
href="#Subversions%20installation">Subversions installation</a>
-<li>sv_xml: <a href="#Subversions%20installation">Subversions installation</a>
-<li>symbolic links: <a href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic 
links</a>
-<li>sync of www.gnu.org sync from /webcvs: <a 
href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on commit</a>
-<li>tarbals upload: <a href="#Download%20area">Download area</a>
-<li>This guide on www.gnu.org: <a 
href="#Publishing%20this%20document">Publishing this document</a>
-<li>uploading tarbals: <a href="#Download%20area">Download area</a>
-<li>useradd: <a href="#NGROUPS_MAX">NGROUPS_MAX</a>
-<li>usermod: <a href="#NGROUPS_MAX">NGROUPS_MAX</a>
-<li>web CVS projects rationale: <a href="#Web%20CVS%20and%20Projects">Web CVS 
and Projects</a>
-<li>web pages for non-gnu projects: <a href="#Web%20CVS%20repositories">Web 
CVS repositories</a>
-<li>Web statistics: <a href="#Web%20Usage%20Statistics">Web Usage 
Statistics</a>
-<li>webalizer.conf: <a href="#Web%20Usage%20Statistics">Web Usage 
Statistics</a>
-<li>webmaster documentation: <a href="#Web%20CVS%20and%20Projects">Web CVS and 
Projects</a>
-<li>webmasters in www: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>
-<li>webproject group: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>
-<li>website license: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>, <a href="#Sources%20CVS%20repositories">Sources CVS 
repositories</a>
-<li>www special project: <a href="#Web%20CVS%20and%20Projects">Web CVS and 
Projects</a>, <a href="#Web%20CVS%20repositories">Web CVS repositories</a>
-<li>www.gnu.org in CVS: <a href="#Web%20CVS%20repositories">Web CVS 
repositories</a>
-<li>www.gnu.org sync from /webcvs: <a 
href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on commit</a>
-<li>XML Dump: <a href="#XML%20Dump">XML Dump</a>
-<li>xmlbase user: <a href="#Account%20Management">Account Management</a>
-<li>XSLT files: <a href="#XML%20Dump">XML Dump</a>
-</ul>
-
-
-<h2>Short Contents</h2>
-<ul>
-<li><a href="#toc_Top">Savannah</a>
-<li><a href="#toc_Introduction">Introduction</a>
-<li><a href="#toc_Installation">Installation</a>
-<li><a href="#toc_Database">Database</a>
-<li><a href="#toc_Savannah%20Administrator">Savannah Administrator</a>
-<li><a href="#toc_Group%20Types">Group Types</a>
-<li><a href="#toc_Site%20Specific%20Content">Site Specific Content</a>
-<li><a href="#toc_Download%20area">Download area</a>
-<li><a href="#toc_CVS%20repositories">CVS repositories</a>
-<li><a href="#toc_Set%20up%20a%20mailing%20list">Set up a mailing list</a>
-<li><a href="#toc_Account%20Management">Account Management</a>
-<li><a href="#toc_Mailman">Mailman</a>
-<li><a href="#toc_Mails%20and%20aliases">Mails and aliases</a>
-<li><a href="#toc_Unlock%20alias%20at%20gnu.org%20account">Unlock alias at 
gnu.org account</a>
-<li><a href="#toc_Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>
-<li><a href="#toc_Publishing%20this%20document">Publishing this document</a>
-<li><a href="#toc_System%20Administration">System Administration</a>
-<li><a href="#toc_Concept%20Index">Index of Concepts</a>
-</ul>
-
-
-<h2>Table of Contents</h2>
-<ul>
-<li><a name="toc_Top"></a>
-    <a href="#Top">Savannah</a>
-<li><a name="toc_Introduction"></a>
-    <a href="#Introduction">Introduction</a>
-<li><a name="toc_Installation"></a>
-    <a href="#Installation">Installation</a>
-<ul>
-<li><a href="#A%20Typical%20Installation">A Typical Installation</a>
-<li><a href="#Subversions%20installation">Subversions Installation</a>
-</ul>
-<li><a name="toc_Database"></a>
-    <a href="#Database">Database</a>
-<ul>
-<li><a href="#Setting%20up%20the%20Database">Setting up the Database</a>
-<li><a href="#Remote%20Access">Remote Access</a>
-<li><a href="#XML%20Dump">XML Dump</a>
-<li><a href="#Database%20Backups">Database Backups</a>
-<li><a href="#Group%20Types%20Table">Group Types Table</a>
-<li><a href="#Skill%20List">Skill List</a>
-</ul>
-<li><a name="toc_Savannah%20Administrator"></a>
-    <a href="#Savannah%20Administrator">Savannah Administrator</a>
-<ul>
-<li><a href="#How%20it%20works%20in%20general">How it works in general</a>
-<li><a href="#How%20it%20works%20on%20subversions">How it works on 
subversions</a>
-</ul>
-<li><a name="toc_Group%20Types"></a>
-    <a href="#Group%20Types">Group Types</a>
-<ul>
-<li><a href="#Understand%20Group%20Types">Understand Group Types</a>
-<li><a href="#GNU%20and%20non-GNU%20on%20subversions">GNU and non-GNU on 
subversions</a>
-</ul>
-<li><a name="toc_Site%20Specific%20Content"></a>
-    <a href="#Site%20Specific%20Content">Site Specific Content</a>
-<ul>
-<li><a href="#One%20more%20time%20how%20it%20works%20in%20general">One more 
time how it works in general</a>
-<li><a href="#One%20more%20time%20how%20it%20works%20on%20subversions">One 
more time how it works on subversions</a>
-</ul>
-<li><a name="toc_Download%20area"></a>
-    <a href="#Download%20area">Download area</a>
-<li><a name="toc_CVS%20repositories"></a>
-    <a href="#CVS%20repositories">CVS repositories</a>
-<ul>
-<li><a href="#Import%20repositories">Import repositories</a>
-<li><a href="#Sources%20CVS%20repositories">Sources CVS repositories</a>
-<li><a href="#Getting%20email%20from%20CVS">Getting email from CVS</a>
-<li><a href="#Source%20CVS%20tarbals">Source CVS tarbals</a>
-<li><a href="#Web%20CVS%20repositories">Web CVS repositories</a>
-<li><a href="#Web%20CVS%20Symbolic%20links">Web CVS Symbolic links</a>
-<li><a href="#Sync%20of%20www.gnu.org%20on%20commit">Sync of www.gnu.org on 
commit</a>
-<li><a href="#Web%20CVS%20and%20Projects">Web CVS and Projects</a>
-</ul>
-<li><a name="toc_Set%20up%20a%20mailing%20list"></a>
-    <a href="#Set%20up%20a%20mailing%20list">Set up a mailing list</a>
-<li><a name="toc_Account%20Management"></a>
-    <a href="#Account%20Management">Account Management</a>
-<ul>
-<li><a href="#Account%20Management">Remove a user</a>
-</ul>
-<li><a name="toc_Mailman"></a>
-    <a href="#Mailman">Mailman</a>
-<ul>
-<li><a href="#Mailman">Current setup</a>
-<li><a href="#Mailman">Binding existing mailing lists</a>
-<li><a href="#Mailman">Adding a mailing list</a>
-<li><a href="#Mailman">Mailing lists for GNU packages</a>
-<li><a href="#Mailman">Mailing lists for non-GNU packages</a>
-<li><a href="#...Managed%20by%20Group%20Type">...Managed by Group Type</a>
-</ul>
-<li><a name="toc_Mails%20and%20aliases"></a>
-    <a href="#Mails%20and%20aliases">Mails and aliases</a>
-<li><a name="toc_Unlock%20alias%20at%20gnu.org%20account"></a>
-    <a href="#Unlock%20alias%20at%20gnu.org%20account">Unlock alias at gnu.org 
account</a>
-<li><a name="toc_Users%20and%20CVS%20synchronization"></a>
-    <a href="#Users%20and%20CVS%20synchronization">Users and CVS 
synchronization</a>
-<li><a name="toc_Publishing%20this%20document"></a>
-    <a href="#Publishing%20this%20document">Publishing this document</a>
-<li><a name="toc_System%20Administration"></a>
-    <a href="#System%20Administration">System Administration</a>
-<ul>
-<li><a href="#SSL%20certificate">SSL certificate</a>
-<li><a href="#Project%20registration%20discarding">Project registration 
discarding</a>
-<li><a href="#Web%20Usage%20Statistics">Web Usage Statistics</a>
-<li><a href="#Savannah%20crontab">Savannah crontab</a>
-<li><a href="#Savannah%20logs">Savannah logs</a>
-<li><a href="#Savannah%20software%20root">Savannah software root</a>
-<li><a href="#NGROUPS_MAX">NGROUPS_MAX</a>
-<li><a href="#cvs">cvs</a>
-<li><a href="#cron">cron</a>
-<li><a href="#sftp">sftp</a>
-<li><a href="#lsh%20and%20ssh">lsh and ssh</a>
-<li><a href="#Booting%20with%20grub%20and%20not%20lilo">Booting with grub and 
not lilo</a>
-<li><a href="#Emergency%20situation">Emergency situation</a>
-<li><a href="#Linux%20configuration">Linux configuration</a>
-<li><a href="#IDE%20Disk%20tweaking">IDE Disk tweaking</a>
-<li><a href="#Savannah%20themes">Savannah themes</a>
-<li><a href="#Savannah%20elisp">Savannah elisp</a>
-</ul>
-<li><a name="toc_Concept%20Index"></a>
-    <a href="#Concept%20Index">Index of Concepts</a>
-</ul>
-
-</body></html>
-<!--  LocalWords:  URL appointement
- -->
+<meta http-equiv="refresh" content="0; 
url=https://savannah.gnu.org/maintenance/";>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]