  A mSQL and perl Web Server Mini HOWTO
  Oliver Corff, corff@zedat.fu-berlin.de
  v0.1, 17 September 1997
  ɍ  N, isaji@mxu.meshnet.or.jp

  mini-HOWTO̓[U[C^[tF[XƂWWWHTMLg SQL N
  CAg/T[o[ f[^x[X̍\z@ɂďĂ܂BhC
  cRs[^}KW(german computer magazine)iX 8/1997 ŏoł
  "Gebunkert: Datenbankbedienung mit Perl und CGI(PerlCGI gf
  [^oNT[rX)"ƂMichael Schilli̋LɐGĂ܂B
  ______________________________________________________________________

  ڎ

  1. ̃hLgɂ
     1.1 Ώۓǎ
     1.2 ̃eLXgŎg\

  2. Cg_NV
  3. CXg[ߒ
     3.1 Kvȃn[hEFA
     3.2 Kvȃ\tgEFA
     3.3 OS̃CXg[
     3.4 httpT[o
     3.5 uEU
        3.5.1 Lynx̐ݒ
        3.5.2 Arena̐ݒ
        3.5.3 NetscapẽCXg[Ɛݒ
     3.6 ApacheƃuEŰ͊֌W
     3.7 f[^x[XGWƃCXg[
        3.7.1 msql-1.0.16̃CXg[
        3.7.2 msql-1̃eXg
        3.7.3 msql-2.0.1̃CXg[
        3.7.4 msql-2̃eXg
     3.8 C^[tF[X̑IFDBI/mSQL, MsqlPerl, Lite
        3.8.1 DBI  DBD-mSQL
        3.8.2 MsqlPerl
        3.8.3 msql̃XNvgFLite
     3.9 ʓIȕ@FDBI  DBD-msql
        3.9.1 perlf[^x[XC^[tF[X DBI ̃CXg[
        3.9.2 perl  msql hCo DBD-mSQL
     3.10 MsqlPerlC^[tF[X
     3.11 perlCGICu
     3.12 `FbNXg̃CXg[

  4. eXgf[^x[X̎s
     4.1 MsqlPerlTvXNvg̒ǉ
     4.2 msql-2pTvXNvg̒ǉ

  5. ܂Ƃ߂ƍ̌ʂ

  ______________________________________________________________________

  1.  ̃hLgɂ

  1.1.  Ώۓǎ

  WebT[of[^x[XCXg[ǁAKvȃ\tgEFA
  Aǂ̂悤ɃCXg[΂悢̂킩ȂƂlɏ
  Ă܂B܂webT[ogSQLf[^x[X肷邽߂ɕKv
  ȏ񋟂Ă܂BCGIvO~O₻̏ڍׂɂĂ͏ڂ
  ׂĂ܂񂵁ASQLɂĂ͂Ă܂Bɂ
  ꂽǏŏoĂ܂B̃hLgł̓[U[
  CGIvO~OSQLwԂƂ̂ł񋟂܂B

  (qȗ\VXeFs}l[Wgf[^x[Xł
  Ȃ) XP[SQLVXeғ邱ƂɊւĂ͂̃eLX
  gɏꂽ\tgEFAŏ\łAhLg͂ɂď
  ܂B̃eLXgŏЉf[^x[Xmsql ̃[U[}jA
  ẽf[^x[X̍\z@ɂďڂ񋟂ĂĂ܂B

  CD-ROMgȂꍇ́AftpoRŃt@C肷邽߂̕@
  mĂ܂傤B܂\[XoCi肩Ă
  ĉBƂɂ̃eLXgŐĂ邱Ƃ͎ۉғĂVX
  eŃeXgAǎ҂̃VXeł삷̂Ǝv܂B

  1.2.  ̃eLXgŎg\

  [U[R}hF

          # make install

  vỎʏóF

       Program installed. Read README for details on how to start.

  t@C̃TvR[hF

  ______________________________________________________________________
  # My comment
  char letter;
  ______________________________________________________________________

  2.  Cg_NV

  cȃf[^(f[^x[XƂ)Gȃ[Viݒ̃f[
  ^x[X͑̃[UIy[^ɎĝłȂĂ͂Ȃ܂
  BzIɂ̓VXeIɐڑꂽ܂܂ȃn[h/\tgEFAg
  ̂łׂłBoߖ񂷂邽߂ɂЂƂ̃VXeAf[^x
  [XT[o̓ptȂ̂łKv܂B[U[Xe[V
  ʓIɃf[^̕\ƃR}h̎s܂B̓NCAg-T[
  of[^x[XɂP̃}Vōs܂BɃ[UC^[
  tF[X̊ǗeՂłł邾NCAgւ̕SȂ̂̕
  悢ł傤B

  ȏ̊(criteria)𖞂VXe͈ȉ̃vgRATOA\tg
  EFAACegč\zł܂B

     Linux
        Iy[eBOVXełB}`[UA}`^XNlbg
        [N(TCP/IP)Œ񋟂肵UNIXłBۂ̃fBAƒʐM
        RXgΑSĂt[łB{OSeLXgvZbTAX
        NvgA\tgJAC^[tF[Xr_[ȂǕKvȂ̑S
        Ă܂B

     HTML
        HTML̓C^[lbgAWWW(World Wide Web)Ƃlbg[NV
        XeC^[tF[X\z邽߂Hypertext Markup
        (Language)łB HTML͊ȒPASCIIeLXgGfB^ŕҏW邱
        ł܂B
     Browsers
        uEUɂ̓eLXgx[X(ႦLynx)邢̓OtBJ
        (Mosaic, Netscape, ArenaȂ)AvP[Vg
        BHTMLhLg̓ǂݍ݂ƕ\܂Bf[^x[X[U
        ɂĒڑ삳B̃\tgł܂BuEUg
        ƂŃeLXgAC[WƂ܂܂ȃf[^\ł܂B
        uEUg邳܂܂ȃRs[^ɑ΂httpT[oŒʐM
        邱Ƃł܂B

     http T[o
        http T[o̓lbg[NňʂɎgpf[^zXgR
        s[^ւ̃ANZX񋟂܂BhttpvgR𗝉A[
        Uvn܂B

     SQL
        Structured Query Language̗B֘Af[^x[X̃f[^𑀍삷
        錾łB@͊ȒPōLƓI(wide industry)ɂT|[g
        Ă܂BSQLɂf[^x[X͓T^IȃNCAg/T[
        o̍l̒S(core)ƂȂ̂łBSQLVXe
        BLȂ̂łOracle, InformixȂǂŁAቿî̂wp
        I/IȎgpړȈꍇ͖œł悤ɂȂ܂B
        (󒍁FSQL=f[^~(Query)鎞̍\Ƃ̎o
        Ă錾łBSQLW[{ł1987NJISKiƂȂ܂]ɂ
        DB̓AَDBMSƂ̌݊Ȃǂ̗_܂)

     CGI
        CGI(Common Gateway Interface)̓f[^~ĂVXe(
        SQL x[XƂVXeł)ƃlbg[NvgR
        (HTML)Ԃ̃vO~OC^[tF[XłBCGI͑̃v
        O~Oō\zł܂Ƃ悭gĂ̂perl
        B

     perl
        Perl͂߂ăptȃXNvgłBCAVFA
        Xg[쌾(sedAawkȂ)̒Ă܂BPerlɂ͑
        ̃WC^[tF[XASQLf[^x[XRg[
        邱Ƃł܂B

  3.  CXg[ߒ

  3.1.  Kvȃn[hEFA

  f[^x[XT[oŕKvȃn[hEFAɂĈʓIȂƂ͌܂
  B\z郆[U[̐AAvP[V̎ށAlbg[No
  H(network load)ɑ傫ˑĂ܂B 2`3l̃[U邾
  lbg[NgtBbNȂŏȊł RAM 16MBAi486x̃}
  Vŏ\łBLinux̓\[XɊւĂ͂ŏ\ŁAɂ܂
  ȃAvP[VN邾̔n͂܂BƑv
  ZbTRAM݂̑΂قǍ邱Ƃł܂Av
  ZbTRAM̗eʂ̕dvłB RAM𑝂₹Α₷قǁAQ
  ₷WIȃ[vZX̃fBXNXbvȂĂ
  ̂łB

  32 MB RAM  PCIoX΃Xbvt@CȂǂgȂŌƃ\[
  gɍsƂł܂B

  ̕ŏĂCXg[32 MB RAMA1.2 GB IDEn[hfBX
  N IBM 686(133Mhz) ōsĂ܂B͂߂CXg[̂
  ĈȉAKvȎ菇̃Xg܂B

  3.2.  Kvȃ\tgEFA

  ̕Ŏ舵\tgEFACD-ROMC^[lbgł
  ̂łBȉ̂̂g܂F

  o  Red Hat Linux PowerToolsFRed Hat Linux PowerToolsF6 CD's Complete
     Easy-to-Use Red Hat 4.2, Summer '97;http://www.redhat.com B

  o  msql SQLf[^x[XT[oF݂Q̃o[Ŵ̂ł
     B̃o[ẄႢ͏ł鐔AAh~jXg[VC
     ^[tF[ẌႢɈ˂Ă܂BẪo[W
     1.0.16ŁASunsite~[TCgł܂BELFt@C

     sunsite:apps/database/sql/msql-1.0.16

     CDROM(disc 4 of InfoMagic Linux Developer's Resource, 6-CD set,
     December 1996)A

     http://www.infomagic.com肵܂B

     Vo[W2.0.1łBI[XgAHughẽz[y[W
     (http://www.hughes.com.au)₻̑~[TCgł܂B

  o  CPANperlFThe Comprehensive Perl Archive Network.  Walnut Creek
     CDROM, ISBN 1-57176-077-6, May 1997;

  o  computer journal iX 8/1997, pages 150--152Michael Schilli ɂ
     CGITvvOBftpœ

     ftp.uni-paderborn.de:/doc/magazin/iXB

  3.3.  OS̃CXg[

  ҂Red Hat Linux Distribution 4.2LinuxCXg[Ă
  BƃCXg[邽߂ɁA}VDOSŃANZXłCDROMh
  Cu/ u[g\CDROMhCuALinux CD̈ȉ̐ݒ𐷂荞
  u[gfBXN̂ǂ炩ĂƂ悢ł傤B

  CXg[̓rŃ\tgEFApbP[W̑IƐݒs܂Bȉ
  ̃ACeIĂĉB

  o  TCP/IP lbg[NT|[g

  o  http T[o Apache

  o  XNvgperl

  o  X Window System

  o  Arena (OtBJ)Lynx (eLXgx[X)uEU

     ̃pbP[WLinuxfBXgr[VŔzzĂ܂B
     ɂ̃pbP[WCXg[ȂȂA\tgEFA
     pbP[WɂOtBJŒϓIȃCXg[}l[Wg
     ČォCXg[ł܂(󒍁FsetupR}hȂǂ)B
     pbP[WCXg[ۂrootōƂĉB

  ̕ł̓lbg[NCXg[⏉ݒ̎d͎舵܂B
  IChLg(many[WAHTMLAtexinfo)ołĂhL
  g((Linux BibleȂǂȂ)QƂĉB

  Red Hat̃CXg[@͏\mĂāAI(zXg̎w
  )𕁒ʂɍsłBCXg[΁AVXe͂ɉ
  ł܂B

  X Window System̃CXg[̓T[oɂ͕KKvł͂܂
  [JANZXeXgȒPɂȂ̂œĂƂ悢ł傤B X
  CXg[@͂vOgƂōs܂(XF86Setup 
  ȃeXg̋@\(self-testing facilities)𑕔ĂāAႦ΃rfI
  NbNvO~OȂǓ͂قƂǂ܂)BKvȂ
  ̓\tgEFArfIA_v^oł邩ǂƂƂłB
  ȃANZ[^OtBbNA_v^(S64UV+̑OgTrio S64̂悤
  ȃA_v^Ȃ)͒ʏAɉȂĂ(``out of the box'')삵
  B

  ŃVXeApache, Perl, X Window SystemłɃCXg[
  Ă̂Ƃ܂BAt@C/fBNgƂ{IȂƂ
  CXg[̂܂܂ƂĘbi߂Ă܂B܂zXg
  localhostƂ܂B̃zXgCXg[̃eXgpɎg܂B
  SVXeƓ삵KȖO܂B/etc/hostst@C
  ȂǂҏWKv邱ƂڂĂĉBzIɂ͂
  rootp̊Ǘ҃c[gčsׂłB

  3.4.  httpT[o

  LinuxŎghttpT[oApache(httpd)LłB many[W(man
  httpd)httpf[(httpd)̃CXg[Ɖғ̎dɂĐ
  ܂BȂCXg[łĂȂ炷łɃT[o͉ғ
  Ă܂BfBNgmF܂F/home/httpd/ȉR̃TufBN
  g../cgi-bin/A../html/A../icons/ ܂(󒍁FRedHatȊÕfB
  Xgr[Vł̓fBNg኱Ⴄ܂
  )B../html/fBNgɂindex.html t@C܂BƂł
  t@C͊ẽt@Cindex.htmlɒuĉBݒ̏
  /etc/httpd/conf/ɒ~ςĂ܂BVXe\ɐݒ肳ĂāA
  ɃG[ȂCXg[łȂ炱ȏ͕Kv܂B

  3.5.  uEU

  {ILinuxp̃uEUɂ͂R̂̂܂F

  o  LynxFeLXgx[X̃VXeB

  o  Arena(t[)FVvȃuEUBI

  o  Netscape(VFA)FJavaT|[gĂ܂B

     LynxArenaLinuxɕĂ܂ANetscape ͂悻肵Ȃ
     ΂Ȃ܂ix86A[LeN`œ삷Linuxp̂̂oCi
     t@CŔzzĂ܂BA[JCuWJ΂(``out of
     the box'')sł܂B

  3.5.1.  Lynx̐ݒ

  Lynx͋NɃftHgURL\悤Ƃ܂B͏ɃC^[
  lbgɐڑĂȂꍇɂ͂ƖłB̃ftHgURL
  X (܂̐ݒύX)߂ɁAVXeǗ
  /usr/lib/lynx.cfg (󒍁F܂/usr/local/lib/lynx.cfgȂ)t@C
  ҏWKv܂B̐ݒt@C͖57,000oCgƑ傫sK
  vȏ܂ł̂A/usr/local/lib/fBNgz[
  fBNgƂċLqĂ܂Bt@Ĉ͂߂STARTFILE
  ͂܂ŝŁAȉ̂悤ɕύX܂B

  ______________________________________________________________________
  # STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
  # STARTFILE:http://lynx.browser.org/
  STARTFILE:http://localhost
  ______________________________________________________________________

  t@CۑALynx͈Ȃindex.htmlhLg\悤
  ɂȂ܂B

  [󒍁F"Lynxɂ"

  LynxVer2.5肩ʂȃpb`Ȃœ{ꂪʂ悤ɂȂ܂B
  ȉ̃TCgQƂĂ݂ĉB

  o  ŐVLynx\[Xftp://ftp2.cc.ukans.edu/pub/lynx/

  o  Lynx̓{ꉻɂ http://www.three-a.co.jp/~asada/lynx/

  o  LynxktermBterminfõoOCɂ http://www-
     nagao.kuee.kyoto-u.ac.jp/member/shimada/misc/lynx-kterm.html

     ]

  3.5.2.  Arena̐ݒ

  ArenaȂŋNƃftHgURL\܂B̃ftH
  gURL͎st@Cɑgݍ܂Ă܂AϐWWW_HOMEɂĕ
  X (overrun)邱Ƃł܂BVXeǗ҂/etc/profilet@C
  WWW_HOME="http://localhost"ƂȂ悤ɏŉ(bashȂǂ̏ꍇ
  export悤ɂ܂)BႦ΁A

  ______________________________________________________________________
  WWW_HOME="http://localhost"
  export WWW_HOME
  ______________________________________________________________________

  Ƃ܂BxOC΁AVftHgURLArenaŗLɂȂ
  ܂B

  3.5.3.  NetscapẽCXg[Ɛݒ

  Netscape͏p̐iLinuxfBXgr[Vł͔zzĂ܂
  B (󒍁FCaldera Open LinuxȂǏp̃fBXgr[Vł̓C
  ZXꂽNetscapeĂ̂܂)BC^[lbg
  CDROM̃\tgEFARNVł܂BNetscape ͊evb
  gtH[pɃRpCꂽoCi`ŔzzĂ܂BCXg
  [ɂ̓A[JCut@CWJfBNgƂ
  /usr/local/Netscape/܂(󒍁FA[JCuɕ̃CXg[v
  OgΎI/usr/local/netscape/ fBNg܂)B
  JavaCut@C͑SẴfBNgɂ
  (Netscape CuɂĂREADMEt@CQƂĉ)Bȉ
  ̂悤ɂăN͂܂(/usr/local/bin/fBNgōƂ
  )B

  # ln -s /usr/local/Netscape/netscape .

  NetscapéuOptionsvj[Őݒł܂BuGeneral Preferencesv
  ́uAppearancevJ[ĥŁAuHome Page Locationv
  http://localhostw肵܂BNetscapeI܂ɁAIvV̕
  YȂŉ(uOptionsv---uSave Optionsv)B̋N
  Apachẽy[WJ܂(󒍁F̓[J}Ṽy[WŁAApache
  CXg[ɍ܂)B

  3.6.  ApacheƃuEŰ͊֌W

  uEUhttpT[o̍ŏ̃eXg܂BKȃuEUN
  apache: red hat linux web server̃y[W\܂B̃y[Wł
  t@C̏ꏊhttpT[õCXg[̊{܂B̃y
  [W\Ȃꍇ̓t@CKȏꏊɂ邩AuEU̐ݒ肪
  `FbNĂBuEUxJOɐݒt@C
  ҏWI点ĉBȏ̐ݒ肪ΎɃ}Ṽlbg[N
  eXg܂BzXgݒt@Cɏ̂ƈlbg
  [NZbgAbvǂBȂƂ/etc/hostsɈȉ̍s
  Ƃ`FbN܂B͏dvłB

  ______________________________________________________________________
  127.0.0.1               localhost localhost.localdomain
  ______________________________________________________________________

  ̓}VɃ[JڑƂɏdvłBɃzXgg
  悤ȃlbg[NpR}hgăeXg܂BႦ΁Atelnet
  localhost Ƃ܂(telnet ͂łɃ}VɃCXg[Ă܂)B
  ꂪΎ̍ƂɈڂ܂ɂxlbg[Nݒ
  `FbNĂĉB

  3.7.  f[^x[XGWƃCXg[

  f[^x[XCXg[ɂ́AnetscapeƂL̃CXg[
  A኱ĂƂ܂B^CAh~jXg[
  VꂼႤsqlf[^x[XGW 2`3A̒ňԂ
  ₷VXełmsql(mini-sql)g܂B̃VXedavid
  hughesɂ̂ŁAVFAEFAłB͎go[WɈ˂
  BpIȎgp̏ꍇ250.00h(us)ȏBl[Ȕꍇ65.00h
  (us)ȏBA񏤗pIȋ@ւ̏ꍇ̓t[ŎgƂł܂B
  mȉi(figures)̓f[^x[XɕĂhLg̃CZX
  QƂĂBɏi̖͂ڈƂĉB

  Ȃ҂msqlI̗RQARqׂ܂B܂ɃCXg
  [/ǗȒPŁAsql̃Jo[Ă͈͂\ł邱Ƃ
  ܂B܂ŏ_ alligator descartes' dbi faq (perl
  database interface faq) ɓKȐ܂B

       From the current author's point of view, if the dataset is
       relatively small, being tables of less than 1 million rows,
       and less than 1000 tables in a given database, then mSQL is
       a perfectly acceptable solution to your problem.  This
       database is extremely cheap, is wonderfully robust and has
       excellent support. [...]

       [{F݂̍҂̎wEɂƁAf[^Zbg100,000
       ȉ̕\1000ȉ̃e[uƂArÎ
       mSQL͊SɂȂ̖Ă܂B̃f[^x[
       X͈肵̂ŗDꂽT|[g܂B ]

  Msql͂Q̃o[W(msql-1.0.16, msql-2.0.1)ł܂B̈
  ̓ptH[}ẌႢ(dł͓ɍ͂܂)Yt
  \tgEFÄႢ(Vo[Wɂ͑̃c[AXNvg
  t@C܂)ɂĂ܂Bȉ̂Q̃o[Wł̃CX
  g[ɂĂꂼĂ܂(2`3Ⴂ܂)B

  3.7.1.  msql-1.0.16̃CXg[

  msql̓\[XELFT|[goCiƂēł܂BELFoCig
  ΃CXg[͊ȒPłBA[JCut@Cmsql-1.0.16.ELF.tgz͂
  pbP[WɃCXg[̃fBNg܂񂾌`ŃpbP[W
  Ă܂B̂ߓWJ鎞Ƀ[gfBNgœWJ邾œK
  fBNgɃCXg[܂B

  msql-1.0.16RpCāADBIC^[tF[XMsqlPerlpb
  P[W (̗҂̈ႢɂĂ͌ŏqׂ܂)gꍇɁA MsqlPerl
  eXgusome instruction inside msql failed(msqlŖ߂s܂
  )vƂȂ邱Ƃ܂B̏ꍇMsqlPerlhLg
  (patch.lost.tables)ɏĂpb`KvłBmsqldb.c
  1400s( entry->def = NULL;)3s

          *(entry->DB) = 0;
          *(entry->table) = 0;
          entry->age = 0;

  ؂łBR[htO͈ȉłB

  ______________________________________________________________________
          freeTableDef(entry->def);
          safeFree(entry->rowBuf);
          safeFree(entry->keyBuf);
          entry->def = NULL;
          *(entry->DB) = 0;
          *(entry->table) = 0;
          entry->age = 0;
  ______________________________________________________________________

  msqlRpC邽߂ɂ菇𓥂݂܂B܂\[XA[JCu
  WJă^[QbgfBNg܂B

          # make target

  ꂪ܂AVXe

       Build of target directory for Linux-2.0.30-i486 complete

  ƕ\܂B̐VfBNgɈړ

          # ./setup

  Ǝs܂B ./V[PX͂̃fBNgsetupR}hs
  ߂ɕKvłBtȂƕʂsetupsĂ܂܂B\[
  XfBNgrootCXg[Kvǂ܂B̌VXe
  ̓RpCA[eBeBȂǂ̃\tgg邩eXg܂B

       Ready to build mSQL.

       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

  ƕ\܂B

          # make all

  ƎsĉB

       make[2]: Leaving directory `/usr/local/Minerva/src/msql'
       <-- [msql] done

       Make of mSQL complete.
       You should now mSQL using make install

       NOTE : mSQL cannot be used free of charge at commercial sites.
              Please read the doc/License file to see what you have to do.

       make[1]: Leaving directory `/usr/local/Minerva/src'

  oCi/usr/local/bin/Ƀ\tgN邱ƂŌpXɒʂ悤
  ɂ܂B/usr/local/bin/fBNgɈړ

          # ln -s /usr/local/Minerva/bin/* .

  ƎsĉB

  3.7.2.  msql-1̃eXg

  CXg[Af[^x[XƓ삷邩ǂeXg܂BT
  [of[X^[g邽߂ɃVXeǗ(root)ƂăR}
  hs܂B

          # msqld &

  (obNOhmsqls邽߂ɁA&t̂YȂ悤ɂ
  )Bȉ̃bZ[W\܂B

       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

  ̃bZ[ẂAANZXݒ肵ĂȂ߂ɓ삵ĂȂƂ
  ƂӖĂ܂BăVFmsqlf[Jnł
  ܂BŃR}hKrc.dXNvgɏĂ܂( Ǘ҂
  f[^x[XR}hsł܂)B

          # msqladmin create inventur

  (󒍁F̃R}h̎sŋ̃f[^x[Xinventur܂)B
  msqlDatabase "inventur" created.ƕԓ܂B
  /usr/local/Minerva/msqldb/fBNgɋ../inventur/ TufBN
  gł܂B̐Vf[^x[X̓Ah~jXg[Vc[
  (ڍׂmsqlhLgɏĂ܂)gđł܂B

  3.7.3.  msql-2.0.1̃CXg[

  VptHughemSQLT[oAȑÕo[W2`3̓_
  CXg[ɈႢ܂Bmsql-2̃CXg[͂߂sɂ
  ȉ̃Xebvӂ݂܂BKȃfBNg(Ⴆ/usr/local/msql-2/)
  ɃA[JCuRs[ēWJ܂B

          # tar xfvz msql-2.0.1.tar.gz

  (󒍁FA[JCu͈ȉ̃TCgł܂B
  <http://www.hughes.com.au/software/msql2/>)

          # make target

  Ǝs܂B targetsɕύXă}V^CvIт܂BVTufB
  Ng Linux-(o[W)-(CPU)/ ̃fBNgɕύXĈȉ̂
  ɃZbgAbvX^[g܂B

          # ./setup

  ҏW\site.mmt@C܂BfBNg
  /usr/local/Minerva/gĂ邱ƂƎv܂BۑłH
  ꍇINST_DIR=...̍sɕۑfBNgŉBf[
  ^x[X\z܂B

          # make
          # make install

  CXg[ɐƈȉ̃bZ[W\܂B

       [...]

       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.
       *********

  CXg[K؂ɍsꂽ玟̓f[^x[XǗ̏ڍׂɒӂ𕥂
  ΂Ȃ܂Bmsql-1Ƃ͈ႤƂKvłBf[^x[XǗ
  S[Umsql܂F

          # adduser msql

  mSQLfBNg̃I[i[msqlɕύX܂B

          # cd /usr/local/Minerva
          # chown -R msql:msql *

  /usr/local/bin/̃f[^x[XoCiւ̃\tgN܂B

          # ln -s /usr/local/Minerva/bin/* .

  ȏłB

  3.7.4.  msql-2̃eXg

  f[^x[XT[omsql2d &R}hɂĊJnA

       Mini SQL Version 2.0.1
       Copyright (c) 1993-4 David J. Hughes
       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.

  Ɖo܂BŊłBf[^x[X̓RpCKȏꏊ
  ɂ܂BperlW[p܂BperlW[̓eXgp
  ɓ삵Ăf[^x[XT[o̐UɕIɊÂĂ܂B

  msql-2.0.1ɕĂ}jÄĂƂ
  ł傤F

          # gzip -d manual.ps.gz
          # lpr manual.ps

  ăC^[tF[X̍\zs܂AVSQLT[oۑ
  Ďsق悢ł傤B̂قSăC^[tF[XC
  ũeXgł܂B

  3.8.  C^[tF[X̑IFDBI/mSQL, MsqlPerl, Lite

  perlgɎQlɂȂ邱Ƃ炪Camel Book(󒍁FuN_{vƌĂ
  ̂ł)ɏĂ܂B͍̃fAvP[V
  Ă܂B{ICGIoRmsqlf[^x[XɃANZX
  @ȉR܂B͂߂perlgǂƂƂɊւ邱
  łB (̕ΏۂƂĂ)perlgȂ̈قȂC^[
  tF[Xf̂ǂ炩Iׂ܂BperlgꍇmsqlƎ̃XNv
  g(Lite)gƂł܂Bɂ킩₷ACɋ߂N
  [łB

  3.8.1.  DBI  DBD-mSQL

  ̎M̎_܂łDBIƌĂ΂perl̃f[^x[XC^[tF[X
  B DBI2,3̖𗧂_܂FR}hő̏pf[^x[X
  𑀍ł铝ꂳꂽANZXRg[񋟂Ă܂B^
  VXeŎۂ̃f[^x[X̓vO}f[^x[X̉
  (pecularities)hhCogăANZXłBDBIgƂ
  }[J[ɂقȂf[^x[XԂŃX[YȈڍsłB̃XN
  vgŕ̃f[^x[XɃANZXłBڂDBI-FAQQƂ
  B_܂F DBIC^[tF[X͂܂JŃo
  [WǂǂςĂ܂(JoȂɐV̂ɕ
  Ă܂Ƃ܂)Blɂꂼ̃f[^x[XhCo
  Abvf[g̃C^[tF[Xo[WɈˑĂ邱Ƃ
  ܂BɃCXg[[U[͂̕ŋo[W
  gȂƂȂ܂BƂ̂̃o[Wł͕G
  ȂĂ܂AeXg̃guV[eBOӖ̂Ȃ̂ɂȂ
  Ă܂Ƃ邩łB

  3.8.2.  MsqlPerl

  MsqlPerl perlXNvgmsqlɒڃANZX邽߂̃Cu
  B DBIC^[tF[XĂƂĂRpNgłB msql̗o[
  WƂ悭삵܂A̎g͈ʉꂽDBI C^[tF[
  Xg(promoted)Ƃ͂ł܂BłVXeŃCXg[
  eՂȂ̂őIC^[tF[XƂ܂BDBĨf[^x
  [XhCoo[WɈˑ܂B

  3.8.3.  msql̃XNvgFLite

  msql-2ł̓XNvg(Lite)Ă܂B̌̓VFCN
  ǉƕς̂ł(Perlo[WɎĂ
  )B Lite̓VvȌmsql-2}jAɏڂĂ
  Bmsql-2 pbP[WɂLitegȒPȃAvP[V
  ܂B

  LiteɂĂ͗Dꂽ(msql-2ɓ肵e)̂łłLite
  Ă͐܂B܂̕ǂłǎ҂perlɂĊbI
  ȗ̂Ƒz肵Ă܂BłLite悭ׂĂ݂邱Ƃ
  ߂܂BLite͂̃VvŒϓIȊTOɊւmsql-2(̃f[
  ^x[XōsĂ悤) ł̉񋟂Ăꍇ܂B

  3.9.  ʓIȕ@FDBI  DBD-msql

  łɃVXeݒperlCXg[Ă邩LpbP[W}l
  [WgperlĂ̂Ƃ܂BperlɂĂ͏ڂqׂ
  B perl̃o[Wɂ́A

          # perl -v

  Ƃ܂B perl͈ȉ̃bZ[W\܂B

       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
       [...]

  ŖȂ΁A̓f[^x[XpperlCu(DBI)Amsqlh
  Co (DBD-mSQL)ACGICXg[܂BCGIhCo͂ȏʂ
  KvɂȂ܂BR̃A[JCuKvłF

  1. DBI-0.81.tar.gz

  2. DBD-mSQL-0.65.tar.gz

  3. CGI.pm-2.31.tar.gz (邢͂ȏ̂)

     S҂̕ɒӂ܂B܂łŏqׂĂeXgCXg[
     ͏Lo[WgĐmɓĂ܂B̃o[Wł
     G[ƂȂ邩܂Bׂ̂o[W̃fobO͌Ăяo
     ̋K(conventions)C^[tF[XɂďڂȂlɂ͂ǂ
     悤܂B

  Ă̂l[̂̕@ł\
  ύXĂ邱Ƃ肵܂B  ܂ł͐Vo[W
  ɏオĂĂASɎĝł΂ŏЉo[W
  悤SĉB

  mSQL((DBD-mSQL)p̃f[^x[XhCo̓C^[tF[X(generic
  interface) DBǏɃCXg[ƂƂ͏dvłB

  IWiperlfBNgۑ邽߂/usr/local/PerlModules/
  fBNg邱Ƃn߂܂BfBNg͓ɌĂȂ
  łƂ͈ႤOɂ邱Ƃł܂(ǂperlW[READMEt@
  CɂfBNgɂĂ͏Ă܂)BL̃A[JCu
  /usr/local/PerlModules/ɃRs[āA

  # tar xzvf [archive-file]

  R̃A[JCuꂼWJ܂([archive-file]̓A[JCuɒu
  ĉ)B

  R̃W[̃CXg[vZX͒ʏʂs܂(̃hL
  gł͊epbP[WŏdvȂ̂oĂ܂)B

  3.9.1.  perlf[^x[XC^[tF[X DBI ̃CXg[

  f[^x[XC^[tF[X͓̃f[^x[XhCoCXg[
  OɓĂĉBDBIA[JCuWJ
  /usr/local/PerlModules/DBI-0.81/fBNĝł̃fBN
  gɈړ܂BREADMEt@Cperlpmakefile܂B

          # perl Makefile.PL

  ƎsĉBXƃbZ[W\܂B̂dvȉӏ
  p܂B

  [...]
  MakeMaker (v5.34)
  Checking if your kit is complete...
  Looks good
          NAME => q[DBI]
          PREREQ_PM => {  }
          VERSION_FROM => q[DBI.pm]
          clean => { FILES=>q[$(DISTVNAME)/] }
          dist => { DIST_DEFAULT=>q[clean distcheck 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 auto subdirectories.

  Writing Makefile for DBI

  ƎsĂ悤łB

          # make

  Ǝs܂BG[bZ[WoȂ(ʂɕ\vg
  R̓G[bZ[Wł͂܂)AVCXg[郉Cu
  eXg܂B

          # make test

  \o͂[Shift]-[PgUp]ŃXN[ł܂B

       [...]
       t/basics............ok
       t/dbidrv............ok
       t/examp.............ok
       All tests successful.
       [...]
       DBI test application $Revision: 1.2 $
       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 secs ( 0.00 usr  0.00 sys =  0.00 cpu)

       test.pl done

  ŌɃCXg[fBNgɃt@C܂B

          # make install

  ̃R}h͏\ɊmFĂsĉBȏシ邱Ƃ͂
  ܂BȂ炩̗RŃCXg[ɎsYȂɍ
  蒼ĉB

          # make realclean

  ܂͂߂ɁB̃R}h͑ÕCXg[ŕspȂ̂폜܂B
  ܂ʂ̕\(ȉȗċ܂)Rs[ăCXg[t@
  C폜ł܂B

       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.pod

  Installingrmɒu܂Buninstallɕۑ

          # . uninstall

  Ǝs΁ACXg[ꂽt@C폜܂B

  3.9.2.  perl  msql hCo DBD-mSQL

  msqlhCoperlf[^x[X(generic database)C^[tF[X̃C
  Xg[܂ɃCXg[܂BCXg[ߒ͏L
  XebvƓłB

          # perl Makefile.PL

  ŃVXe͓YthLgǂނ悤Ɍx\܂B
  msql̏ꏊ܂B

       $MSQL_HOME not defined. Searching for mSQL...
       Using mSQL in /usr/local/Hughes

        -> Which version of mSQL are you using [1/2]?

  o[W͂ĉBȉ2,3s\܂B

       Splendid! Your mSQL daemon is running. We can auto-detect your configuration!

       I've auto-detected your configuration to be running on port: 1114

  ȉ̂悤ɂăhCõeXg܂B

          # make test

  Ăђo͂A

  Testing: $cursor->func( '_ListSelectedFields' ). This will fail.
          ok: not a SELECT in msqlListSelectedFields!
  Re-testing: $dbh->do( 'DROP TABLE testaa' )
          ok
  *** Testing of DBD::mSQL complete! You appear to be normal! ***

  ŏI܂BővłB

          # make install

  ƂăCXg[܂Bł̂Ŏ̐߂͔΂ĂB

  3.10.  MsqlPerlC^[tF[X

  MsqlPerl̕I񂾂ȂAMsqlPerl-1.15.tar.gzȊOɓ̃f[^x
  [XhCo(generic database driver)͕Kv܂Bn߂ɏ
   MsqlPerlperlƃf[^x[XT[oԂDBIC^[tF[Xg킸
  ɒڂ邩łBڃCXg[AeXg܂B

  perl Makefile.PLƎsƃ[eBeBX^[g܂B͂߂ɂ
  mSQL邩܂B/usr/local/Minerva/ȂftHĝ܂܂ł
  łB

  make testƂ܂B̑OtestƂf[^x[X邱Ƃm
  Făp[~bVǂݏ\ɂĉB

          # msqladmin create test

  Ǝs܂B

  3.11.  perlCGICu

  perlCGIp[g͂R̃VvȒiKɂ킩Ă܂Bȉ̃R}h
  sĉB

          # perl Makefile.PL
          # make
          # make install

  ÕhCoƈႢÃC^[tF[X̓eXgIvV (# make
  test)Ă܂BƂ낪̃W[͔Cӂ̃P[XŃeXg
  Kv܂B

  CGĨTvXNvgTufBNgō܂B
  fBNg̒g/home/http/cgi-bin/ɃRs[ăXNvg̃eXg
  ̂߂ɃuEUNĂ݂ĉB

  3.12.  `FbNXg̃CXg[

  ȉ̏ɍƂi߂܂B

  1. Linuxlbg[NT|[gŃCXg[

  2. httpT[õCXg[(ApacheȂ)

  3. uEŨCXg[(Arena, lynx, NetscapeȂ)

  4. SQLT[õCXg[(msql)

  5. Kperl SQLC^[tF[XCXg[

  6. CGIt@C̃CXg[

     ŌɃN[Abvs܂BoCihLg͈قȂfB
     Ngɂ̂msql̃\[Xc[perlW[͈Ŝ߂
     폜Ă܂ (A[JCut@C͍폜ȂĂ悢ł)B

  4.  eXgf[^x[X̎s

  VXeCXg[IAfAvP[Vs邱Ƃł
  ܂BCXg[msql̃o[Wperlf[^x[XC^[tF[
  XɈˑATvvOQ`RCȂ΂܂B

  ܂/home/httpd/html/ɂindex.htmlt@CTvf[^x[XA
  vP[VĂяo悤ɏC܂B/home/httpd/html/test/̃f[
  ^x[X(A[JCuperl.lst.ckłAdatabase.cgi 邢
  inventur.cgiƌĂт܂)ɒu܂B

  index.htmlɈsǉ܂(ẽCXg[ɍ킹ĉ
  )B

  ______________________________________________________________________
  <LI>Test the <A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!</A>
  <LI>Test the <A HREF="test/inventur.cgi">Database, MsqlPerl style!</A>
  ______________________________________________________________________

  ʏ͂̂Q̂ÎłAƂCXg[
  Ăꍇ͏̂悤ɂQsǉ邱Ƃł܂BQg
  ptH[}XȂǂr邱Ƃł܂B

  4.1.  MsqlPerlTvXNvg̒ǉ

  TvXNvgMsqlPerlC^[tF[Xg悤ɂ܂B̂
  ߂ɓKȉӏ܂B͂߂Ƀt@Ĉ͂߂use w
  ύX܂B

  ______________________________________________________________________
  #
  # use DBI;            # Generisches Datenbank-Interface
  use Msql;
  ______________________________________________________________________

  27st߂MsqlPerl syntax̃hCoKvƂȂ悤ɂ
  ܂B

  ______________________________________________________________________
  # $dbh = DBI->connect($host, $database, '', $driver) ||
  $dbh = Msql->connect($host, $database) ||
  ______________________________________________________________________

  ܂33sŌ܂doqueryɕύX܂B

  ______________________________________________________________________
  # $dbh->do("SELECT * FROM hw") || db_init($dbh);
  $dbh->query("SELECT * FROM hw") || db_init($dbh);
  ______________________________________________________________________

  ŌɁA207sRgAEg܂B

  ______________________________________________________________________
  # $sth->execute || msg("SQL Error:", $sth->errstr);
  ______________________________________________________________________

  ܂errmsgɑ΂ÕR[htOg̈̂悤ɑSerrstrR[
  XbvKv܂B̓o[WɈˑ̂łBȏ
  ƂIXNvg̓X[YɎs܂B

  4.2.  msql-2pTvXNvg̒ǉ

  SQL syntaxmslq-2̊JɍĒ`܂BIWiXNvg
  45`58sɃe[uXe[ggs邱Ƃ͂ł܂B
  primary key modifiermsql-2ł͂T|[gĂ܂BȉX
  Lbv܂F

  ______________________________________________________________________
      $dbh->do(<<EOT) || die $dbh->errstr; # Neue Personen-Tabelle VKle[u
          create table person (
  # We do not need the 'primary key' modifier anymore in msql-2!
  #           pn        int primary key,   # Personalnummerlԍ
              pn        int,               # Personalnummer
              name      char(80),          # Nachname, Vorname A
              raum      int                # RaumnummerԔԍ
          )
  EOT
      $dbh->do(<<EOT) || die $dbh->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   L
          )
  EOT
  ______________________________________________________________________

  ̃XNvg͌lԍ̂VGg[Ă܂܂B
  msql-1primary key̓ĥɎg܂Bmsql-2hLg
  CREATE INDEXB̃Ggs@ɂďĂ܂B

  5.  ܂Ƃ߂ƍ̌ʂ

  msql-2VXeɃCXg[ĂȂALite, msql-2̃XNv
  gŏꂽTvvOAmsql-2Ǝ̃XNvg
  ܂B

  msql̂ǂ̃o[W[U[𔭍se[u(msqladmin)ɗ
  悤ɂǗc[̊{ZbgAf[^x[X\̃eXg(relshow) 
  Ă܂B

  Qڂmsql(msql-2)ɂ͂艿l̂郆[eBeB(msqlimport
  msqlexport)Ă܂BSQLf[^x[XɃtbgCf
  [^t@C(flat line data file)̃_v̂łBłɂf
  [^d'un coupłɂe[uɓǂݍ񂾂tbgf[^e[u
  WJ肷̂Ɏg܂B[U[͂̍Ƃ邽
  perlSQL邢͂ǂ̂悤ȃR[hłPsŏƂ͂ł܂B

  f[^x[X舵perlXNvgꍇ̓Tvt@C
  ADBIW[ɕĂL͈͂ɓnIChLg
  QƂĉB

  ƂɂŃlbg[N[U[AWWW̃[U[Ƀf[^\鏀
  ł܂B

  [{Fɍ  N, isaji@mxu.meshnet.orjp

  {ɂĊzAȂǂ܂炲A]

