This file is indexed.

/usr/share/doc/HOWTO/fr-html/WWW-mSQL-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Serveur Web de Base de Données mSQL / perl HOWTO</title>
</head>
<body>
<h1>Serveur Web de Base de Données mSQL / perl HOWTO</h1>
<h2>par <a href="mailto:corff@zedat.fu-berlin.de">Oliver
Corff</a>,<br>
version française <a href=
"mailto:Nicolas.Caillaud@mail.dotcom.fr">Nicolas Caillaud</a></h2>
v0.1, 17 September 1997
<hr>
<em>Ce Mini HOWTO, très largement inspiré de l'article de Michael
Schilli <code>Gebunkert : Datenbankbedienung mit Perl und
CGI</code>, publié dans le magazine informatique allemand iX du
mois d'aout 1997, explique comment construire une base de données
client/server SQL sur le Web, utilisant HTML pour l'interface
utilisateur.</em>
<hr>
<h2><a name="s1">1. A propos de ce Document</a></h2>
<h2><a name="ss1.1">1.1 Lecteurs concernés</a></h2>
<p>Ce document devrait être utile à ceux qui veulent mettre en
place un serveur de base de données sur le Web, mais qui ne savent
pas quels logiciels sont nécessaires, ni comment les installer. Il
fournit toutes les informations utiles pour faire fonctionner une
base de données SQL sur un serveur Web ; il <em>ne</em> rentre
<em>pas</em> dans les détails de la programmation CGI, ni
n'explique le langage SQL. D'excellents ouvrages existent sur ces
sujets, et le but de ce document est seulement de fournir une
plate-forme sur laquelle un utilisateur pourra étudier la
programmation CGI et le langage SQL.</p>
<p>Pour faire tourner un système SQL sur une petite échelle (et non
pas l'exemple classique du système de réservation d'une importante
compagnie aérienne, ou le système de gestion de base de données
d'une mission spatiale), il suffit d'avoir les logiciels décrits
dans ce document, et la documentation les accompagnant. Le manuel
utilisateur de msql (la base de données décrite ici) fournit
suffisamment d'informations sur SQL pour vous permettre de
construire votre propre base.</p>
<p>Le lecteur doit savoir comment récupérer des fichiers par
<code>ftp</code> s'il n'a pas les CD-ROM adéquats, et comment
construire des exécutables à partir des fichiers sources. En tout
état de cause, toutes les étapes décrites dans ce document ont été
testées sur un système réel, et devraient fonctionner sur le
système du lecteur.</p>
<h2><a name="ss1.2">1.2 Conventions typographiques</a></h2>
<p>Une commande utilisateur :</p>
<pre>
# make install
</pre>
<p>Affichage d'un programme :</p>
<blockquote>
<pre><code>
Program installed. Read README for details on how to start.
</code></pre></blockquote>
<p>Exemple de fichier de code :</p>
<hr>
<pre>
# Un commentaire
char lettre;
</pre>
<hr>
<h2><a name="s2">2. Introduction</a></h2>
<p>On peut raisonnablement supposer que des bases de données
contenant de gros volumes de données, ou un schéma relationnel
compliqué (comme, par exemple, une base lexicale pour un langage
parlé), doivent être accessibles à beaucoup d'utilisateurs à la
fois. De même, il doit être possible d'utiliser diverses
plates-formes matérielles et logicielles existantes pour construire
le système final. Pour réduire les coûts de mise en oeuvre, une
seule partie du système a réellement besoin de puissance : le
serveur de la base de données ; les stations utilisateurs doivent
seulement afficher des données et accepter des commandes
utilisateurs, mais le traitement proprement dit est fait sur une
seule machine, justifiant ainsi le terme "base de données client -
serveur". De plus, l'interface utilisateur doit être facile à
configurer, et requérir le moins de traitement possible sur le
client.</p>
<p>Les éléments suivants (protocoles, logiciels et plus
généralement concepts) sont utilisés pour construire un système
conforme à ces critères :</p>
<dl>
<dt><b>Linux</b></dt>
<dd>
<p>est le système d'exploitation. Il s'agit d'une implémentation
stable d'Unix, multi-utilisateurs, multi-tâches, avec support
réseau complet (TCP/IP entre autres). A part le coût du support et
de la transmission, il est gratuit et livré sous forme de
distributions, qui incluent généralement l'indispensable, du
Système d'Exploitation lui-même au traitement de texte, outils de
développement logiciel, langage de script, générateurs
d'interfaces, etc.</p>
</dd>
<dt><b>HTML</b></dt>
<dd>
<p>Le langage HTML (HyperText Markup Language) est utilisé pour
construire des interfaces de systèmes réseaux comme des Intranets,
des serveurs Web (WWW). HTML est extrêmement simple et peut être
généré à partir de n'importe quel éditeur de texte ASCII.</p>
</dd>
<dt><b>Navigateurs</b></dt>
<dd>
<p>Les navigateurs sont des applications en mode texte (par exemple
Lynx) ou en mode graphique (par exemple Mosaic, Netscape, Arena,
etc.) destinées à la lecture et à l'affichage de documents HTML.
C'est le seul logiciel directement manipulé par l'utilisateur de la
base de données. Grâce aux navigateurs, on peut afficher différents
types de données (texte ou images), et communiquer avec des
serveurs HTTP (voir plus loin), hébergés par à peu près n'importe
quel modèle d'ordinateur sur lequel un navigateur est
disponible.</p>
</dd>
<dt><b>Serveurs HTTP</b></dt>
<dd>
<p>Un serveur HTTP fournit l'accès à une zone de l'ordinateur
contenant les données publiques d'un réseau. Il supporte le
protocole HTTP et fournit l'information demandée par
l'utilisateur.</p>
</dd>
<dt><b>SQL</b></dt>
<dd>
<p>SQL (Structured Query Language) est un langage de manipulation
de données dans une base relationnelle. Sa grammaire est très
simple et constitue un standard largement supporté dans
l'industrie. Les bases de données SQL sont au coeur même du concept
classique de base de données Client - Serveur. Des systèmes SQL
reconnus existent, comme Oracle, Informix, etc. ; on trouve aussi
des bases comme msql, mysql, postgresql, pratiquement gratuites
lorsqu'elles sont utilisées dans un cadre scolaire ou
universitaire.</p>
</dd>
<dt><b>CGI</b></dt>
<dd>
<p>CGI (Common Gateway Interface) est l'interface de programmation
entre le système supportant les données (dans notre cas, le système
SQL) et le protocole réseau (HTML, bien sûr). Les interfaces CGI
peuvent être construites en utilisant beaucoup de langages de
programmation, dont l'un des plus populaires est perl.</p>
</dd>
<dt><b>Perl</b></dt>
<dd>
<p>Perl est un langage de script particulièrement puissant, qui
combine les avantages du C, des différents shells, et des langages
de manipulations de flux comme awk ou sed. Par exemple, perl
possède de nombreux modules de manipulation de base de données
SQL.</p>
</dd>
</dl>
<h2><a name="s3">3. Procédure d'installation</a></h2>
<h2><a name="ss3.1">3.1 Matériel requis</a></h2>
<p>Aucune supposition ne peut être faite sur les besoins en
matériel d'un serveur de base de données. Cela dépend trop du
nombre d'utilisateurs, du type d'application, de la charge du
réseau, etc. Dans un environnement comprenant peu d'utilisateurs et
un trafic réseau faible, un 486 ou équivalent, avec 16 MO de
mémoire vive, peut être suffisant. Linux, le système
d'exploitation, est très efficace en termes de ressources, et peut
fournir suffisamment de puissance pour faire tourner un grand
nombre d'applications en même temps. Bien sûr, un processeur plus
puissant et plus de mémoire vive signifient plus de puissance, mais
la quantité de mémoire vive est plus importante que le processeur.
Plus le système a de mémoire vive, moins il est obligé, en cas de
besoin, de swapper les processus les plus gourmands en mémoire sur
le disque.</p>
<p>Avec un système équipé de 32 MO de mémoire vive et d'un bus PCI,
les recherches et opérations de tri peuvent être faites sans avoir
recours au(x) fichier(s) d'échange (swap), donnant d'excellents
résultats.</p>
<p>L'installation décrite dans cet article a été faite sur un IBM
686 à 133MHz, avec 32 MO de mémoire vive et un disque dur IDE de
1.2 GO. La suite du document présente les étapes indispensables à
une installation complète.</p>
<h2><a name="ss3.2">3.2 Logiciel</a></h2>
<p>Les logiciels décrits dans cet article sont disponibles sur
Internet, ou sur CD-ROM. Les produits suivants sont utilisés :</p>
<ul>
<li>Distribution Red Hat 4.2, parue pendant l'été 1997, disponible
sur CD-ROM (Red Hat Linux PowerTools : 6 CD-ROM complets et prêts à
être utilisés) ou sur Internet, sur le site de <a href=
"http://www.redhat.com">RedHat</a> ;</li>
<li>Base de données SQL msql : disponible en deux versions. Les
différences entre ces deux versions résident dans le nombre maximum
de transactions supporté, l'interface d'administration, etc. La
version la plus ancienne, 1.0.16, est disponible sur les sites
miroirs de Sunsite. L'exécutable au format ELF peut être trouvé sur
<a href=
"http://sunsite.unc.edu/pub/Linux/apps/database/sql/msql-1.0.16">Sunsite</a>,
ou sur CD-ROM (en l'occurrence le disque 4 de l'InfoMagic Linux
Developper's Resource, ensemble de 6 CD-ROM, décembre 1996), ou
chez <a href="http://www.infomagic.com">InfoMagic</a>. La version
la plus récente, 2.0.1, peut être obtenue directement de la page
Web d' <a href="http://www.hughes.com.au">Hughes</a>, en Australie,
ou sur de nombreux sites miroirs dans le monde ;</li>
<li>Perl du CPAM : The Comprehensive Perl Archive Network. Sur le
CD-ROM WalnutCreek, ISBN 1-57176-077-6, mai 1997 ;</li>
<li>L'exemple de programme CGI de Michael Schilli, dans le magazine
informatique iX d'août 1997, pages 150-152, disponible par <a href=
"ftp://ftp.uni-paderborn.de/doc/magazin/iX/">ftp</a>.</li>
</ul>
<h2><a name="ss3.3">3.3 Installation de l'OS</a></h2>
<p>Linux est installé à partir de la distribution Red Hat Linux
4.2. Pour réussir à l'installer, la machine doit avoir un lecteur
de CD-ROM accessible à partir de MSDOS, un lecteur de CD-ROM
bootable, ou bien encore une disquette de boot préparée selon les
instructions du CD Linux.</p>
<p>Pendant l'installation, l'utilisateur peut sélectionner et
configurer de nombreux paquetages logiciels. Il convient de
sélectionner les suivants :</p>
<ul>
<li>support du protocole TCP/IP</li>
<li>le serveur http Apache</li>
<li>le langage Perl</li>
<li>le système XWindow</li>
<li>les navigateurs Arena (graphique) et Lynx (mode texte).</li>
</ul>
<p>Tous ces paquetages sont fournis avec la distribution Linux. Si
vous ne les installez pas maintenant, vous pourrez le faire plus
tard en utilisant <code>glint</code>, le gestionnaire graphique de
paquetages logiciels. Assurez-vous d'être connecté comme
utilisateur <code>root</code> lorsque vous les installerez.</p>
<p>Il n'est pas du ressort de cet article de décrire l'installation
réseau, ni la procédure d'initialisation. Pour cela, consultez la
documentation en ligne (pages de manuel, HTML, texinfo) et imprimée
(Bible Linux, etc.).</p>
<p>La procédure d'installation de Red Hat est très au point et
nécessite peu d'interaction de la part de l'utilisateur, en dehors
des choix courants (les noms de machines, par exemple). Une fois
l'installation terminée, le système est prêt à tourner.</p>
<p>L'installation de XWindow n'est pas obligatoire pour le serveur,
mais cela rend les accès locaux et les tests plus faciles. La
procédure d'installation de XWindow peut être conduite par
différents programmes ; XF86Setup offre le plus de facilité
d'auto-test, et demande peu de connaissance des menus détails (la
programmation de l'horloge vidéo, etc.). La seule contrainte est
que le logiciel puisse détecter l'adaptateur vidéo. Des cartes
graphiques accélératrices bon marché (comme les cartes basées sur
le chip Trio S64, avant le S64UV+) fonctionnent sans aucun
problème.</p>
<p>A partir de maintenant, nous supposons que le système tourne, et
que Apache, Perl et XWindow ont été installés avec succès. Nous
supposons de même que les fichiers et structure de répertoires sont
tels que définis dans l'installation. Enfin, nous laissons le nom
de la machine tel quel, et pour le moment, supposons que c'est
<code>localhost</code>. Nous utiliserons ce nom pour tous les tests
d'installation ; dès que le système fonctionnera, le véritable nom
pourra être ajouté. Notez que l'installation réseau suppose
d'éditer le fichier <code>/etc/hosts</code>, entre autres. Cela
peut être pris en charge par les outils d'administration fournis à
l'utilisateur root.</p>
<h2><a name="ss3.4">3.4 Le serveur HTTP</a></h2>
<p>Le serveur HTTP fourni avec Linux est Apache, <code>httpd</code>
pour le système. La page de manuel (<code>man httpd</code>)
explique comment installer et démarrer le démon http (donc
http<em>d</em>) mais, comme il a été indiqué plus haut, si
l'installation s'est bien passée, le serveur HTTP doit tourner.
Vérifiez l'arborescence des répertoires : le répertoire
<code>/home/httpd</code> doit exister, avec trois sous-répertoires
: <code>../cgi-bin/</code>, <code>../html/</code> and
<code>../icons/</code>. Dans <code>../html/</code>, vous devez
trouver un fichier <code>index.html</code>. Plus tard, nous
modifierons ou remplacerons ce fichier par notre propre
<code>index.html</code>. Toute la configuration se fait dans le
fichier <code>/etc/httpd/conf/</code>. Le système est correctement
préconfiguré et ne doit pas être modifié, si l'installation s'est
faite sans problème.</p>
<h2><a name="ss3.5">3.5 Les navigateurs</a></h2>
<p>Il existe trois types de navigateurs disponibles sous Linux :
les logiciels purement textuels, comme Lynx, des logiciels simples
et expérimentaux comme Arena (gratuit) et des logiciels
commerciaux, comme Netscape (partagiciel !) avec support de Java
intégré. Alors que Lynx et Arena sont fournis avec Linux, Netscape
doit être récupéré par d'autres sources. Netscape est disponible
sous forme de fichier binaire précompilé pour Linux sur
architecture ix86 et tourne "tel quel" une fois l'archive
décompressée.</p>
<h3>Configuration de Lynx</h3>
<p>Une fois Lynx démarré, il cherche une 'URL par défaut' qui
n'existe pas toujours si le système n'a pas d'accès Internet
permanent. Pour changer cette URL par défaut (ainsi que d'autres
détails de configuration), l'administrateur doit éditer le fichier
<code>/usr/lib/lynx.cfg</code>. Ce fichier est gros, environ 57000
octets, et contient des informations quelquefois contradictoires.
Il établit son propre répertoire dans <code>/usr/local/lib</code>.
Au début du fichier figure une ligne commençant par
<code>STARTFILE</code>. Remplacez cette ligne par la suivante :
<code>STARTFILE:http://localhost</code>, en vous assurant qu'il n'y
a pas d'espace en trop :</p>
<hr>
<pre>
# STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
STARTFILE:http://localhost
</pre>
<hr>
<p>Après avoir enregistré le fichier, Lynx doit maintenant ouvrir
notre <code>index.html</code> s'il est lancé sans argument.</p>
<h3>Configuration d'Arena</h3>
<p>S'il est lancé sans argument, Arena recherche son URL par
défaut. Cette URL est codée en dur dans l'exécutable, mais peut
être redéfinie en utilisant la variable d'environnement
<code>WWW_HOME</code>. L'administrateur système peut placer la
ligne suivante dans le fichier <code>/etc/profile</code> :
<code>WWW_HOME="http://localhost"</code>. Cette variable doit être
exportée, soit par l'ajout de la ligne adéquate (<code>export
WWW_HOME</code>), soit en ajoutant <code>WWW_HOME</code> à la ligne
d'export courante :</p>
<hr>
<pre>
WWW_HOME="http://localhost"
export WWW_HOME
</pre>
<hr>
<p>A la prochaine connexion, la nouvelle URL par défaut d'Arena
sera connue du système.</p>
<h3>Installation et Configuration de Netscape</h3>
<p>Netscape était un produit commercial, et n'est donc pas inclus
dans les anciennes distributions Linux. Néanmoins, il est
téléchargeable par Internet, ou accessible à partir de certaines
compilations de logiciels sur CD-ROM. Netscape est fourni sous la
forme de fichiers binaires précompilés pour les plates-formes les
plus courantes. Avant de l'installer, il est utile de créer le
répertoire <code>/usr/local/Netscape</code>, dans lequel l'archive
sera décompactée. Tous les fichiers doivent rester à cette place
(sauf la bibliothèque Java : suivez les instructions du fichier
<code>README</code> fourni avec les binaires de Netscape), et il
suffira de créer un lien symbolique avec
<code>/usr/local/bin</code> par la commande :</p>
<pre>
# ln -s /usr/local/Netscape/netscape .
</pre>
<p>depuis le répertoire <code>/usr/local/bin/.</code></p>
<p>Netscape est maintenant pret à être utilisé, et peut être
configuré par le menu "Options". Dans "General Preferences", il y a
un onglet intitulé "Appearance", avec un champ de saisie "Home Page
Location". Tapez <code>http://localhost</code>, et n'oubliez pas de
sauvegarder les options (par le menu "Options" -- "Save Options")
avant de quitter Netscape. Au prochain démarrage, Netscape
présentera la page d'accueil d'Apache.</p>
<h2><a name="ss3.6">3.6 Les navigateurs avec Apache</a></h2>
<p>Faites maintenant le premier test d'Apache avec un navigateur :
lancez simplement l'un des navigateurs disponibles, et il affichera
la page d'accueil <code>Apache : Red Hat Linux Web Server</code>.
Cette page indique la localisation des fichiers et d'autres
informations concernant l'installation du serveur http. Si cette
page ne s'affiche pas, vérifiez que les fichiers cités plus haut
sont bien en place et que la configuration du navigateur est
correcte. Fermez les fichiers de configuration avant de démarrer de
nouveau le navigateur. Si tous les fichiers sont installés et que
le navigateur semble correctement configuré, examinez la
configuration du réseau. Ou bien le nom de votre machine est
différent de celui spécifié lors de la configuration, ou bien la
configuration réseau n'est pas correcte. Il est particulièrement
important que <code>/etc/hosts</code> contienne au moins la ligne
suivante :</p>
<hr>
<pre>
127.0.0.1                     localhost localhost.localdomain
</pre>
<hr>
<p>qui suppose que vous pouvez vous connecter localement. Vous
pouvez le vérifier en lançant une commande réseau qui réclame un
nom de machine comme argument, comme <code>telnet localhost</code>
(en supposant que <code>telnet</code> soit installé). Si cela ne
fonctionne pas, la configuration réseau doit être controlée avant
de continuer l'intallation.</p>
<h2><a name="ss3.7">3.7 La Base de données et son
installation</a></h2>
<p>L'installation de la base de données demande à peine plus de
préparation que les étapes précédentes. Il y a quelques moteurs de
base de données SQL disponibles, avec des contraintes
d'administration et d'exécution différentes ; l'un des plus simples
est msql, dit aussi "Mini-SQL", écrit par David Hughes. Msql est un
"partagiciel". En fonction de la version utilisée, les sites
commerciaux sont redevables de 250 US$, voire plus, les
utilisateurs privés d'au moins 65 US$, et seules les institutions
scolaires et les entreprises à but non lucratif peuvent utiliser ce
logiciel librement. Les termes exacts des droits figurent dans la
documentation de la base de données. Les éléments données ici ne
sont qu'indicatifs.</p>
<p>Tout d'abord, voici en quelques mots pourquoi l'auteur a choisi
msql. Il y a tout d'abord une expérience personnelle. Alors qu'il
cherchait une base de données, l'auteur a trouvé que msql était la
plus facile à installer et à maintenir, et qu'elle couvrait un
ensemble suffisamment large du langage SQL pour convenir à une
utilisation classique. C'est seulement en écrivant ces lignes que
l'auteur a découvert cette éloge dans la DBI FAQ d'Alligator
Descartes (la FAQ interface perl aux bases de données) :</p>
<blockquote><code>Du point de vue de l'auteur, si le volume de
données est relativement faible, les tables contenant moins d'1
million de lignes, avec moins de 1000 tables dans une base donnée,
alors msql constitue une solution parfaitement acceptable. Cette
base de données est très bon marché, extraordinairement solide, et
offre un excellent support, ...</code></blockquote>
<p>Mqsl est disponible en deux versions, msql-1.0.16 et msql-2.0.1,
qui diffèrent par leurs performances (cela n'est sensible que sur
des petits projets) et les logiciels les accompagnant (la version
la plus récente dispose de plus d'outils, de son propre langage de
script, etc.). Nous décrirons les deux versions de msql, car leurs
installations se distinguent par quelques aspects.</p>
<h3>Installation de msql-1.0.16</h3>
<p>Msql est disponible sous forme de sources et de binaires
précompilés au format ELF. L'utilisation des binaires ELF rend
l'installation plus simple, car l'archive
<code>msql-1.0.16.ELF.tgz</code> contient une copie de
l'arborescence d'installation, pour que les répertoires soient
générés correctement lors du décompactage dans le répertoire
<code>/</code>.</p>
<p>Si vous décidez de compiler msql-1.0.16 vous-même, et que vous
voulez utiliser le paquetage MsqlPerl plutot que l'interface DBI
(voir plus loin une présentation détaillée des différence entre les
deux stratégies), alors attendez-vous à ce que MsqlPerl rapporte,
lors des tests d'installation, des erreurs dans msql. Dans ce cas,
une correction sera nécessaire, expliquée dans la documentation
MsqlPerl (fichier <code>patch.lost.tables</code>). En l'occurrence,
il faut inclure les trois lignes suivantes dans
<code>msqldb.c</code>, après la ligne 1400, contenant
<code>entry-&gt;def = NULL;</code> :</p>
<blockquote>
<pre><code>
*(entry-&gt;DB) = 0;
*entry-&gt;table) = 0;
entry-&gt;age = 0;
</code></pre></blockquote>
<p>Cette partie de code doit maintenant être la suivante :</p>
<hr>
<pre>
      freeTableDef(entry-&gt;def);
      safeFree(entry-&gt;rowBuf);
      safeFree(entry-&gt;keyBuf);
      entry-&gt;def = NULL;
      *(entry-&gt;DB) = 0;
      *entry-&gt;table) = 0;
      entry-&gt;age = 0;
