Résultat

Voici le résultat en ligne de nombreuses heures de travail: W3C Validator.

Installation

  1. Téléchargement CVS
    cd ~/project/cvs/
    export CVSROOTTMP=$CVSROOT
    export CVSROOT=":pserver:anonymous@dev.w3.org:/sources/public"
    cvs login
    # le mot de passe est anonymous
    cvs get validator
    export CVSROOT=$CVSROOTTMP
    
  2. Pré-requis #1, openSP. Je n'ai aucune idée comment détecté la version, mais on peut regarder avec un 'openjad<tab>' si le programme openjade est présent. Remarque: j'ai du recompilé openSP en français, voir l'étape 17.
  3. Euh? qu'est-ce qu'on fait après avoir fait ça? Je vais regardé dans project/cvs/validator/htdocs/index.html
  4. Peut-être si je l'essais avec mon serveur... Copie des fichiers dans les bons répertoires...
    cp -R validator/htdocs/ ~/public_html/w3c-validator/
    su
    cp validator/httpd/cgi-bin/ch* /var/www/cgi-bin/
    mkdir /usr/local/validator/ 
    cp -R validator/share/ /usr/local/validator/
    mkdir /etc/w3c
    cp validator/htdocs/config/* /etc/w3c/
    
  5. (à ne pas faire) Test #1 avec serveur, le lien vers le formulaire n'est pas valide. Correction de la page index.html en changeant le texte action="check" à action="/cgi-bin/check". On dirait que je n'ai pas SSL aussi.
  6. (à ne pas faire) Bon le script ne fonctionne pas, en regardant le script, je viens de m'apercevoir que j'ai oublié l'étape de copier les templates partagé. Correction faite, ca ne fonctionne pas plus.
  7. Je viens de remarquer ce qu'il me manquait, les configurations du httpd.conf (voir fichier httpd/conf/httpd.conf --> /etc/httpd/conf/httpd.conf). Bon je remet l'attribut "action" du formulaire check. Et je modifie en conséquence leur code pour accéder au bon répertoire. Et je redémarre le serveur /usr/sbin/apachectl -k restart
  8. Il faut que j'installe le Config/General.pm 2.06 de perl
    wget http://www.cpan.org/modules/by-category/02_Perl_Core_Modules/Config/Config-General-2.06.tar.gz
    # http://www.cpan.org/modules/by-category/02_Perl_Core_Modules/Config/Config-General-2.06.readme
    tar xzvf Config-General-2.06.tar.gz
    cd Config-General-2.06
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    
  9. Aussi, le HTML/Template 2.6 de perl
    wget http://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI/HTML/HTML-Template-2.6.tar.gz
    # http://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI/HTML/HTML-Template-2.6.readme
    tar xzvf HTML-Template-2.6.tar.gz
    cd HTML-Template-2.6
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    
  10. Aussi, le Set/Intspan de perl
    wget http://www.cpan.org/modules/by-module/Set/Set-IntSpan-1.07.tar.gz
    # http://www.cpan.org/modules/by-module/Set/Set-IntSpan-1.07.readme
    tar xzvf Set-IntSpan-1.07.tar.gz
    cd Set-IntSpan-1.07
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    
  11. Aussi, le Text/Text-Iconv de perl
    wget http://www.cpan.org/modules/by-module/Text/Text-Iconv-1.2.tar.gz
    # http://www.cpan.org/modules/by-module/Text/Text-Iconv-1.2.readme
    tar xzvf Text-Iconv-1.2.tar.gz
    cd Text-Iconv-1.2
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    
  12. Installation de libwww-perl 5.8
    perl -MCPAN -e 'install Bundle::LWP'
    
  13. Après avoir regardé sur le site de http://www.sslug.dk/emailarkiv/teknik/2003_01/msg00350.html, j'ai regardé le fichier /var/log/httpd/error_log pour voir l'erreur. Il me dit:
    Can't locate Apache/Registry.pm in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at (eval 1) line 3.!, referer: http://localhost:8080/w3c-validator/index.html
    
    L'erreur est causé parce que je n'ai pas ModPerl 1 mais ModPerl 2. J'ai changé dans le httpd.conf la ligne Apache::Registry par ModPerl::Registry. Ce qui a causé une erreur d'assertion.
    Assertion ((sv)->sv_flags & (0x00002000|0x00004000|0x00008000)) failed: file "mg.c", line 63 at /var/www/html/w3c-validator/check line 156.
    

    J'ai commenté la ligne 156 (où on efface la variable %ENV). Cette erreur a été décrite sur un forum.

  14. Et une autre erreur:
    Can't locate object method "FILENO" via package "Apache::RequestRec" at /usr/lib/perl5/5.8.0/IPC/Open3.pm line 196.
    
    Pour corriger le problème j'ai commenté le module
    #use Open3 
  15. Pour remplacer le open3(): http://www.alphalink.com.au/~ord/home/validator.html
  16. Hum, il semble que j'ai deux version de la commande (onsgmls) Le bon est dans le répertoire /usr/local/bin/onsgmls. J'ai donc modifié la ligne:
                                 SGML_Parser       => '/usr/local/bin/onsgmls',
    
  17. Installation de openSP 1.5
    wget http://download.sourceforge.net/openjade/OpenSP-1.5.tar.gz
    tar xzvf OpenSP-1.5.tar.gz
    cd OpenSP-1.5
    ./configure
    

    Attention!! Attention!!! Pour avoir les messages en français il faut faire:

    1. Aller dans le répertoire po/ (cd po/)
    2. Éditer le fichier Makefile (vi Makefile)
    3. Rechercher la ligne Catalogs et ajouter fr.gmo pour avoir ceci: CATALOGS = fr.gmo
    4. Revenir en ligne de commande et configurer la variable LANG à fr_CA ( export LANG=fr_CA )
    make
    make check
    make install
    cd ..
    
  18. Pour utiliser le bon répertoire de recherche des DTD je n'utilise plus la variable d'environnement SGML_SEARCH_PATH. J'ai rajouté l'option -D /usr/local/validator/htdocs/sgml-lib à la ligne de commande.

Traduction avec xgettext ?

J'essai présentement de traduire les messages avec xgettext. Première étape, installer le package libint-perl.

# (en root)
wget http://search.cpan.org/CPAN/authors/id/G/GU/GUIDO/libintl-perl-1.10.tar.gz
tar xzvf libintl-perl-1.10.tar.gz
cd libintl-perl-1.10
perl Makefile.PL
make
make test
make install
cd ..

Bon, il me reste plus qu'à comprendre comment le mettre dans le script check. Voir l'exemple SimpleCal.