This file is indexed.

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

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
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Serveur Web de Base de Donn&eacute;es mSQL / perl
HOWTO</title>
</head>
<body>
<h1>Serveur Web de Base de Donn&eacute;es mSQL / perl HOWTO</h1>
<h2>par <a href="mailto:corff@zedat.fu-berlin.de">Oliver
Corff</a>,<br>
version fran&ccedil;aise <a href=
"mailto:Nicolas.Caillaud@mail.dotcom.fr">Nicolas Caillaud</a></h2>
v0.1, 17 September 1997
<hr>
<em>Ce Mini HOWTO, tr&egrave;s largement inspir&eacute; de
l'article de Michael Schilli <code>Gebunkert : Datenbankbedienung
mit Perl und CGI</code>, publi&eacute; dans le magazine
informatique allemand iX du mois d'aout 1997, explique comment
construire une base de donn&eacute;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&eacute;s</a></h2>
<p>Ce document devrait &ecirc;tre utile &agrave; ceux qui veulent
mettre en place un serveur de base de donn&eacute;es sur le Web,
mais qui ne savent pas quels logiciels sont n&eacute;cessaires, ni
comment les installer. Il fournit toutes les informations utiles
pour faire fonctionner une base de donn&eacute;es SQL sur un
serveur Web ; il <em>ne</em> rentre <em>pas</em> dans les
d&eacute;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 &eacute;tudier la programmation CGI et le
langage SQL.</p>
<p>Pour faire tourner un syst&egrave;me SQL sur une petite
&eacute;chelle (et non pas l'exemple classique du syst&egrave;me de
r&eacute;servation d'une importante compagnie a&eacute;rienne, ou
le syst&egrave;me de gestion de base de donn&eacute;es d'une
mission spatiale), il suffit d'avoir les logiciels d&eacute;crits
dans ce document, et la documentation les accompagnant. Le manuel
utilisateur de msql (la base de donn&eacute;es d&eacute;crite ici)
fournit suffisamment d'informations sur SQL pour vous permettre de
construire votre propre base.</p>
<p>Le lecteur doit savoir comment r&eacute;cup&eacute;rer des
fichiers par <code>ftp</code> s'il n'a pas les CD-ROM
ad&eacute;quats, et comment construire des ex&eacute;cutables
&agrave; partir des fichiers sources. En tout &eacute;tat de cause,
toutes les &eacute;tapes d&eacute;crites dans ce document ont
&eacute;t&eacute; test&eacute;es sur un syst&egrave;me r&eacute;el,
et devraient fonctionner sur le syst&egrave;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&eacute;es
contenant de gros volumes de donn&eacute;es, ou un sch&eacute;ma
relationnel compliqu&eacute; (comme, par exemple, une base lexicale
pour un langage parl&eacute;), doivent &ecirc;tre accessibles
&agrave; beaucoup d'utilisateurs &agrave; la fois. De m&ecirc;me,
il doit &ecirc;tre possible d'utiliser diverses plates-formes
mat&eacute;rielles et logicielles existantes pour construire le
syst&egrave;me final. Pour r&eacute;duire les co&ucirc;ts de mise
en oeuvre, une seule partie du syst&egrave;me a r&eacute;ellement
besoin de puissance : le serveur de la base de donn&eacute;es ; les
stations utilisateurs doivent seulement afficher des donn&eacute;es
et accepter des commandes utilisateurs, mais le traitement
proprement dit est fait sur une seule machine, justifiant ainsi le
terme "base de donn&eacute;es client - serveur". De plus,
l'interface utilisateur doit &ecirc;tre facile &agrave; configurer,
et requ&eacute;rir le moins de traitement possible sur le
client.</p>
<p>Les &eacute;l&eacute;ments suivants (protocoles, logiciels et
plus g&eacute;n&eacute;ralement concepts) sont utilis&eacute;s pour
construire un syst&egrave;me conforme &agrave; ces crit&egrave;res
:</p>
<dl>
<dt><b>Linux</b></dt>
<dd>
<p>est le syst&egrave;me d'exploitation. Il s'agit d'une
impl&eacute;mentation stable d'Unix, multi-utilisateurs,
multi-t&acirc;ches, avec support r&eacute;seau complet (TCP/IP
entre autres). A part le co&ucirc;t du support et de la
transmission, il est gratuit et livr&eacute; sous forme de
distributions, qui incluent g&eacute;n&eacute;ralement
l'indispensable, du Syst&egrave;me d'Exploitation lui-m&ecirc;me au
traitement de texte, outils de d&eacute;veloppement logiciel,
langage de script, g&eacute;n&eacute;rateurs d'interfaces, etc.</p>
</dd>
<dt><b>HTML</b></dt>
<dd>
<p>Le langage HTML (HyperText Markup Language) est utilis&eacute;
pour construire des interfaces de syst&egrave;mes r&eacute;seaux
comme des Intranets, des serveurs Web (WWW). HTML est
extr&ecirc;mement simple et peut &ecirc;tre
g&eacute;n&eacute;r&eacute; &agrave; partir de n'importe quel
&eacute;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&eacute;es &agrave; la lecture et &agrave; l'affichage
de documents HTML. C'est le seul logiciel directement
manipul&eacute; par l'utilisateur de la base de donn&eacute;es.
Gr&acirc;ce aux navigateurs, on peut afficher diff&eacute;rents
types de donn&eacute;es (texte ou images), et communiquer avec des
serveurs HTTP (voir plus loin), h&eacute;berg&eacute;s par &agrave;
peu pr&egrave;s n'importe quel mod&egrave;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&egrave;s &agrave; une zone de
l'ordinateur contenant les donn&eacute;es publiques d'un
r&eacute;seau. Il supporte le protocole HTTP et fournit
l'information demand&eacute;e par l'utilisateur.</p>
</dd>
<dt><b>SQL</b></dt>
<dd>
<p>SQL (Structured Query Language) est un langage de manipulation
de donn&eacute;es dans une base relationnelle. Sa grammaire est
tr&egrave;s simple et constitue un standard largement
support&eacute; dans l'industrie. Les bases de donn&eacute;es SQL
sont au coeur m&ecirc;me du concept classique de base de
donn&eacute;es Client - Serveur. Des syst&egrave;mes SQL reconnus
existent, comme Oracle, Informix, etc. ; on trouve aussi des bases
comme msql, mysql, postgresql, pratiquement gratuites lorsqu'elles
sont utilis&eacute;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&egrave;me supportant les donn&eacute;es (dans notre
cas, le syst&egrave;me SQL) et le protocole r&eacute;seau (HTML,
bien s&ucirc;r). Les interfaces CGI peuvent &ecirc;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&egrave;rement puissant,
qui combine les avantages du C, des diff&eacute;rents shells, et
des langages de manipulations de flux comme awk ou sed. Par
exemple, perl poss&egrave;de de nombreux modules de manipulation de
base de donn&eacute;es SQL.</p>
</dd>
</dl>
<h2><a name="s3">3. Proc&eacute;dure d'installation</a></h2>
<h2><a name="ss3.1">3.1 Mat&eacute;riel requis</a></h2>
<p>Aucune supposition ne peut &ecirc;tre faite sur les besoins en
mat&eacute;riel d'un serveur de base de donn&eacute;es. Cela
d&eacute;pend trop du nombre d'utilisateurs, du type d'application,
de la charge du r&eacute;seau, etc. Dans un environnement
comprenant peu d'utilisateurs et un trafic r&eacute;seau faible, un
486 ou &eacute;quivalent, avec 16 MO de m&eacute;moire vive, peut
&ecirc;tre suffisant. Linux, le syst&egrave;me d'exploitation, est
tr&egrave;s efficace en termes de ressources, et peut fournir
suffisamment de puissance pour faire tourner un grand nombre
d'applications en m&ecirc;me temps. Bien s&ucirc;r, un processeur
plus puissant et plus de m&eacute;moire vive signifient plus de
puissance, mais la quantit&eacute; de m&eacute;moire vive est plus
importante que le processeur. Plus le syst&egrave;me a de
m&eacute;moire vive, moins il est oblig&eacute;, en cas de besoin,
de swapper les processus les plus gourmands en m&eacute;moire sur
le disque.</p>
<p>Avec un syst&egrave;me &eacute;quip&eacute; de 32 MO de
m&eacute;moire vive et d'un bus PCI, les recherches et
op&eacute;rations de tri peuvent &ecirc;tre faites sans avoir
recours au(x) fichier(s) d'&eacute;change (swap), donnant
d'excellents r&eacute;sultats.</p>
<p>L'installation d&eacute;crite dans cet article a
&eacute;t&eacute; faite sur un IBM 686 &agrave; 133MHz, avec 32 MO
de m&eacute;moire vive et un disque dur IDE de 1.2 GO. La suite du
document pr&eacute;sente les &eacute;tapes indispensables &agrave;
une installation compl&egrave;te.</p>
<h2><a name="ss3.2">3.2 Logiciel</a></h2>
<p>Les logiciels d&eacute;crits dans cet article sont disponibles
sur Internet, ou sur CD-ROM. Les produits suivants sont
utilis&eacute;s :</p>
<ul>
<li>Distribution Red Hat 4.2, parue pendant l'&eacute;t&eacute;
1997, disponible sur CD-ROM (Red Hat Linux PowerTools : 6 CD-ROM
complets et pr&ecirc;ts &agrave; &ecirc;tre utilis&eacute;s) ou sur
Internet, sur le site de <a href="http://www.redhat.com">RedHat</a>
;</li>
<li>Base de donn&eacute;es SQL msql : disponible en deux versions.
Les diff&eacute;rences entre ces deux versions r&eacute;sident dans
le nombre maximum de transactions support&eacute;, l'interface
d'administration, etc. La version la plus ancienne, 1.0.16, est
disponible sur les sites miroirs de Sunsite. L'ex&eacute;cutable au
format ELF peut &ecirc;tre trouv&eacute; 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&eacute;cembre 1996),
ou chez <a href="http://www.infomagic.com">InfoMagic</a>. La
version la plus r&eacute;cente, 2.0.1, peut &ecirc;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&ucirc;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&eacute; &agrave; partir de la distribution Red
Hat Linux 4.2. Pour r&eacute;ussir &agrave; l'installer, la machine
doit avoir un lecteur de CD-ROM accessible &agrave; partir de
MSDOS, un lecteur de CD-ROM bootable, ou bien encore une disquette
de boot pr&eacute;par&eacute;e selon les instructions du CD
Linux.</p>
<p>Pendant l'installation, l'utilisateur peut s&eacute;lectionner
et configurer de nombreux paquetages logiciels. Il convient de
s&eacute;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&egrave;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'&ecirc;tre connect&eacute;
comme utilisateur <code>root</code> lorsque vous les
installerez.</p>
<p>Il n'est pas du ressort de cet article de d&eacute;crire
l'installation r&eacute;seau, ni la proc&eacute;dure
d'initialisation. Pour cela, consultez la documentation en ligne
(pages de manuel, HTML, texinfo) et imprim&eacute;e (Bible Linux,
etc.).</p>
<p>La proc&eacute;dure d'installation de Red Hat est tr&egrave;s au
point et n&eacute;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&eacute;e, le
syst&egrave;me est pr&ecirc;t &agrave; tourner.</p>
<p>L'installation de XWindow n'est pas obligatoire pour le serveur,
mais cela rend les acc&egrave;s locaux et les tests plus faciles.
La proc&eacute;dure d'installation de XWindow peut &ecirc;tre
conduite par diff&eacute;rents programmes ; XF86Setup offre le plus
de facilit&eacute; d'auto-test, et demande peu de connaissance des
menus d&eacute;tails (la programmation de l'horloge vid&eacute;o,
etc.). La seule contrainte est que le logiciel puisse
d&eacute;tecter l'adaptateur vid&eacute;o. Des cartes graphiques
acc&eacute;l&eacute;ratrices bon march&eacute; (comme les cartes
bas&eacute;es sur le chip Trio S64, avant le S64UV+) fonctionnent
sans aucun probl&egrave;me.</p>
<p>A partir de maintenant, nous supposons que le syst&egrave;me
tourne, et que Apache, Perl et XWindow ont &eacute;t&eacute;
install&eacute;s avec succ&egrave;s. Nous supposons de m&ecirc;me
que les fichiers et structure de r&eacute;pertoires sont tels que
d&eacute;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&egrave;s que le syst&egrave;me fonctionnera, le
v&eacute;ritable nom pourra &ecirc;tre ajout&eacute;. Notez que
l'installation r&eacute;seau suppose d'&eacute;diter le fichier
<code>/etc/hosts</code>, entre autres. Cela peut &ecirc;tre pris en
charge par les outils d'administration fournis &agrave;
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&egrave;me. La page de manuel (<code>man httpd</code>)
explique comment installer et d&eacute;marrer le d&eacute;mon http
(donc http<em>d</em>) mais, comme il a &eacute;t&eacute;
indiqu&eacute; plus haut, si l'installation s'est bien
pass&eacute;e, le serveur HTTP doit tourner. V&eacute;rifiez
l'arborescence des r&eacute;pertoires : le r&eacute;pertoire
<code>/home/httpd</code> doit exister, avec trois
sous-r&eacute;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&egrave;me est correctement
pr&eacute;configur&eacute; et ne doit pas &ecirc;tre
modifi&eacute;, si l'installation s'est faite sans
probl&egrave;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&eacute;rimentaux comme Arena (gratuit) et des logiciels
commerciaux, comme Netscape (partagiciel !) avec support de Java
int&eacute;gr&eacute;. Alors que Lynx et Arena sont fournis avec
Linux, Netscape doit &ecirc;tre r&eacute;cup&eacute;r&eacute; par
d'autres sources. Netscape est disponible sous forme de fichier
binaire pr&eacute;compil&eacute; pour Linux sur architecture ix86
et tourne "tel quel" une fois l'archive
d&eacute;compress&eacute;e.</p>
<h3>Configuration de Lynx</h3>
<p>Une fois Lynx d&eacute;marr&eacute;, il cherche une 'URL par
d&eacute;faut' qui n'existe pas toujours si le syst&egrave;me n'a
pas d'acc&egrave;s Internet permanent. Pour changer cette URL par
d&eacute;faut (ainsi que d'autres d&eacute;tails de configuration),
l'administrateur doit &eacute;diter le fichier
<code>/usr/lib/lynx.cfg</code>. Ce fichier est gros, environ 57000
octets, et contient des informations quelquefois contradictoires.
Il &eacute;tablit son propre r&eacute;pertoire dans
<code>/usr/local/lib</code>. Au d&eacute;but du fichier figure une
ligne commen&ccedil;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&egrave;s avoir enregistr&eacute; le fichier, Lynx doit
maintenant ouvrir notre <code>index.html</code> s'il est
lanc&eacute; sans argument.</p>
<h3>Configuration d'Arena</h3>
<p>S'il est lanc&eacute; sans argument, Arena recherche son URL par
d&eacute;faut. Cette URL est cod&eacute;e en dur dans
l'ex&eacute;cutable, mais peut &ecirc;tre red&eacute;finie en
utilisant la variable d'environnement <code>WWW_HOME</code>.
L'administrateur syst&egrave;me peut placer la ligne suivante dans
le fichier <code>/etc/profile</code> :
<code>WWW_HOME="http://localhost"</code>. Cette variable doit
&ecirc;tre export&eacute;e, soit par l'ajout de la ligne
ad&eacute;quate (<code>export WWW_HOME</code>), soit en ajoutant
<code>WWW_HOME</code> &agrave; 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&eacute;faut
d'Arena sera connue du syst&egrave;me.</p>
<h3>Installation et Configuration de Netscape</h3>
<p>Netscape &eacute;tait un produit commercial, et n'est donc pas
inclus dans les anciennes distributions Linux. N&eacute;anmoins, il
est t&eacute;l&eacute;chargeable par Internet, ou accessible
&agrave; partir de certaines compilations de logiciels sur CD-ROM.
Netscape est fourni sous la forme de fichiers binaires
pr&eacute;compil&eacute;s pour les plates-formes les plus
courantes. Avant de l'installer, il est utile de cr&eacute;er le
r&eacute;pertoire <code>/usr/local/Netscape</code>, dans lequel
l'archive sera d&eacute;compact&eacute;e. Tous les fichiers doivent
rester &agrave; cette place (sauf la biblioth&egrave;que Java :
suivez les instructions du fichier <code>README</code> fourni avec
les binaires de Netscape), et il suffira de cr&eacute;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&eacute;pertoire <code>/usr/local/bin/.</code></p>
<p>Netscape est maintenant pret &agrave; &ecirc;tre utilis&eacute;,
et peut &ecirc;tre configur&eacute; par le menu "Options". Dans
"General Preferences", il y a un onglet intitul&eacute;
"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&eacute;marrage, Netscape pr&eacute;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&eacute;rifiez que les fichiers
cit&eacute;s plus haut sont bien en place et que la configuration
du navigateur est correcte. Fermez les fichiers de configuration
avant de d&eacute;marrer de nouveau le navigateur. Si tous les
fichiers sont install&eacute;s et que le navigateur semble
correctement configur&eacute;, examinez la configuration du
r&eacute;seau. Ou bien le nom de votre machine est diff&eacute;rent
de celui sp&eacute;cifi&eacute; lors de la configuration, ou bien
la configuration r&eacute;seau n'est pas correcte. Il est
particuli&egrave;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&eacute;rifier en lan&ccedil;ant une commande
r&eacute;seau qui r&eacute;clame un nom de machine comme argument,
comme <code>telnet localhost</code> (en supposant que
<code>telnet</code> soit install&eacute;). Si cela ne fonctionne
pas, la configuration r&eacute;seau doit &ecirc;tre
control&eacute;e avant de continuer l'intallation.</p>
<h2><a name="ss3.7">3.7 La Base de donn&eacute;es et son
installation</a></h2>
<p>L'installation de la base de donn&eacute;es demande &agrave;
peine plus de pr&eacute;paration que les &eacute;tapes
pr&eacute;c&eacute;dentes. Il y a quelques moteurs de base de
donn&eacute;es SQL disponibles, avec des contraintes
d'administration et d'ex&eacute;cution diff&eacute;rentes ; l'un
des plus simples est msql, dit aussi "Mini-SQL", &eacute;crit par
David Hughes. Msql est un "partagiciel". En fonction de la version
utilis&eacute;e, les sites commerciaux sont redevables de 250 US$,
voire plus, les utilisateurs priv&eacute;s d'au moins 65 US$, et
seules les institutions scolaires et les entreprises &agrave; but
non lucratif peuvent utiliser ce logiciel librement. Les termes
exacts des droits figurent dans la documentation de la base de
donn&eacute;es. Les &eacute;l&eacute;ments donn&eacute;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&eacute;rience personnelle. Alors
qu'il cherchait une base de donn&eacute;es, l'auteur a
trouv&eacute; que msql &eacute;tait la plus facile &agrave;
installer et &agrave; maintenir, et qu'elle couvrait un ensemble
suffisamment large du langage SQL pour convenir &agrave; une
utilisation classique. C'est seulement en &eacute;crivant ces
lignes que l'auteur a d&eacute;couvert cette &eacute;loge dans la
DBI FAQ d'Alligator Descartes (la FAQ interface perl aux bases de
donn&eacute;es) :</p>
<blockquote><code>Du point de vue de l'auteur, si le volume de
donn&eacute;es est relativement faible, les tables contenant moins
d'1 million de lignes, avec moins de 1000 tables dans une base
donn&eacute;e, alors msql constitue une solution parfaitement
acceptable. Cette base de donn&eacute;es est tr&egrave;s bon
march&eacute;, 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&egrave;rent par leurs performances (cela n'est sensible
que sur des petits projets) et les logiciels les accompagnant (la
version la plus r&eacute;cente dispose de plus d'outils, de son
propre langage de script, etc.). Nous d&eacute;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&eacute;compil&eacute;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&eacute;pertoires
soient g&eacute;n&eacute;r&eacute;s correctement lors du
d&eacute;compactage dans le r&eacute;pertoire <code>/</code>.</p>
<p>Si vous d&eacute;cidez de compiler msql-1.0.16 vous-m&ecirc;me,
et que vous voulez utiliser le paquetage MsqlPerl plutot que
l'interface DBI (voir plus loin une pr&eacute;sentation
d&eacute;taill&eacute;e des diff&eacute;rence entre les deux
strat&eacute;gies), alors attendez-vous &agrave; ce que MsqlPerl
rapporte, lors des tests d'installation, des erreurs dans msql.
Dans ce cas, une correction sera n&eacute;cessaire,
expliqu&eacute;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&egrave;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 &ecirc;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 &eacute;tapes.
Apr&egrave;s avoir d&eacute;compact&eacute; l'archive contenant les
sources, il faut cr&eacute;er un r&eacute;pertoire destination.
Cela se fait avec la commande suivante :</p>
<pre>
# make target
</pre>
<p>Si tout se passe bien, le syst&egrave;me r&eacute;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&eacute;pertoire que vous
venez de cr&eacute;er, et taper d'abord la commande</p>
<pre>
# ./setup
</pre>
<p>La s&eacute;quence <code>./</code> est n&eacute;cessaire pour
s'assurer que la commande <code>setup</code> ex&eacute;cut&eacute;e
est bien celle du r&eacute;pertoire courant, et non une autre qui
aurait le m&ecirc;me nom. On va maintenant vous poser quelques
questions concernant le r&eacute;pertoire source, et la
localisation du r&eacute;pertoire d'installation. Une fois que ces
questions ont eu leur r&eacute;ponse, le syst&egrave;me lance
quelques tests pour v&eacute;rifier que les logiciels
n&eacute;cessaires (compilateurs, utilitaires divers, etc.) sont
pr&eacute;sents, puis finalement r&eacute;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&eacute;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 &ecirc;tre accessibles, par exemple en
cr&eacute;ant des liens symboliques dans
<code>/usr/local/bin/</code>. D&eacute;placez-vous dans ce
r&eacute;pertoire et tapez la commande</p>
<blockquote><code># ln -s /usr/local/Minerva/bin/*
.</code></blockquote>
<p>apr&egrave;s quoi les liens sont correctement construits.</p>
<h3>Test de msql-1</h3>
<p>Apr&egrave;s l'installation, il est maintenant possible de
tester le fonctionnement de la base de donn&eacute;es. Avant toutes
choses, le serveur doit &ecirc;tre d&eacute;marr&eacute;.
L'administrateur syst&egrave;me, gr&acirc;ce aux privil&egrave;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&acirc;che de fond.), apr&egrave;s quoi le
message suivant doit appara&icirc;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, &agrave;
part la configuration des droits d'acc&egrave;s. Pour le moment, il
suffit de d&eacute;marrer le serveur msql &agrave; partir d'un
shell, mais vous pourrez par la suite vouloir le d&eacute;marrer
automatiquement au lancement du syst&egrave;me. Cette commande doit
alors &ecirc;tre ajout&eacute;e dans un des scripts du
r&eacute;pertoire <code>rc.d</code>. Seul l'administrateur
syst&egrave;me peut lancer la premi&egrave;re commande typique
d'une base de donn&eacute;es (cr&eacute;ation de la premi&egrave;re
table) :</p>
<pre>
# msqladmimn create inventur
</pre>
msql r&eacute;pond alors <code>Database "inventur" created</code>.
Comme preuve suppl&eacute;mentaire, vous pouvez constater que le
r&eacute;pertoire <code>/usr/local/Minerva/msqldb/</code> contient
maintenant le r&eacute;pertoire <code>../inventur</code>, vide pour
l'intant. Vous pouvez manipuler la nouvelle base avec les outils
d'administration, qui sont d&eacute;crits en d&eacute;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&eacute;rente. Installer msql-2 de z&eacute;ro n&eacute;cessite
les &eacute;tapes suivantes. Copiez l'archive &agrave; l'endroit
o&ugrave; vous souhaitez l'installer, par exemple
<code>/usr/local/msql-2/</code>, puis d&eacute;compressez-la :</p>
<pre>
# tar xfvz msql-2.0.1.tar.gz
</pre>
<p>Positionnez vous &agrave; la racine de l'arborescence
d'installation et tapez</p>
<pre>
# make target
</pre>
<p>Placez vous dans le r&eacute;pertoire <code>targets</code> et
v&eacute;rifiez le type de votre machine. Il devrait y avoir un
nouveau sous-r&eacute;pertoire <code>Linux-<em>(votre
version)-votre cpu)</em></code>. Allez dans ce r&eacute;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 &ecirc;tre
&eacute;dit&eacute;. Peut-&ecirc;tre avez-vous d&eacute;j&agrave;
utilis&eacute; le r&eacute;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&eacute;pertoire destination qui vous convient.
Sinon, ne changez rien.</p>
<p>Maintenant, vous pouvez contruire la base de donn&eacute;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&eacute; correctement, vous devez
vous pr&eacute;occuper de certains d&eacute;tails d'administration.
C'est ici que les diff&eacute;rences avec msql-1 commencent.
D'abord, un utilisateur <code>msql</code> est cr&eacute;&eacute;,
et est responsable de l'administration de la base de
donn&eacute;es.</p>
<pre>
# adduser msql
</pre>
<p>Maintenant, vous devez changer les propri&eacute;taire et groupe
de tous les fichiers dans le r&eacute;pertoire de mSQL en tapant
:</p>
<pre>
# cd /usr/local/Minerva
# chown -R msql:msql *
</pre>
<p>Enfin, vous pouvez cr&eacute;er les liens symboliques pour tous
les &eacute;xecutables de la base de donn&eacute;es dans
<code>/usr/local/bin/</code> en lan&ccedil;ant la commande :</p>
<pre>
# ln -s /usr/local/Minerva/bin/* .
</pre>
<h3>Test de msql-2</h3>
<p>D&eacute;marrez maintenant le serveur de la base en tapant la
commande <code>msql2d &amp;</code>, vous devriez obtenir cette
r&eacute;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&eacute;e et
install&eacute;e, et nous pouvons maintenant continuer avec les
modules perl puisqu'ils demandent la pr&eacute;sence d'un serveur
de base de donn&eacute;es op&eacute;rationnel pour les tests.</p>
<p>Au fait, ce moment est bien choisi pour imprimer la
documentation compl&egrave;te livr&eacute;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&egrave;ques d'interface.</p>
<h2><a name="ss3.8">3.8 Les diff&eacute;rentes Interfaces :
DBI/mSQL, MsqlPerl, et Lite</a></h2>
<p>Une phrase fr&eacute;quemment cit&eacute;e dans le Camel Book
(la documentation de r&eacute;f&eacute;rence de perl) affirme qu'il
y a toujours plusieurs mani&egrave;res d'obtenir un r&eacute;sultat
avec perl. H&eacute;las, cela est vrai aussi avec notre
application. Il y a trois m&eacute;thodes pour acc&eacute;der
&agrave; une base de donn&eacute;es msql par l'interm&eacute;diaire
de CGI. Tout d'abord, la question est de savoir s'il faut ou non
utiliser perl. Dans le premier cas (suppos&eacute; dans ce
document), il y a encore le choix entre deux types
compl&egrave;tement diff&eacute;rents d'interface. Si nous
n'employons pas perl, il reste la solution d'employer le langage de
script propre &agrave; msql, appel&eacute; Lite, qui est
relativement proche du langage C, en plus simple.</p>
<h3>DBI et DBD-mSQL</h3>
<p>Au moment de la r&eacute;daction de ce document, c'est
l'utilisation de l'interface g&eacute;n&eacute;rique de base de
donn&eacute;es appel&eacute;e DBI qui est
pr&eacute;f&eacute;r&eacute;e. DBI a quelques avantages. Elle
fournit un contr&ocirc;le d'acc&egrave;s standard &agrave; de
nombreuses base de donn&eacute;es commerciales, et ce avec le
m&ecirc;me ensemble de commandes. La base de donn&eacute;es en
fonctionnement sur un syst&egrave;me donn&eacute; est alors
interrog&eacute;e par une interface qui masque efficacement les
caract&eacute;ristiques sp&eacute;cifiques de cette base au
programmeur. Ainsi, DBI fournit une passerelle pratique pour
travailler avec diff&eacute;rentes bases de diff&eacute;rents
auteurs. Avec un seul script, il est possible de communiquer avec
plusieurs bases de donn&eacute;es diff&eacute;rentes. Le lecteur
interess&eacute; peut consulter la DBI-FAQ pour plus de
d&eacute;tails. Il y a cependant un inconv&eacute;nient :
l'interface DBI est en cours de d&eacute;veloppement et aligne les
versions &agrave; une allure galopante (quelques fois avec
plusieurs mises &agrave; jour par mois). De m&ecirc;me, les pilotes
de bases de donn&eacute;es sont fr&eacute;quemment mis &agrave;
jour, et peuvent &ecirc;tre bas&eacute;s sur des versions
sp&eacute;cifiques de l'interface de base de donn&eacute;es. Les
utilisateurs faisant une premi&egrave;re installation doivent se
limiter aux num&eacute;ros de version donn&eacute;s dans ce
document, car d'autres versions peuvent poser des probl&egrave;mes
de compilation et de test, dont la r&eacute;solution n'est pas une
affaire de n&eacute;ophyte.</p>
<h3>MsqlPerl</h3>
<p>MsqlPerl est une biblioth&egrave;que permettant l'acc&egrave;s
direct &agrave; msql &agrave; partir de programmes &eacute;crits en
perl. Elle n'utilise pas l'interface DBI et est tr&egrave;s
compacte. Bien qu'elle fonctionne tr&egrave;s bien avec les deux
versions de msql, son usage n'est pas conseill&eacute; par rapport
&agrave; l'interface DBI, qui tend &agrave; se
g&eacute;n&eacute;raliser. N&eacute;anmoins, suivant le
syst&egrave;me, c'est une alternative int&eacute;ressante, car la
biblioth&egrave;que est petite et facile &agrave; installer.
Notamment, il y a moins de d&eacute;pendance par rapport aux
num&eacute;ros de version que celles constat&eacute;es entre DBI et
les pilotes de base de donn&eacute;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&eacute;t&eacute; avec
quelques fonctionnalit&eacute;s du type 'shell' (d'une certaine
mani&egrave;re, c'est une version sp&eacute;cialis&eacute;e de
perl). Lite est un langage simple et bien document&eacute; dans le
manuel msql-2. Le paquetage msql-2 livre aussi en exemple un
application utilisant Lite.</p>
<p>Nous ne d&eacute;crirons pas ici Lite, car il est trop
sp&eacute;cifique de msql-2 (et d&eacute;j&agrave; document&eacute;
!), et parce que le lecteur est cens&eacute; avoir un certain
int&eacute;r&ecirc;t pour perl, et en avoir de bonnes notions.
N&eacute;anmoins, il est recommand&eacute; d'y jeter un coup d'oeil
: il peut s'av&eacute;rer la solution id&eacute;ale dans un
environnement ne mettant en oeuvre que msql-2 (en supposant donc
qu'aucune autre base n'est utilis&eacute;e), gr&acirc;ce &agrave;
sa simplicit&eacute;.</p>
<h2><a name="ss3.9">3.9 La solution standard : DBI et
DBD-msql</a></h2>
<p>Nous supposons que perl a &eacute;t&eacute; install&eacute;
pendant la configuration du syst&egrave;me, ou en utilisant le
gestionnaire de paquetage mentionn&eacute; plus haut. Aucun
d&eacute;tail suppl&eacute;mentaire ne sera donn&eacute; ici.
N&eacute;anmoins, nous allons d'abord tester si notre version de
perl est r&eacute;cente :</p>
<pre>
# perl -v
</pre>
<p>perl doit r&eacute;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&agrave;, tout va bien. L'&eacute;tape suivante consiste
&agrave; installer les biblioth&egrave;ques g&eacute;n&eacute;rales
perl pour les bases de donn&eacute;es (DBI), le pilote msql
(DBD-mSQL) et CGI. Le pilote CGI est n&eacute;cessaire dans tous
les cas. Les archives suivantes sont utilis&eacute;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&eacute;cent&gt;</li>
</ol>
<p>Une pr&eacute;cision est n&eacute;cessaire ici pour les
d&eacute;butants : le test d&eacute;crit ici fonctionne tr&egrave;s
bien &agrave; condition d'utiliser <em>exactement</em> les versions
recommand&eacute;es de logiciels ; des combinaisons d'autres
versions peuvent &eacute;chouer &agrave; un moment ou &agrave; un
autre. Le d&eacute;boguage de combinaisons de versions
incompatibles est une affaire de sp&eacute;cialistes des interfaces
d'appel. Quelquefois, seule une m&eacute;thode change de nom alors
qu'elle fait la m&ecirc;me chose, mais d'autres fois, les
structures internes changent de mani&egrave;re significative. Donc,
encore une fois, tenez-vous en aux num&eacute;ros indiqu&eacute;s
de versions si vous ne voulez pas de probl&egrave;me, et ce
m&ecirc;me si vous constatez que les versions ont encore
chang&eacute; dans l'intervalle. Il est normal de voir les versions
&eacute;voluer rapidement, et vous devez vous attendre &agrave; des
probl&egrave;mes en installant d'autres versions que celles
conseill&eacute;es ici.</p>
<p>Il est tr&egrave;s important que le pilote de base pour mSQL
(DBD-mSQL) soit install&eacute; <em>apr&egrave;s</em> l'interface
g&eacute;n&eacute;rique DBI.</p>
<p>Nous commen&ccedil;ons par cr&eacute;er le r&eacute;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&eacute;pertoire ; cela n'a strictement
aucune importance, malheureusement aucune recommandation n'est
faite dans les fichiers README des diff&eacute;rents modules perl.
Une fois recopi&eacute;es les archives pr&eacute;c&eacute;demment
cit&eacute;es dans <code>/usr/local/PerlModules</code>, nous les
d&eacute;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 &agrave; la commande <code>tar</code>. Le
processus d'installation de ces trois archives est tr&egrave;s
standard ; seuls les messages de sortie concernant les
&eacute;tapes les plus importantes sont reproduits ici.</p>
<h3>Installation de l'interface perl de base de donn&eacute;es
DBI</h3>
<p>L'interface de la base de donn&eacute;es doit avoir
&eacute;t&eacute; install&eacute;e avant le pilote
sp&eacute;cifique &agrave; la base. Le d&eacute;compactage de
l'archive DBI cr&eacute;e le r&eacute;pertoire
<code>/usr/local/PerlModules/DBI-0.81/</code>. Placez-vous dans ce
r&eacute;pertoire. Il y a un fichier <code>README</code> (que vous
devriez lire) et un makefile sp&eacute;cifique pour perl.
Maintenant, tapez la commande</p>
<pre>
# perl Makefile.PL
</pre>
<p>Le syst&egrave;me doit r&eacute;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'&eacute;tape suivante :</p>
<pre>
# make
</pre>
<p>Si aucun message d'erreur n'appara&icirc;t (les traces
d&eacute;taill&eacute;es affich&eacute;es sur l'&eacute;cran
<em>ne</em> sont <em>pas</em> un message d'erreur), nous pouvons
tester la librairie nouvellement install&eacute;e avec la
commande</p>
<pre>
# make test
</pre>
<p>Sur l'affichage, guettez les lignes suivantes (vous pouvez
toujours revenir en arri&egrave;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&egrave;re &eacute;tape est l'installation de tous les
fichiers dans leurs r&eacute;pertoires respectifs. La commande
suivante s'en occupe :</p>
<pre>
# make install
</pre>
<p>Il n'y a plus rien &agrave; faire. Si pour quelque raison que se
soit, l'installation &eacute;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&eacute;es par la
pr&eacute;c&eacute;dente installation. Vous pouvez aussi supprimer
les fichiers install&eacute;s en copiant le contenu de
l'&eacute;cran (montr&eacute; ici abr&eacute;g&eacute;)</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&ccedil;ant <code>Installing</code>
par <code>rm</code>. Si vous avez appell&eacute; ce fichier
<code>uninstall</code> vous pouvez alors taper</p>
<pre>
# . uninstall
</pre>
<p>ce qui effacera les derniers fichiers install&eacute;s.</p>
<h3>Le pilote msql de perl : DBD-mSQL</h3>
<p>Le pilote msql pourra &ecirc;tre install&eacute; seulement
<em>apr&egrave;s</em>l'installation r&eacute;ussie de l'interface
perl g&eacute;n&eacute;rique de base de donn&eacute;es.</p>
<p>Les &eacute;tapes de l'installation sont pratiquement les
m&ecirc;mes que les pr&eacute;c&eacute;dentes, donc commencez par
taper</p>
<pre>
# perl Makefile.PL
</pre>
<p>L&agrave;, le syst&egrave;me doit r&eacute;pondre avec un
avertissement vous demandant de lire la documentation accompagnant
le logiciel. Ensuite, il va d&eacute;tecter o&ugrave; 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&eacute;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 &ecirc;tes pr&ecirc;t &agrave; continuer et pouvez sauter
le paragraphe suivant.</p>
<h2><a name="ss3.10">3.10 L'interface MsqlPerl</a></h2>
<p>Si vous d&eacute;cidez d'utiliser l'interface globale MsqlPerl,
aucun pilote particulier n'est n&eacute;cessaire ; seule l'archive
<code>MsqlPerl-1.15.tar.gz</code> est utilis&eacute;e, puisque,
comme cela a d&eacute;j&agrave; &eacute;t&eacute; dit, MsqlPerl
fournit une interface directe entre perl et le serveur de base de
donn&eacute;es, sans utiliser l'interface DBI. L'installation et le
test sont tr&egrave;s faciles.</p>
<p>Apr&egrave;s avoir tap&eacute; <code>perl Makefile.PL</code>,
l'utilitaire make peut &ecirc;tre activ&eacute;. Vous devez d'abord
indiquer o&ugrave; se trouve mSQL. S'il est dans
<code>/usr/local/Minerva/</code>, la r&eacute;ponse par
d&eacute;faut peut &ecirc;tre valid&eacute;e.</p>
<p>Ensuite, tapez <code>make test</code>. Avant cela, vous devez
vous assurer qu'il y a bien une base nomm&eacute;e
<code>test</code> et que vous avez les droits d'&eacute;criture et
lecture dessus. Cela peut &ecirc;tre fait avec</p>
<pre>
# msqladmin create test
</pre>
<h2><a name="ss3.11">3.11 Biblioth&egrave;que CGI de perl</a></h2>
<p>L'installation de l'interface CGI de perl est la plus simple des
trois &eacute;tapes. Lancez les commandes dans l'ordre
donn&eacute;, et voil&agrave; :</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> &ecirc;tre test&eacute;s dans tous les
cas.</p>
<p>Un sous-r&eacute;pertoire avec les exemples CGI est
cr&eacute;&eacute;. 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&eacute; les &eacute;tapes suivantes, dans cet
ordre:</p>
<ol>
<li>Installation de Linux avec support r&eacute;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&eacute;nage. Toutes les
arborescences des sources msql et les modules perl peuvent
&ecirc;tre d&eacute;truites sans inconv&eacute;nient (cependant,
vous ne devriez pas d&eacute;truire les fichiers archives !)
puisque les binaires et la documentation sont maintenant dans des
r&eacute;pertoires diff&eacute;rents.</p>
<h2><a name="s4">4. Un exemple de Base de Donn&eacute;es</a></h2>
<p>Apr&egrave;s avoir termin&eacute; la proc&eacute;dure
d'installation, nous pouvons maintenant lancer l'application
donn&eacute;e en exemple. En fonction de la version de msql
install&eacute;e et de l'interface perl utilis&eacute;e, nous
devrons modifier un peu ce programme.</p>
<p>Tout d'abord, le fichier <code>index.html</code>, dans le
r&eacute;pertoire <code>/home/httpd/html/</code> doit &ecirc;tre
modifi&eacute; 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> (&agrave; choisir, bien s&ucirc;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&eacute;c&eacute;dentes, mais vous pouvez, si vous avez
install&eacute; 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&eacute;cessaire d'indiquer, dans notre exemple de
script, qu'il faut utiliser l'interface MsqlPerl. La modification
doit &ecirc;tre faite &agrave; plusieurs endroits. D'abord, au
d&eacute;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, &agrave; 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 &ecirc;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 &ecirc;tre n&eacute;cessaire de remplacer tout
les appels <code>errstr</code> tels que celui de la ligne
pr&eacute;c&eacute;dente par <code>errmsg</code>. Cela
d&eacute;pend de la version utilis&eacute;e.</p>
<p>Apr&egrave;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&eacute;veloppement de msql-2. Le script original
n'ex&eacute;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 &ecirc;tre
supprim&eacute; :</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&eacute;ros personnels identiques ; le
modificateur msql-1 <code>primary key</code> &eacute;tait justement
l&agrave; pour &eacute;viter cela. La documentation msql2 indique
comment utiliser la clause <code>CREATE INDEX</code> pour
cr&eacute;er des entr&eacute;es uniques.</p>
<h2><a name="s5">5. Conclusion</a></h2>
<p>Si vous avez install&eacute; msql-2 sur votre syst&egrave;me,
vous pouvez regarder les exemples de programmes &eacute;crits avec
Lite, le langage de script de msql-2.</p>
<p>Chaque version de msql est livr&eacute;e avec un minimum
d'outils d'administration, qui permettent &agrave; l'utilisateur de
cr&eacute;er et d&eacute;truire des tables (<code>msqladmin</code>)
et d'examiner la structure de la base de donn&eacute;es
(<code>relshow</code>).</p>
<p>Msql deuxi&egrave;me g&eacute;n&eacute;ration
(c'est-&agrave;-dire msql-2) poss&egrave;de quelques utilitaires de
plus : <code>msqlimport</code> et <code>msqlexport</code>. Ils
permettent d'ins&eacute;rer et d'extraire des donn&eacute;es de la
base SQL, &agrave; partir de et vers des fichiers. Ces utilitaires
peuvent &ecirc;tre utilis&eacute;s pour, <em>en une seule
passe</em>, charger ou extraire de grandes quantit&eacute;s de
donn&eacute;es, et cela sans que l'utilisateur ait &agrave; se
soucier d'&eacute;crire <em>une seule</em> ligne de perl, de SQL,
ni m&ecirc;me de n'importe quoi.</p>
<p>Si vous voulez &eacute;crire votre propre script perl de gestion
de base de donn&eacute;es, vous trouverez suffisamment d'aide dans
les fichiers d'exemples, et dans la volumineuse documentation en
ligne qui est livr&eacute;e avec le module DBI.</p>
<p>Dans tous les cas, vous &ecirc;tes maintenant pr&ecirc;ts
&agrave; publier vos donn&eacute;es sur votre r&eacute;seau, et
m&ecirc;me sur le Web.</p>
</body>
</html>