</pre>
<hr>
<p>La compilation de msql comprend plusieurs étapes. Après avoir
décompacté l'archive contenant les sources, il faut créer un
répertoire destination. Cela se fait avec la commande suivante
:</p>
<pre>
# make target
</pre>
<p>Si tout se passe bien, le système répond avec</p>
<blockquote>
<pre><code>
Build of target directory for Linux-2.0.30-i486 complete
</code></pre></blockquote>
<p>Vous pouvez maintenant aller dans le répertoire que vous venez
de créer, et taper d'abord la commande</p>
<pre>
# ./setup
</pre>
<p>La séquence <code>./</code> est nécessaire pour s'assurer que la
commande <code>setup</code> exécutée est bien celle du répertoire
courant, et non une autre qui aurait le même nom. On va maintenant
vous poser quelques questions concernant le répertoire source, et
la localisation du répertoire d'installation. Une fois que ces
questions ont eu leur réponse, le système lance quelques tests pour
vérifier que les logiciels nécessaires (compilateurs, utilitaires
divers, etc.) sont présents, puis finalement répond</p>
<blockquote><code>Ready to build mSQL.</code>
<p><code>You may wish to check "common/site.h" although the
defaults should be fine. When you're ready, type "make all" to
build the software</code></p>
</blockquote>
<p>Il faut alors taper</p>
<pre>
# make all
</pre>
<p>Si tout fonctionne comme prévu, nous devons alors lire :</p>
<blockquote><code>make[2] : leaving directory
'/usr/local/Minerva/src/msql' &lt;-- [msql] done</code>
<p><code>Make of mSQL complete. You should now install mSQL using
make install</code></p>
<p><code>NOTE : mSQL cannot be used free of charge at commercial
sites. Please read the doc/License file to see what you have to
do.</code></p>
<p><code>make[1] : Leaving directory
'/usr/local/Minerva/src'</code></p>
</blockquote>
<p>Tous les binaires doivent être accessibles, par exemple en
créant des liens symboliques dans <code>/usr/local/bin/</code>.
Déplacez-vous dans ce répertoire et tapez la commande</p>
<blockquote><code># ln -s /usr/local/Minerva/bin/*
.</code></blockquote>
<p>après quoi les liens sont correctement construits.</p>
<h3>Test de msql-1</h3>
<p>Après l'installation, il est maintenant possible de tester le
fonctionnement de la base de données. Avant toutes choses, le
serveur doit être démarré. L'administrateur système, grâce aux
privilèges du compte utilisateur <code>root</code>, lance la
commande</p>
<pre>
# msqld &amp;
</pre>
<p>(n'oubliez pas d'ajouter le <code>&amp;</code>, sinon msql ne
tournerait pas en tâche de fond.), après quoi le message suivant
doit apparaître :</p>
<blockquote>
<pre><code>
mSql Server 1.0.16 starting ...

