[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Savannah-cvs] administration/docs/hacking_savannah hacking_sa...
From: |
Sylvain Beucler |
Subject: |
[Savannah-cvs] administration/docs/hacking_savannah hacking_sa... |
Date: |
Sun, 17 Jul 2005 12:48:08 -0400 |
CVSROOT: /cvsroot/administration
Module name: administration
Branch:
Changes by: Sylvain Beucler <address@hidden> 05/07/17 16:48:08
Modified files:
docs/hacking_savannah: hacking_savannah.texi
Log message:
Further revisions.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/administration/administration/docs/hacking_savannah/hacking_savannah.texi.diff?tr1=1.110&tr2=1.111&r1=text&r2=text
Patches:
Index: administration/docs/hacking_savannah/hacking_savannah.texi
diff -u administration/docs/hacking_savannah/hacking_savannah.texi:1.110
administration/docs/hacking_savannah/hacking_savannah.texi:1.111
--- administration/docs/hacking_savannah/hacking_savannah.texi:1.110 Sat Jul
16 17:31:06 2005
+++ administration/docs/hacking_savannah/hacking_savannah.texi Sun Jul 17
16:48:08 2005
@@ -1,5 +1,5 @@
\input texinfo @c -*-texinfo-*-
address@hidden $Id: hacking_savannah.texi,v 1.110 2005/07/16 17:31:06 Beuc Exp $
address@hidden $Id: hacking_savannah.texi,v 1.111 2005/07/17 16:48:08 Beuc Exp $
@comment %**start of header
@setfilename hacking_savannah.info
@include version.texi
@@ -686,6 +686,7 @@
Add a root password:
@example
+/etc/init.d/mysql start
mysqladmin -u root password 'rootpass'
@end example
@@ -698,12 +699,14 @@
IDENTIFIED BY '@var{scriptpass}';
@end example
-To change the password:
+If you need to change the password:
@example
mysql> SET PASSWORD FOR 'savannahscripts'@@'localhost' =
PASSWORD('newpass');
@end example
+To exist mysql, type @kbd{exit} or hit @kbd{C-d}.
+
MySQL must then be configured so as to run in the Savane root
directory. In @file{/etc/mysql/my.cnf} replace
@code{/var/run/mysqld/mysqld.sock} by
@@ -714,12 +717,6 @@
mysql.default_socket = /mysqld/mysqld.sock
@end example
-While you are in @file{php.ini}, check
-that MySQL persistent connections are activated, via:
address@hidden
-mysql.allow_persistent = On
address@hidden example
-
Last, create the MySQL directory in Savane's root directory:
@example
mkdir -m 755 /savannah/mysqld
@@ -729,6 +726,7 @@
For convenience, you can create a @file{~/.my.cnf} file where you can store
your root password:
@example
+cat > ~/.my.cnf
[client]
user=root
password=pass
@@ -750,12 +748,14 @@
@example
cd ~
-aptitude build-dep ssmtp
-aptitude -b source ssmtp
+aptitude install dpkg-dev
+apt-get build-dep ssmtp
+apt-get -b source ssmtp
cd ssmtp-*
cc -static -o ssmtp main.o header.o rcpt.o from.o net.o log.o options.o \
util.o arpadate.o base64.o -lnsl
mkdir -m 755 /savannah/bin
+mkdir -m 755 /savannah/lib
mkdir -m 755 -p /savannah/usr/sbin/
cp ssmtp /savannah/usr/sbin/sendmail
cp -a /lib/libnss_files* /lib/libncurses.so.5 /savannah/lib
@@ -764,10 +764,10 @@
cp /bin/sh /savannah/bin
mkdir -m 755 /savannah/etc/ssmtp/
touch /savannah/etc/ssmtp.revaliases
-cp ~/ssmtp.conf /savannah/etc/ssmtp/
@end example
-And here is the ssmtp.conf configuration file:
+And here is the @file{/savannah/etc/ssmtp/ssmtp.conf configuration}
+file:
@verbatim
# The person who gets all mail for userids < 1000
root=root
@@ -1081,7 +1081,7 @@
(If you do not want to use useradd/usermod/userdel that are in the usual PATH
but specific ones, you can type here their prefix. Otherwise, comment out)
Ex: /usr/local/savannah/bin
-[OUT]:
+[OUT]:@kbd{/usr/local/bin}
@@ -1167,19 +1167,17 @@
** /etc/savannah/savannah.conf.pl (re)created **
-# mkdir -pm 755 /usr/local/savane/bin
-$ make install
+make install
@end example
Now is the time to install Savane's Savannah.[non]gnu.org
configuration:
@example
-$ cd /savannah/etc
-$ cvs -d:ext:anoncvs@@savannah.gnu.org:/cvsroot/administration \
- co -d savane administration/subversions
-$ ln -s savane/gnu-content
-$ ln -s savane/nongnu-content
+mkdir -m 755 /savannah/etc/savane
+cd /savannah/etc/savane
+cvs -d:ext:anoncvs@@savannah.gnu.org:/cvsroot/administration \
+ co -d content administration/content
@end example
Copy the @file{[non]gnu.conf} directories from Savannah.
@@ -1187,85 +1185,60 @@
[TODO: explain how to reproduce this configuration file instead. Well,
at least explain it]
address@hidden contains sensitive information such as MySQL
+passwords. Hence its permissions should be set accordingly:
@example
-$ cd /savanah/etc
-# $ ln -s savane/gnu-conf
-# $ ln -s savane/nongnu-conf
-# TODO: move the conf to a private repository
+chmod 600 savannah.conf.pl
+chmod 640 savannah.conf.php
+chgrp www-data savannah.conf.php
@end example
+for both gnu-conf and nongnu-conf.
address@hidden and @file{nongnu-conf} contain sensitive information
-such as MySQL passwords.
-
-Last, make the default configuration path point to the WWW root:
+Since the savannah.nongnu configuration can be derived from
+savannah.gnu, we can use this for @file{nongnu-conf/savannah.conf.php}:
@example
-$ cd /etc
-$ rm -rf savannah
-$ ln -s /savannah/etc/gnu-conf savannah
+<?php
+include "/etc/savane/gnu-conf/savannah.conf.php";
+$sys_default_domain="savannah.nongnu.org";
+$sys_https_host="$sys_default_domain";
+$sys_brother_domain="savannah.gnu.org";
+$sys_incdir="/etc/savane/content/nongnu-content";
@end example
-You can infer from this that gnu-conf is the configuration file for
-the backend.
-
-If you make changes to savannah.conf.pl, you update savannah.conf.php:
+Last, make the default configuration path point to the WWW root:
@example
-$ cd /usr/src/savane
-$ make update-conf
+cd /etc
+rm -rf savannah
+ln -s /savannah/etc/savane/gnu-conf savannah
@end example
+You can infer from this that gnu-conf is the configuration file for
+the backend.
-To make the non-GNU conf easy to maintain, you can use this
@file{savannah.conf.php} file:
address@hidden
-<?php
-include "/etc/gnu-conf/savannah.conf.php";
- $sys_default_domain="savannah.nongnu";
- $sys_https_host="$sys_default_domain";
- $sys_brother_domain="savannah.gnu";
- $sys_incdir="/etc/nongnu-content";
- $sys_lists_domain="$sys_default_domain";
-?>
address@hidden verbatim
-
-It is seems it is very BAD to add a new line at the end of the file (I
-think, especially for p and pr that are doing body-less HTTP
-redirections) - to be tested.
-You can also delete the savannah.conf.pl from nongnu.conf, since it is
-never used.
+Update your configuration files to use your own passwords.
-Be sure that the @file{savannah.conf*} files have proper permissions:
+If you make changes to @file{savannah.conf.pl}, you need to update
address@hidden:
@example
-$ chmod 600 savannah.conf.pl
-$ chmod 640 savannah.conf.php
-$ chgrp www-data savannah.conf.php
+$ cd /usr/src/savane
+$ make update-conf
@end example
-for both gnu-conf and nongnu-conf.
-Also update the skills list:
+Update the skills list:
@example
-$ /usr/local/savane/bin/sv_skill
+/usr/local/bin/sv_skill
@end example
You then can install the frontend in the WWW root directory:
@example
-$ cd /savannah
-$ mv /usr/src/savane/frontend .
-$ ln -s frontend/php www
-$ cd /usr/src/savane
-$ ln -s /savannah/frontend
+cd /usr/src/savane
+rsync -av frontend /savannah/
@end example
-The symbolic links are created this way so as to avoid following
-symlinks outside the WWW root.
-
-[TODO: I recommand against this configuration, since it makes you
-update the files directly served by Apache. I suggest to work in
-/usr/src/savane and do a @command{cp -a} once your CVS work is done.]
-
-
Currently, some files from the sysadmins requires a Setuid backport
from Perl 5.8 to Perl 5.6.
@@ -1273,14 +1246,23 @@
If you stuck to Debian stable, grab it from @file{/usr/src/Setuid} at
savannah.gnu.org. Installing is easy and classical:
@example
-$ cd /usr/src/Setuid
-$ make Makefile.PL
-$ make
-$ make install
+cd /usr/src/Setuid
+make Makefile.PL
+make
+make install
@end example
Else, you should be able to simply update your Perl.
+
+Install a set of Savannah-specific scripts:
address@hidden
+mkdir -m 755 /usr/savannah
+cd /usr/savannah
+cvs -d:ext:address@hidden/cvsroot/administration \
+ co -d infra administration/infra
address@hidden example
+
@node Locales, Tuning your local install, Savane, Savannah configuration
@section Locales
@@ -1291,9 +1273,7 @@
Install the locales:
@example
-$ mkdir -pm 755 /savannah/usr/share /savannah/usr/lib
-$ rsync -av --delete-excluded /usr/lib/locale /savannah/usr/lib
-$ rsync -av --delete-excluded /usr/share/locale /savannah/usr/share
+/usr/savannah/infra/bin/locales_sync.sh
@end example
Be sure you copied the Savane locales, among others.
@@ -1342,7 +1322,6 @@
@dots{}
dr IN A 192.168.0.5
savannah.gnu IN CNAME dr
-#savannah.nongnu IN CNAME dr
savannah.nongnu IN A 192.168.0.101
audio-video.gnu IN CNAME savannah.gnu
cvs.savannah.gnu A 192.168.0.102
@@ -1402,7 +1381,7 @@
@example
$ useradd -m gpg-writer -g nogroup -s /bin/false
-~> su - gpg-writer
+$ su - gpg-writer
~> gpg # creates ~/.gnupg
~> exit
$ groupadd gatekpr
@@ -1468,22 +1447,23 @@
@node Populating your test install, Remaining, CVS, Savannah configuration
@section Populating your test install
-Plus modify the source (/php/include/account.php) to permit group
-'www' creation, and create that group. Or import the DB from a SQL dump.
+Modify the source (/php/include/account.php) to permit group 'www'
+creation, and create that group. Or import the DB from a SQL dump.
At savannah.gnu.org:
@example
-$ mysqldump -C --add-locks -F -l savannah > dump.sql
+mysqldump -C --add-locks -F -l savannah > dump.sql
@end example
+(or grab it from @file{/dumps})
and then at your test install:
@example
# First empty the current database
-$ mysql -p savannah
+mysql savannah
mysql> drop database savannah;
mysql> create database savannah;
# Then fill it again
-$ mysql -p savannah < dump.sql
+mysql savannah < dump.sql
@end example
Just be patient, the dump weighs as of 2004-09 some 155MB.
@@ -1523,11 +1503,11 @@
Or more barbaric:
@example
-$ mysql savannah
+mysql savannah
mysql> select distinct user_id into outfile '/tmp/minimum.txt' from user_group
ORDER BY user_id;
mysql> select user_id into outfile '/tmp/full.txt' from user ORDER BY user_id;
-$ cd /tmp
-$ diff minimum.txt full.txt | grep ^\> | cut -b 2- | while read line; do echo
DELETE FROM user where user_id=$line\;; done | mysql savannah
+cd /tmp
+diff minimum.txt full.txt | grep ^\> | cut -b 2- | while read line; do echo
DELETE FROM user where user_id=$line\;; done | mysql savannah
@end example
It would be better to let some people with no assigned projects, as
@@ -1645,17 +1625,31 @@
out at /usr/savannah.
infra is mainly composed of:
-- misc -> main crontab
-- bin -> scripts, some of which are used by cron
-- savane/bin -> changed sv_users and sv_groups; they hardcodedly use
savane/lib below
-- savane/lib -> changed lib (the untouched lib is also available at the std
location)
address@hidden
address@hidden
+misc -> mainly crontab
address@hidden
+bin -> scripts, some of which are used by cron
address@hidden itemize
+
+These are now unused now. Savannah-specific code is now either
+integrated or completely separate.
address@hidden
address@hidden
+savane/bin -> changed sv_users and sv_groups; they hardcodedly use savane/lib
below
address@hidden
+savane/lib -> changed lib (the untouched lib is also available at the std
location)
address@hidden itemize
+
Changes to do:
-$ cd /etc/cron.d
-$ ln -s /usr/savannah/infra/misc/crontab savannah
address@hidden
+cd /etc/cron.d
+ln -s /usr/savannah/infra/misc/crontab savane
# Edit the cronjob's MAILTO, comment out uneeded stuff
# edit the Conf.pm so as to make the system believe you are at Savannah
# edit sv_users and replace mkdir($home) by 'mkdir -p $home`
address@hidden example
@node Alternate Savannah Installation, Using MySQL, Savannah configuration, Top
@@ -1767,7 +1761,6 @@
* Moving a list::
* Resetting a password::
* Archives policies::
-* Spam::
* Mailman installation::
@end menu
@@ -1995,7 +1988,7 @@
That's all :)
address@hidden Archives policies, Spam, Resetting a password, Mailing lists
administration
address@hidden Archives policies, Mailman installation, Resetting a password,
Mailing lists administration
@section Archives policies
[TODO]
@@ -2020,38 +2013,8 @@
members. Note that old messages will remain public.
@end quotation
address@hidden
-* Spam::
address@hidden menu
-
address@hidden Spam, Mailman installation, Archives policies, Mailing lists
administration
address@hidden Spam
-
-Here is a way to way to filter mail sent through lists.gnu.org that I
-experimented on a test mailing-list. It uses Mailman spam filters:
address@hidden://lists.gnu.org/mailman/admin/@var{list_name}/privacy/spam}
address@hidden
address@hidden Filter 1:
address@hidden @asis
address@hidden Regexp
address@hidden: +<[^@@]+@@lists\.gnu\.org>@*
-From: list_name-owner@@gnu.org}
address@hidden Action
-Accept
address@hidden table
address@hidden Filter2:
address@hidden @asis
address@hidden Regexp
address@hidden
address@hidden Action
-Discard
address@hidden table
address@hidden itemize
-
-One can use it in commit notification lists.
-
address@hidden Mailman installation, , Spam, Mailing lists administration
address@hidden Mailman installation, , Archives policies, Mailing lists
administration
@section Mailman installation
@menu
@@ -3131,20 +3094,9 @@
information... Not version controlled.
@verbatim
-? php/tmp
-? php/include/smtp.inc
-? php/mail/admin/test.php // this is my test for PHP networking issue
-M php/mail/admin/index.php // fixed a bug for attaching mailing lists. Sent
bug report to Savane.
-M php/account/change.php // seems gpg addition for file upload
-M php/account/lostpw-confirm.php // We will get a lot of these in the
- // coming days let's not send to hackers.
- // address@hidden
-M php/admin/approve-pending.php // Disabled by corvus, 22 December
-M php/include/sendmail.php // Modified to use SMTP by address@hidden
+M php/mail/admin/index.php // lists still not linked to Mailman
@end verbatim
-Elfyn plans to make a temporary patchset and upgrade to Savane, Really Soon
(tm).
-
@node Web Server Syndication, Savane admin's limits, Uncommited local changes
to Savannah's repository, Some quirks
@section Web Server Syndication
@@ -3155,7 +3107,8 @@
webcvs repositories.
@url{www.nongnu.org} hosts non-GNU projects as well as the www.gnu.org
-translation teams webpages under @url{www.gnu.org/@/@var{project_name}/}.
+translation teams webpages under
address@hidden/@/@var{project_name}/}.
@url{www.gnu.org} hosts GNU project under
@url{www.gnu.org/@/software@/@var{project_name}/}, plus various
@@ -3163,7 +3116,7 @@
Upon project approval, syndication does not begin automatically.
Since the FSF will not allow Savannah hackers shell access to GNU's
-main webserver, for understandable security concerns, there is a URL
+main webserver, for (un)understandable security concerns, there is a URL
we must use to enable project web syndication, for both GNU and non-GNU
projects.
@@ -3877,8 +3830,6 @@
it took him more time to study and avoid patents, than actually
working on the algorithm and writing the software...
-Here is two patents we want to avoid:
-
@menu
* GIFs::
* MP3::
@@ -3902,14 +3853,11 @@
@node MP3, , GIFs, Words to avoid
@subsubsection MP3
-There are patents on @emph{both} the encoding and the decoding
-(playing) of MP3 audio files. We recommand instead Ogg Vorbis and Free
-Lossless Audio Codec (FLAC).
-
-If a program parses MP3 files to find information (such as ID3 tags),
-then this is not (as far as I know) covered by a patent and is
-acceptable at Savannah. However, we are concerned that not only MP3
-files are supported by such a project.
+RMS told us there was no action against MP3 at the moment. Any
+non-trivial is patented, so rejected ``patented formats'' in general
+would actually mean rejecting almost all formats. GIFs are rejected as
+a special action, mainly because patents holders enforced their
+patents on GIFs.
@node Mirroring, , Words to avoid, Approval Criteria