La suite sched est écrite en perl. L'application est disponible sous forme de package pour la distribution Debian.
Les modules sched_master, sched_view et sched_builder ont été étudiés pour fonctionner sur Debian. Il est possible d'utiliser un autre système, mais l'installation ne sera pas détaillée ici.
Les programmes (sched_slave, sched_xfer, sched_job, sched_builder) doivent être installés dans le PATH (ex /usr/local/bin)
Certains chemins doivent être adaptés suivant votre environnement dans le fichier src/lib/sched/Sched.pm.
our $prefix = '/tmp/sched' ; our $prefix_etc = "$prefix/etc" ; our $prefix_bin = "$prefix/bin" ; our $prefix_share = "$prefix/share" ;
Le répertoire share peut être recré via la commande ./src/utils/mk_share.sh
Les librairies src/lib/sched doivent être installées dans un répertoire perl (@INC).
localhost:~/# perl -e 'use exemple;' Can't locate exemple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 ...) BEGIN failed--compilation aborted at - line 1.
Les librairies peuvent être installées dans un répertoire non système, il faut alors utiliser la variable PERL5LIB ou bien ajouter au début des programmes un use lib;
#!/usr/bin/perl -w use lib '/path/to/sched/lib' ;
ou bien :
plume:~/tmp# export PERL5LIB=~/sched/src/lib/sched/
L'installation des modules CPAN peut être faite directement via le réseau (avec résolution des dépendances). Il est possible de les installer dans un répertoire spécial (PREFIX) pour pouvoir dupliquer l'installation (il faudra alors mettre à jour la variable PERL5LIB).
perl -MCPAN -e shell cpan# install Net::EasyTCP
- Net::EasyTCP - XML::Mini - Text::Balanced - Digest::MD5 - Log::Log4perl - MIME::Base64 - Config::IniFiles - Tie::File - Time::HiRes - Event - Time::ParseDate
Il faut patcher la librairie XML::Mini pour qu'elle fonctionne avec sched
--- org/XML/Mini/Document.pm 2004-10-01 23:03:20.000000000 +0200 +++ new/XML/Mini/Document.pm 2004-10-22 21:30:49.000000000 +0200 @@ -761,0 +761,0 @@ return undef unless (defined $attrString); my $count = 0; - while ($attrString =~ /([^\s]+)\s*=\s*(['"])([^\2]+?)\2/g) + while ($attrString =~ /([^\s]+?)\s*=\s*(['"])([^\2]*?)\2/g) { my $attrname = $1; my $attrval = $3;
Ces modules sont utilisés par la librairie de communication réseau.
- Compress::Zlib - Crypt::Blowfish - Crypt::CBC
- DBI - Pg - String::Random
- HTTP::Daemon - Net::IPNetMember
- Gnome2 - Gnome2::Canvas - Gtk2::GladeXML
OS | Module | Notes |
---|---|---|
Linux i386 debian (sid) | sched_master | OK |
sched_job | OK | |
sched_xfer | OK | |
sched_slave | OK | |
Ubuntu 5.04 | sched_master | OK |
sched_job | OK | |
sched_xfer | OK | |
sched_slave | OK | |
Solaris | sched_job | OK |
sched_slave | OK | |
Linux FC2 | sched_job | OK |
sched_slave | OK | |
Linux Redhat7.3 | sched_job | OK |
sched_slave | OK | |
Windows 2003 | sched_job | via cygwin (problème dans le module réseau) |
sched_slave | via cygwin | |
Windows XP | sched_job | via cygwin |
sched_slave | via cygwin | |
sched_xfer | via cygwin |
Il faut installer cygwin avec au minimum les composants suivants :
Le programme cygrunsrv permet de transformer sched_slave et sched_xfer en service NT.
bash:# cygrunsrv -I sched_slave -p /bin/perl.exe \ -a '/path/to/sched_slave -c /path/to/etc/slave.cfg' \ -e PERL5LIB=/perl/lib/perl5/site_perl/5.8:/perl/lib/perl5/site_perl/5.8/cygwin:/path/to/sched/lib \ -u utilisateur_administrateur
Le sched_master permet de :
Pour faire ce travail, le programme ne requière pas de droit particulier. Il peut donc être exécuté en tant que sched/sched par exemple.
Les trames réseaux ne comportent pas d'adresse ip. Il est donc possible d'utiliser du NAT/SNAT et autres joyeusetés tant appréciées par vos administrateurs réseaux. Il faut rester cohérent dans la configuration et la déclaration des machines.
Source | Destination | Port/Protocole |
---|---|---|
sched_slave | sched_master | master_port |
sched_job | sched_master | master_port |
sched_master | sched_xfer | xfer_port |
Mozilla | sched_view | http |
Ajout d'un utilisateur sched :
postgres@plume:~# createuser -P sched Enter password for new user: Enter it again: Shall the new user be allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER
Création d'une base sched :
postgres@plume:~# createdb -O sched sched CREATE DATABASE
Gestion des droits de connexion :
postgres@plume:~# grep sched /etc/postgresql/pg_hba.conf local sched sched password
Chargement de la structure de la base :
postgres@plume:~# psql -U sched -W sched < pg.sql
ScriptAlias /cgi-bin/sched/ /usr/lib/cgi-bin/sched/ <Directory "/usr/lib/cgi-bin/sched"> AllowOverride AuthConfig Options ExecCGI Order allow,deny Allow from all </Directory> Alias /sched /usr/share/sched/html <Directory "/usr/share/sched/html"> Options None AllowOverride AuthConfig Order allow,deny Allow from all </Directory>
L'utilisation du navigateur Mozilla (1.7) avec le support SVG permet de visualiser les rapports d'exécution (voir sur http://localhost/sched). (Fig 3)
Sur debian et ubuntu, il faut modifier /etc/mozilla/prefs.js pour afficher le text dans les composants SVG.
pref("font.FreeType2.enable", true); pref("font.directory.truetype.1", "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"); pref("font.directory.truetype.2", "/usr/share/fonts/truetype"); pref("font.directory.truetype.3", "/usr/share/fonts/truetype/openoffice");
Vous devez récupérer les différents .deb dans la section download sur www.nongnu.org/sched, puis il faut les installer via dpkg -i *.deb. Pour installer les dépendances demandées faites un apt-get isntall -f. Des fichiers de configuration sample sont installés sous /etc/sched, il faut les vérifier et autoriser le démarrage des daemons sous /etc/default/sched-*.
eric@zog:~/travail/sched/debian# cat /etc/default/sched-* MASTER_CONFIG=ok SLAVE_CONFIG=
Eric 2005-12-17