Warning : Couldn't open ACL file : No such file or directory
Without an ACL file global access is Read/Write
</code></pre></blockquote>
<p>Ce message indique que tout fonctionne correctement, à part la
configuration des droits d'accès. Pour le moment, il suffit de
démarrer le serveur msql à partir d'un shell, mais vous pourrez par
la suite vouloir le démarrer automatiquement au lancement du
système. Cette commande doit alors être ajoutée dans un des scripts
du répertoire <code>rc.d</code>. Seul l'administrateur système peut
lancer la première commande typique d'une base de données (création
de la première table) :</p>
<pre>
# msqladmimn create inventur
</pre>
msql répond alors <code>Database "inventur" created</code>. Comme
preuve supplémentaire, vous pouvez constater que le répertoire
<code>/usr/local/Minerva/msqldb/</code> contient maintenant le
répertoire <code>../inventur</code>, vide pour l'intant. Vous
pouvez manipuler la nouvelle base avec les outils d'administration,
qui sont décrits en détail dans la documentation msql.
<h3>Installation de msql-2.0.1</h3>
<p>Une nouvelle version, plus puissante, du serveur mSQL d'Hugues
est maintenant disponible. Son installation est un peu différente.
Installer msql-2 de zéro nécessite les étapes suivantes. Copiez
l'archive à l'endroit où vous souhaitez l'installer, par exemple
<code>/usr/local/msql-2/</code>, puis décompressez-la :</p>
<pre>
# tar xfvz msql-2.0.1.tar.gz
</pre>
<p>Positionnez vous à la racine de l'arborescence d'installation et
tapez</p>
<pre>
# make target
</pre>
<p>Placez vous dans le répertoire <code>targets</code> et vérifiez
le type de votre machine. Il devrait y avoir un nouveau
sous-répertoire <code>Linux-<em>(votre version)-votre
cpu)</em></code>. Allez dans ce répertoire et lancez l'utilitaire
de configuration qui s'y trouve :</p>
<pre>
# ./setup
</pre>
<p>Il y a aussi un fichier <code>site.mm</code> qui peut être
édité. Peut-être avez-vous déjà utilisé le répertoire
<code>/usr/local/Minerva/</code> et souhaitez-vous le conserver
intact ? Dans ce cas, changez la ligne <code>INST_DIR=...</code>
pour indiquer le répertoire destination qui vous convient. Sinon,
ne changez rien.</p>
<p>Maintenant, vous pouvez contruire la base de données :</p>
<pre>
# make
# make install
</pre>
<p>Si tout marche bien, vous verrez ce message :</p>
<blockquote>
<pre><code>
[...]

Installation of mSQL-2 complete.

*********
**  This is the commercial, production release of mSQL-2.0
**  Please see the README file in the top directory of the
**  distribution for license information.
*********
</code></pre></blockquote>
<p>Une fois que tout est installé correctement, vous devez vous
préoccuper de certains détails d'administration. C'est ici que les
différences avec msql-1 commencent. D'abord, un utilisateur
<code>msql</code> est créé, et est responsable de l'administration
de la base de données.</p>
<pre>
# adduser msql
</pre>
<p>Maintenant, vous devez changer les propriétaire et groupe de
tous les fichiers dans le répertoire de mSQL en tapant :</p>
<pre>
# cd /usr/local/Minerva
# chown -R msql:msql *
</pre>
<p>Enfin, vous pouvez créer les liens symboliques pour tous les
éxecutables de la base de données dans <code>/usr/local/bin/</code>
en lançant la commande :</p>
<pre>
# ln -s /usr/local/Minerva/bin/* .
</pre>
<h3>Test de msql-2</h3>
<p>Démarrez maintenant le serveur de la base en tapant la commande
<code>msql2d &amp;</code>, vous devriez obtenir cette réponse :</p>
<blockquote>
<pre><code>
Mini SQL Version 2.0.1
Copyright (c) 1993-4 David J. Hugues
Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
All rights reserved.

     Loading configuration from '/usr/local/Minerva/msql.conf'.
     Server process reconfigured to accept 214 connections.
     Server running as user 'msql'.
     Server mode is Read/Write.

Warning : no ACL file. Using global read/write access.
</code></pre></blockquote>
<p>Tout est parfait. La base est compilée et installée, et nous
pouvons maintenant continuer avec les modules perl puisqu'ils
demandent la présence d'un serveur de base de données opérationnel
pour les tests.</p>
<p>Au fait, ce moment est bien choisi pour imprimer la
documentation complète livrée avec msql-2.0.1 :</p>
<pre>
# gzip -d manual.ps
# lpr manual.ps
</pre>
<p>Nous pouvons maintenant poursuivre la mise en place des
interfaces, mais il est judicieux de laisser le nouveau serveur SQL
tourner: cela ne fera que faciliter les tests des bibliothèques
d'interface.</p>
<h2><a name="ss3.8">3.8 Les différentes Interfaces : DBI/mSQL,
MsqlPerl, et Lite</a></h2>
<p>Une phrase fréquemment citée dans le Camel Book (la
documentation de référence de perl) affirme qu'il y a toujours
plusieurs manières d'obtenir un résultat avec perl. Hélas, cela est
vrai aussi avec notre application. Il y a trois méthodes pour
accéder à une base de données msql par l'intermédiaire de CGI. Tout
d'abord, la question est de savoir s'il faut ou non utiliser perl.
Dans le premier cas (supposé dans ce document), il y a encore le
choix entre deux types complètement différents d'interface. Si nous
n'employons pas perl, il reste la solution d'employer le langage de
script propre à msql, appelé Lite, qui est relativement proche du
langage C, en plus simple.</p>
<h3>DBI et DBD-mSQL</h3>
<p>Au moment de la rédaction de ce document, c'est l'utilisation de
l'interface générique de base de données appelée DBI qui est
préférée. DBI a quelques avantages. Elle fournit un contrôle
d'accès standard à de nombreuses base de données commerciales, et
ce avec le même ensemble de commandes. La base de données en
fonctionnement sur un système donné est alors interrogée par une
interface qui masque efficacement les caractéristiques spécifiques
de cette base au programmeur. Ainsi, DBI fournit une passerelle
pratique pour travailler avec différentes bases de différents
auteurs. Avec un seul script, il est possible de communiquer avec
plusieurs bases de données différentes. Le lecteur interessé peut
consulter la DBI-FAQ pour plus de détails. Il y a cependant un
inconvénient : l'interface DBI est en cours de développement et
aligne les versions à une allure galopante (quelques fois avec
plusieurs mises à jour par mois). De même, les pilotes de bases de
données sont fréquemment mis à jour, et peuvent être basés sur des
versions spécifiques de l'interface de base de données. Les
utilisateurs faisant une première installation doivent se limiter
aux numéros de version donnés dans ce document, car d'autres
versions peuvent poser des problèmes de compilation et de test,
dont la résolution n'est pas une affaire de néophyte.</p>
<h3>MsqlPerl</h3>
<p>MsqlPerl est une bibliothèque permettant l'accès direct à msql à
partir de programmes écrits en perl. Elle n'utilise pas l'interface
DBI et est très compacte. Bien qu'elle fonctionne très bien avec
les deux versions de msql, son usage n'est pas conseillé par
rapport à l'interface DBI, qui tend à se généraliser. Néanmoins,
suivant le système, c'est une alternative intéressante, car la
bibliothèque est petite et facile à installer. Notamment, il y a
moins de dépendance par rapport aux numéros de version que celles
constatées entre DBI et les pilotes de base de données.</p>
<h3>Le langage de commande propre de msql : Lite</h3>
<p>Enfin, msql-2 fournit son propre langage de commande : Lite. Ce
langage est proche du C, assaini et complété avec quelques
fonctionnalités du type 'shell' (d'une certaine manière, c'est une
version spécialisée de perl). Lite est un langage simple et bien
documenté dans le manuel msql-2. Le paquetage msql-2 livre aussi en
exemple un application utilisant Lite.</p>
<p>Nous ne décrirons pas ici Lite, car il est trop spécifique de
msql-2 (et déjà documenté !), et parce que le lecteur est censé
avoir un certain intérêt pour perl, et en avoir de bonnes notions.
Néanmoins, il est recommandé d'y jeter un coup d'oeil : il peut
s'avérer la solution idéale dans un environnement ne mettant en
oeuvre que msql-2 (en supposant donc qu'aucune autre base n'est
utilisée), grâce à sa simplicité.</p>
<h2><a name="ss3.9">3.9 La solution standard : DBI et
DBD-msql</a></h2>
<p>Nous supposons que perl a été installé pendant la configuration
du système, ou en utilisant le gestionnaire de paquetage mentionné
plus haut. Aucun détail supplémentaire ne sera donné ici.
Néanmoins, nous allons d'abord tester si notre version de perl est
récente :</p>
<pre>
# perl -v
</pre>
<p>perl doit répondre avec le message suivant :</p>
<blockquote>
<pre><code>
This is perl, version 5.003 with EMBED
        Locally applied patches:
          SUIDBUF - Buffer overflow fixes for suidperl security

        built under linux at Apr 22 1997 10:04:46
        + two suidperl security patches

Copyright 1987-1996, Larry Wall
[...]
</code></pre></blockquote>
<p>Jusque là, tout va bien. L'étape suivante consiste à installer
les bibliothèques générales perl pour les bases de données (DBI),
le pilote msql (DBD-mSQL) et CGI. Le pilote CGI est nécessaire dans
tous les cas. Les archives suivantes sont utilisées :</p>
<ol>
<li>DBI-0.8.1.tar.gz</li>
<li>DBD-mSQL-0.65.tar.gz</li>
<li>CGI.pm-2.31.tar.gz (ou plus récent&gt;</li>
</ol>
<p>Une précision est nécessaire ici pour les débutants : le test
décrit ici fonctionne très bien à condition d'utiliser
<em>exactement</em> les versions recommandées de logiciels ; des
combinaisons d'autres versions peuvent échouer à un moment ou à un
autre. Le déboguage de combinaisons de versions incompatibles est
une affaire de spécialistes des interfaces d'appel. Quelquefois,
seule une méthode change de nom alors qu'elle fait la même chose,
mais d'autres fois, les structures internes changent de manière
significative. Donc, encore une fois, tenez-vous en aux numéros
indiqués de versions si vous ne voulez pas de problème, et ce même
si vous constatez que les versions ont encore changé dans
l'intervalle. Il est normal de voir les versions évoluer
rapidement, et vous devez vous attendre à des problèmes en
installant d'autres versions que celles conseillées ici.</p>
<p>Il est très important que le pilote de base pour mSQL (DBD-mSQL)
soit installé <em>après</em> l'interface générique DBI.</p>
<p>Nous commençons par créer le répertoire
<em>/usr/local/PerlModules</em> car il est important de conserver
l'arborescence initiale de perl intacte. Nous pourrions aussi
choisir un autre nom de répertoire ; cela n'a strictement aucune
importance, malheureusement aucune recommandation n'est faite dans
les fichiers README des différents modules perl. Une fois recopiées
les archives précédemment citées dans
<code>/usr/local/PerlModules</code>, nous les décompactons en
tapant</p>
<blockquote>
<pre><code>
# tar zxvf [archive-file]
</code></pre></blockquote>
<p>pour chacune des trois archives. N'oubliez pas d'indiquer le
vrai nom de l'archive à la commande <code>tar</code>. Le processus
d'installation de ces trois archives est très standard ; seuls les
messages de sortie concernant les étapes les plus importantes sont
reproduits ici.</p>
<h3>Installation de l'interface perl de base de données DBI</h3>
<p>L'interface de la base de données doit avoir été installée avant
le pilote spécifique à la base. Le décompactage de l'archive DBI
crée le répertoire <code>/usr/local/PerlModules/DBI-0.81/</code>.
Placez-vous dans ce répertoire. Il y a un fichier
<code>README</code> (que vous devriez lire) et un makefile
spécifique pour perl. Maintenant, tapez la commande</p>
<pre>
# perl Makefile.PL
</pre>
<p>Le système doit répondre avec un long message dont la partie la
plus importante figure ci-dessous :</p>
<blockquote>
<pre><code>
[...]
MakeMake (v5.34)
Checking if your kit is complete ...
Looks good
     NAME =&gt; q[DBI]
     PREREQ_PM =&gt; { }
     VERSION_FROM =&gt; q[DBI.pm]
     clean =&gt; { FILES=&gt;q[$(DISTVNAME) /] }
     dist =&gt; { DIST_DEFAULT=&gt;q[clean distneck disttest [...]
Using PERL=/usr/bin/perl

WARNING! By default new modules are installed into your 'site_lib' directories. Since site_lib directories 
come after the normal library directories you MUST delete old DBI files and directories from your 'privlib' 
and 'archlib' directories and their subdirectories.

Writing Makefile for DBI
</code></pre></blockquote>
<p>Comme le programme l'indique, tout va bien, et nous pouvons
poursuivre avec l'étape suivante :</p>
<pre>
# make
</pre>
<p>Si aucun message d'erreur n'apparaît (les traces détaillées
affichées sur l'écran <em>ne</em> sont <em>pas</em> un message
d'erreur), nous pouvons tester la librairie nouvellement installée
avec la commande</p>
<pre>
# make test
</pre>
<p>Sur l'affichage, guettez les lignes suivantes (vous pouvez
toujours revenir en arrière avec la touche
<code>[Shift]-[PgUp]</code>) :</p>
<blockquote>
<pre><code>
[...]
t/basics............ok
t/dbidrv............ok
t/examp.............ok
All tests successful.
[...]
DBI test application $Revision: 1.20 $
Switch: DBI-0.81 Switch by Tim Bunce, 0.81
Available Drivers: ExampleP, NullP, Sponge
ExampleP: testing 2 sets of 5 connections:
Connecting... 1 2 3 4 5
Disconnecting...
Connecting... 1 2 3 4 5
Disconnecting...
Made 10 connections in 0 seconds ( 0.00 usr  0.00 sys = 0.00 cpu)

test.pl done
</code></pre></blockquote>
<p>La dernière étape est l'installation de tous les fichiers dans
leurs répertoires respectifs. La commande suivante s'en occupe
:</p>
<pre>
# make install
</pre>
<p>Il n'y a plus rien à faire. Si pour quelque raison que se soit,
l'installation échoue et que vous vouliez la recommencer, n'oubliez
pas de taper d'abord la commande</p>
<pre>
# make realclean
</pre>
<p>Cela supprimera toutes les traces laissées par la précédente
installation. Vous pouvez aussi supprimer les fichiers installés en
copiant le contenu de l'écran (montré ici abrégé)</p>
<blockquote>
<pre><code>
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
[...]
Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.po
</code></pre></blockquote>
<p>dans un fichier, en remplaçant <code>Installing</code> par
<code>rm</code>. Si vous avez appellé ce fichier
<code>uninstall</code> vous pouvez alors taper</p>
<pre>
# . uninstall
</pre>
<p>ce qui effacera les derniers fichiers installés.</p>
<h3>Le pilote msql de perl : DBD-mSQL</h3>
<p>Le pilote msql pourra être installé seulement
<em>après</em>l'installation réussie de l'interface perl générique
de base de données.</p>
<p>Les étapes de l'installation sont pratiquement les mêmes que les
précédentes, donc commencez par taper</p>
<pre>
# perl Makefile.PL
</pre>
<p>Là, le système doit répondre avec un avertissement vous
demandant de lire la documentation accompagnant le logiciel.
Ensuite, il va détecter où se trouve msql, et vous demande quelle
version vous utilisez :</p>
<blockquote>
<pre><code>
$MSQL_HOME not defined. Searching for mSQL...
Using mSQL in /usr/local/Hughes

-&gt; Which version of mSQL are you using [1/2]?
</code></pre></blockquote>
<p>Entrez la version correcte. Quelques lignes de texte suivent.
Guettez les suivantes :</p>
<blockquote>
<pre><code>
Splendid! Your mSQL daemon is running. We can auto-detect your configuration.

I've auto-detected your configuration to be running on port: 1114
</code></pre></blockquote>
<p>Vous pouvez maintenant tester le pilote en tapant</p>
<pre>
# make test
</pre>
<p>Encore une fois, plusieurs lignes sont affichées. Si elles se
terminent par</p>
<blockquote>
<pre><code>
Testing: $cursor-&gt;func( '_ListSelectedFields' )/ This will fail.
     ok: not a SELECT in msqlListSelectedFields!
Re-testing: $dbh-&gt;do( 'DROP TABLE testaa' )
     ok
*** Testing of DBD::mSQL complete! You appear to be normal! ***
</code></pre></blockquote>
<p>tout va bien, et vous pouvez lancer l'installation du pilote en
tapant</p>
<pre>
# make install
</pre>
<p>Vous êtes prêt à continuer et pouvez sauter le paragraphe
suivant.</p>
<h2><a name="ss3.10">3.10 L'interface MsqlPerl</a></h2>
<p>Si vous décidez d'utiliser l'interface globale MsqlPerl, aucun
pilote particulier n'est nécessaire ; seule l'archive
<code>MsqlPerl-1.15.tar.gz</code> est utilisée, puisque, comme cela
a déjà été dit, MsqlPerl fournit une interface directe entre perl
et le serveur de base de données, sans utiliser l'interface DBI.
L'installation et le test sont très faciles.</p>
<p>Après avoir tapé <code>perl Makefile.PL</code>, l'utilitaire
make peut être activé. Vous devez d'abord indiquer où se trouve
mSQL. S'il est dans <code>/usr/local/Minerva/</code>, la réponse
par défaut peut être validée.</p>
<p>Ensuite, tapez <code>make test</code>. Avant cela, vous devez
vous assurer qu'il y a bien une base nommée <code>test</code> et
que vous avez les droits d'écriture et lecture dessus. Cela peut
être fait avec</p>
<pre>
# msqladmin create test
</pre>
<h2><a name="ss3.11">3.11 Bibliothèque CGI de perl</a></h2>
<p>L'installation de l'interface CGI de perl est la plus simple des
trois étapes. Lancez les commandes dans l'ordre donné, et voilà
:</p>
<pre>
# perl Makefile.PL
# make
# make install
</pre>
<p>Contrairement aux autres pilotes, cette interface n'a pas
d'option de test (<code># make test</code>), alors que les autres
modules <em>doivent</em> être testés dans tous les cas.</p>
<p>Un sous-répertoire avec les exemples CGI est créé. Vous pouvez
en copier le contenu vers <code>/home/httpd/cgi-bin/</code> et
utiliser un navigateur pour jouer avec les scripts.</p>
<h2><a name="ss3.12">3.12 Check-list de l'installation</a></h2>
<p>Nous avons effectué les étapes suivantes, dans cet ordre:</p>
<ol>
<li>Installation de Linux avec support réseau</li>
<li>Installation d'un serveur http, par exemple Apache</li>
<li>Installation d'un navigateur, par exemple Arena, Lynx ou
Netscape</li>
<li>Installation d'un serveur SQL, par exemple msql</li>
<li>Installation d'une interface perl SQL convenable</li>
<li>Installation des fichiers CGI</li>
</ol>
<p>A la fin, vous devez faire un peu de ménage. Toutes les
arborescences des sources msql et les modules perl peuvent être
détruites sans inconvénient (cependant, vous ne devriez pas
détruire les fichiers archives !) puisque les binaires et la
documentation sont maintenant dans des répertoires différents.</p>
<h2><a name="s4">4. Un exemple de Base de Données</a></h2>
<p>Après avoir terminé la procédure d'installation, nous pouvons
maintenant lancer l'application donnée en exemple. En fonction de
la version de msql installée et de l'interface perl utilisée, nous
devrons modifier un peu ce programme.</p>
<p>Tout d'abord, le fichier <code>index.html</code>, dans le
répertoire <code>/home/httpd/html/</code> doit être modifié pour
appeler l'application exemple. Nous pouvons mettre notre base (que
nous pouvons appeler <code>database.cgi</code> ou
<code>inventur.cgi</code>) dans
<code>/home/httpd/html/test</code>.</p>
<p>Nous ajoutons une ligne parmi les suivantes dans
<code>index.html</code> (à choisir, bien sûr, en fonction des choix
d'installation) :</p>
<hr>
<pre>
&lt;LI&gt;Test the &lt;A HREF="test/database.cgi"&gt;Database, DBI:DBD-mSQL style!&lt;/A&gt;
&lt;LI&gt;Test the &lt;A HREF="test/inventur.cgi"&gt;Database, MsqlPerl style!&lt;/A&gt;
</pre>
<hr>
<p>Vous ne devez en principe choisir qu'une seule des deux lignes
précédentes, mais vous pouvez, si vous avez installé les deux types
d'interface, laisser les deux lignes telles quelles. Vous pourrez
alors comparer les performances.</p>
<h2><a name="ss4.1">4.1 Adaptation de l'exemple de script pour
MsqlPerl</a></h2>
<p>Il est nécessaire d'indiquer, dans notre exemple de script,
qu'il faut utiliser l'interface MsqlPerl. La modification doit être
faite à plusieurs endroits. D'abord, au début du fichier, il faut
changer la clause <code>use</code> :</p>
<blockquote>
<pre><code>

# use DBI;                 # Generisches Datebank-Interface
use Msql;
</code></pre></blockquote>
<p>Ensuite, à la ligne 27, MsqlPerl n'exige pas la mention d'un
pilote particulier :</p>
<blockquote>
<pre><code>

# $dbh = DBI-&gt;connect($host, $database, '', $driver) ||
$dbh = Msql-&gt;connect($host, $database) ||
</code></pre></blockquote>
<p>A partir de la ligne 33 et pour tout le script, changez toutes
les occurrences de <code>do</code> par <code>query</code> :</p>
<blockquote>
<pre><code>

# $dbh-&gt;do("SELECT * FROM hw") || db_init($dbh);
$dbh-&gt;query("SELECT * FROM hw") || db_init($dbh);
</code></pre></blockquote>
<p>Enfin, dans le laius MsqlPerl, la ligne 207 peut être mise en
commentaire :</p>
<blockquote>
<pre><code>

# $sth-&gt;execute || msg("SQL Error: $sth-&gt;errstr);
</code></pre></blockquote>
<p>De plus, il peut être nécessaire de remplacer tout les appels
<code>errstr</code> tels que celui de la ligne précédente par
<code>errmsg</code>. Cela dépend de la version utilisée.</p>
<p>Après ces modifications, le script doit tourner
correctement.</p>
<h2><a name="ss4.2">4.2 Adaptation de l'exemple pour
msql-2</a></h2>
<p>La syntaxe SQL a subi des changements durant le développement de
msql-2. Le script original n'exécutera pas les instructions
d'initialisation de la table, aux lignes 45 -- 48. Le modificateur
<code>primary key</code> n'est plus compris par msql-2, et doit
être supprimé :</p>
<blockquote>
<pre><code>
  $dbh-&gt;do(&lt;&lt;EOT) || die $dbh-&gt;errstr;   # Neue Personen-Tabelle
      create table person (
# We do not need the 'primary key' modifier anymore in msql-2!
#           pn    int primary key,    # Personalnummer
            pn    int,                # Personalnummer
            name  char(80),           # Nachname, Vorname
            raum  int                 # Raumnummer
          )
EOT
  $dbh-&gt;do(&lt;&lt;EOT) || die $dbh-&gt;errstr;   # Neue Hardware-Tabelle
      create table hw (
# We do not need the 'primary key' modifier anymore in msql-2!
#           asset   int primary key,    # Inventurnummer
            asset   int,                # Inventurnummer
            name    char(80),           # Bezeichnung
            person  int                 # Besitzer
          )
EOT
</code></pre></blockquote>
<p>Malheureusement, ce script particulier acceptera maintenant les
enregistrements avec des numéros personnels identiques ; le
modificateur msql-1 <code>primary key</code> était justement là
pour éviter cela. La documentation msql2 indique comment utiliser
la clause <code>CREATE INDEX</code> pour créer des entrées
uniques.</p>
<h2><a name="s5">5. Conclusion</a></h2>
<p>Si vous avez installé msql-2 sur votre système, vous pouvez
regarder les exemples de programmes écrits avec Lite, le langage de
script de msql-2.</p>
<p>Chaque version de msql est livrée avec un minimum d'outils
d'administration, qui permettent à l'utilisateur de créer et
détruire des tables (<code>msqladmin</code>) et d'examiner la
structure de la base de données (<code>relshow</code>).</p>
<p>Msql deuxième génération (c'est-à-dire msql-2) possède quelques
utilitaires de plus : <code>msqlimport</code> et
<code>msqlexport</code>. Ils permettent d'insérer et d'extraire des
données de la base SQL, à partir de et vers des fichiers. Ces
utilitaires peuvent être utilisés pour, <em>en une seule
passe</em>, charger ou extraire de grandes quantités de données, et
cela sans que l'utilisateur ait à se soucier d'écrire <em>une
seule</em> ligne de perl, de SQL, ni même de n'importe quoi.</p>
<p>Si vous voulez écrire votre propre script perl de gestion de
base de données, vous trouverez suffisamment d'aide dans les
fichiers d'exemples, et dans la volumineuse documentation en ligne
qui est livrée avec le module DBI.</p>
<p>Dans tous les cas, vous êtes maintenant prêts à publier vos
données sur votre réseau, et même sur le Web.</p>
</body>
</html>