home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _056f4c996f63da004fecf2bcfe4758cd < prev    next >
Text File  |  2000-03-22  |  12KB  |  251 lines

  1. <HTML>
  2.  
  3. <HEAD>
  4. <TITLE>New ActivePerl Directory Structure</TITLE>
  5. <LINK rel="stylesheet" href="../../Active.css" type="text/css">
  6. <META name="GENERATOR" content="Microsoft FrontPage 4.0">
  7. <META name="ProgId" content="FrontPage.Editor.Document">
  8. </HEAD>
  9.  
  10. <BODY bgcolor="FFFFFF">
  11.  
  12.     <!-- beginning of leaf header-->
  13.  
  14. <TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
  15.   <TR>
  16.     <TD class="block" valign="MIDDLE" width="100%" bgcolor="#cccccc"><FONT size="+1"><STRONG>
  17.       <P class="block"> ActivePerl Directory Structure</P>
  18.       </STRONG></FONT></TD>
  19.   </TR>
  20.   <TR>
  21.     <TD>
  22.       <P> </P>
  23.       <P><FONT size="7">THIS FILE IS OUT OF DATE!</FONT></P>
  24.       <!-- end of leaf content-->
  25.       <!-- INDEX BEGIN -->
  26.  
  27.       <UL>
  28.         <LI><A href="#New_ActivePerl_Directory_Structu">New ActivePerl Directory Structure</A></LI>
  29.         <UL>
  30.           <LI><A href="#Introduction">Introduction</A></LI>
  31.           <LI><A href="#Potential_Users">Potential Users</A></LI>
  32.           <LI><A href="#The_possibilities">The possibilities</A></LI>
  33.           <LI><A href="#The_New_Directory_Structure">The New Directory Structure</A></LI>
  34.           <LI><A href="#Multiple_Versions_and_Architectu">Multiple Versions and Architectures</A></LI>
  35.           <LI><A href="#Installing_Modules_in_a_Differen">Installing Modules in a Different sitelib</A></LI>
  36.           <LI><A href="#Some_additional_information">Some additional information</A></LI>
  37.           <LI><A href="#Conclusion">Conclusion</A></LI>
  38.         </UL>
  39.       </UL>
  40.       <!-- INDEX END -->
  41.  
  42.       <HR>
  43.       <P> 
  44.       <H1><A name="New_ActivePerl_Directory_Structu">New ActivePerl Directory Structure</A></H1>
  45.       <P> 
  46.       <HR>
  47.       <H2><A name="Introduction">Introduction</A></H2>
  48.       <P>This document describes the new ActivePerl directory structure, and how to use it, and how
  49.       to maniuplate @INC, to make it work better for you.</P>
  50.       <P>ActiveState has received numerous comments and requests concerning the directory structure
  51.       of ActivePerl. With the newly designed installation directory structure and building of @INC,
  52.       we worked on addressing the following issues:</P>
  53.       <UL>
  54.         <LI>Allow for installation of multiple simultaneous versions</LI>
  55.         <LI>Allow for installation of multiple architectures, such as perl OBJECT and perl THREAD</LI>
  56.         <LI>Preserve the site libraries among installations</LI>
  57.         <LI>Allow for networked installations with shared lib and site directories</LI>
  58.         <LI>Allow for easy upgrading of ActivePerl releases</LI>
  59.       </UL>
  60.       <HR>
  61.       <H2><A name="Potential_Users">Potential Users</A></H2>
  62.       <P>In determining our options we have tried to consider the position of the following groups
  63.       of users:</P>
  64.       <UL>
  65.         <LI>Web Developers</LI>
  66.         <LI>Small-site System Administrators</LI>
  67.         <LI>Module/Extension Developers</LI>
  68.         <LI>Perl Developers</LI>
  69.         <LI>Large-site System Administrators / Enterprise Admins</LI>
  70.       </UL>
  71.       <HR>
  72.       <H2><A name="The_possibilities">The possibilities</A></H2>
  73.       <P>The following possibilities were considered:</P>
  74.       <UL>
  75.         <LI>The core gets installed into a version, subversion, patch specific sub directory of the
  76.           perl root</LI>
  77.         <LI>The core gets installed into a version and subversion specific sub directory of the perl
  78.           root</LI>
  79.         <LI>The core gets installed into any directory the user desires</LI>
  80.         <LI>Perl executables are subdivided into architecture and non-architecture dependent
  81.           directories</LI>
  82.         <LI>Perl executables are all installed in the same directory</LI>
  83.         <LI>sitelib is installed at the same level as lib or as a subdirectory of lib</LI>
  84.         <LI>sitelib is installed outside or at a level above lib</LI>
  85.         <LI>sitelib has version, subversion, patch specific sub directory</LI>
  86.         <LI>sitelib has version, subversion specific sub directory</LI>
  87.         <LI>sitelib has no version specific directories in the path</LI>
  88.       </UL>
  89.       <P>Essentially these options are all the same. What it means for you is, "Where do you
  90.       want to install?"</P>
  91.       <P><STRONG>Our solution supports all of these configurations.</STRONG></P>
  92.       <P> 
  93.       <HR>
  94.       <H2><A name="The_New_Directory_Structure">The New Directory Structure</A></H2>
  95.       <P>With earlier builds, we followed the core directory structure which gave us directories
  96.       such as c:\perl\5.00502\bin\mswin32-x86-object. This is good for people who have a need for
  97.       multiple versions or types of perl installed at a time. We quickly found that the Win32 public
  98.       didn't like this at all, except for a rare few who actually used and needed this. People
  99.       decided they wanted a plain old c:\perl\bin\perl.exe just like they were used to, fewer
  100.       characters in their PATH, site libraries that were in a directory not dependent on a version,
  101.       and architecture depended libraries worked in with the regular libraries where they could find
  102.       them. As a result, we have simplified the directory structure significantly.</P>
  103.       <P>We are now using the following default directory structure:</P>
  104.       <PRE> c:\perl
  105.     bin                     ... all perl binaries and util scripts
  106.     lib                     ... core modules
  107.     site
  108.        lib                  ... default site modules location
  109. </PRE>
  110.       <P>This is like what people are accustomed to from previous versions of Perl for Win32 and
  111.       from the GSAR port of 5.004. However, if more explicit directory names are called for, you can
  112.       still implement them as described below. If you are new to perl, or don't need anything more
  113.       complicated than this, then just installing using ``c:\perl'' (or ``d:\perl'' for you NT
  114.       multibooters) is simplified and things are where you have asked for them to be.</P>
  115.       <P> 
  116.       <HR>
  117.       <H2><A name="Multiple_Versions_and_Architectu">Multiple Versions and Architectures</A></H2>
  118.       <P>On the other hand, you can still support the versioned installs like 500-502 were, to
  119.       support multiple simultaneous versions. If you want multiple Perl versions installed you can
  120.       change 'c:\perl' to 'c:\perl\whatever' when you install.</P>
  121.       <P><STRONG>Installation 1:</STRONG></P>
  122.       <PRE>    c:\perl\
  123.         bin                                 ... all perl binaries and util scripts
  124.         lib                                 ... core modules
  125.         site
  126.            lib                              ... default site modules location
  127. </PRE>
  128.       <P><STRONG>Installation 2:</STRONG></P>
  129.       <PRE>    c:\perl\
  130.        site 
  131.            lib                              ... default site modules location
  132.        5.00501-thread
  133.            bin                              ... all perl binaries and util scripts
  134.            lib                              ... core modules
  135. </PRE>
  136.       <P><STRONG>Shared site:</STRONG></P>
  137.       <PRE>    c:\perl
  138.         site
  139.            lib                              ... global site modules location
  140.         5.005
  141.            bin
  142.            lib
  143.         5.00501
  144.            bin
  145.            lib
  146.         5.00501-thread
  147.            bin
  148.            lib
  149. </PRE>
  150.       <P>The ActivePerl installer recognizes if you are installing in a
  151.       <version>.<sub-version>* specific directory, and automatically moves site up a
  152.       level so that you can share your site libraries between versions. If you want to change this
  153.       default location, you have to set the following system registry values:</P>
  154.       <PRE>    \\HKLM\Software\Perl
  155.         lib-5.005=c:\perl\site\lib
  156. </PRE>
  157.       <BR>
  158.       <PRE>    \\HKLM\Software\Perl
  159.         lib-5.00501=c:\perl\site\lib
  160. </PRE>
  161.       <BR>
  162.       <P>or set PERL5LIB in your environment.</P>
  163.       <P>You can use this method to reset your perl system to use a site directory shared across a
  164.       network for multiple workstations.</P>
  165.       <HR>
  166.       <H2><A name="Installing_Modules_in_a_Differen">Installing Modules in a Different sitelib</A></H2>
  167.       <P>If you want PPM to install into a different site lib, you need to set the following values
  168.       in 'Config.pm':</P>
  169.       <PRE>    installsitelib='c:\Perl\site\lib'
  170.     installarchlib='c:\Perl\site\lib\arch' (if using arch-specific dir)
  171. </PRE>
  172.       <P>If you don't use PPM, which you may well not if you are a module developer, you can pass
  173.       the LIB parameter to 'perl makefile.pl LIB=c:\perl\site\lib'.</P>
  174.       <HR>
  175.       <H2><A name="Some_additional_information">Some additional information</A></H2>
  176.       <P>Additional suggestions have been submitted regarding the architecture specific directory
  177.       for binaries in the core tree. Most people would like to see everything go into 'c:\perl\bin'.</P>
  178.       <P>The default directory structure for an ActivePerl installation is as follows</P>
  179.       <PRE>    c:\perl
  180.        bin
  181.        lib
  182.        site
  183.          lib
  184. </PRE>
  185.       <P>If you install ActivePerl into a directory such as 'c:\perl\5.005', the directory structure
  186.       will be as follows</P>
  187.       <PRE>    c:\perl
  188.        5.005
  189.          bin
  190.          lib
  191.        site
  192.          lib
  193. </PRE>
  194.       <P><CODE>@INC</CODE> can be configured by modifying the following values:</P>
  195.       <PRE>    PERLLIB environment variable
  196.     PERL5LIB environment variable
  197.     \\HKLM\Software\Perl\lib-<version>
  198.     \\HKLM\Software\Perl\sitelib-<version>
  199.     \\HKLM\Software\Perl\lib
  200.     \\HKLM\Software\Perl\sitelib
  201. </PRE>
  202.       <P>In the algorithm for building <CODE>@INC</CODE> we define the following values:</P>
  203.       <UL>
  204.         <LI><CODE>$Reg_Lib_Version</CODE> = the actual value of \\HKLM\Software\Perl\lib-{$]}</LI>
  205.         <LI><CODE>$Reg_Site_Version</CODE> = the actual value of \\HKLM\Software\Perl\sitelib-{$]}</LI>
  206.         <LI><CODE>$Reg_Lib</CODE> = the actual value of \\HKLM\Software\Perl\lib</LI>
  207.         <LI><CODE>$Reg_Site</CODE> = the actual value of \\HKLM\Software\Perl\sitelib</LI>
  208.         <LI><CODE>$Perl_Dir</CODE> = the directory into which Perl was installed and contains 'bin'
  209.           and 'lib' directories</LI>
  210.         <LI><CODE>$Arch</CODE> = Perl architecture ex. 'MSWin32-x86-object', 'MSWin32-ALPHA-object'</LI>
  211.         <LI>$] = the Perl variable containing Perl's version, sub-version and patch level</LI>
  212.         <LI><CODE>$Perl_Version</CODE> = Complete Perl <version>.<sub-version> with no
  213.           patch level, for example: <CODE>$Perl_Version</CODE> == 5.005 for Perl 5.005_02</LI>
  214.       </UL>
  215.       <P>The algorithm for building <CODE>@INC</CODE> is as follows (this shows precedence):</P>
  216.       <PRE>    # This gets rid of a version in the path if one exists
  217.     ($Perl_Site) = ($Perl_Dir =~ /(.*?)(?:[\/\\]$Perl_Version.*)?$/);
  218.     $Perl_Site .= '/site';
  219. </PRE>
  220.       <BR>
  221.       <PRE>    push @INC, split /;/, ($ENV{PERL5LIB} || $ENV{PERLLIB});
  222.     push @INC, split /;/, ($Reg_Lib_Version || $Reg_Lib);
  223.     push @INC, ("$Perl_Dir/lib/$Arch", "$Perl_Dir/lib);
  224.     push @INC, ("$Perl_Site/$]/lib/$Arch", "$Perl_Site/$]/lib");
  225.     push @INC, split /;/, ($Reg_Site_Version || $Reg_Site);
  226.     push @INC, ("$Perl_Site/lib/$Arch", "$Perl_Site/lib");
  227.     push @INC, '.';
  228. </PRE>
  229.       <P>Of course if a directory does not exist it does not get added to @INC.</P>
  230.       <HR>
  231.       <H2><A name="Conclusion">Conclusion</A></H2>
  232.       <P>We hope that this simplified directory structure, and the ability to easily reconfigure the
  233.       installation locations, greatly improves your ability to use ActivePerl to the fullest. Enjoy!</P>
  234.       <P>We welcome comments and suggestions.</P>
  235.  
  236.  
  237.       <!-- beginning of leaf footer-->
  238.       <P> </P>
  239.     </TD>
  240.   <TR>
  241.     <TD class="block" valign="MIDDLE" width="100%" bgcolor="#cccccc"><FONT size="+1"><STRONG>
  242.       <P class="block"> ActivePerl Directory Structure</P>
  243.       </STRONG></FONT></TD>
  244.   </TR>
  245. </TABLE>
  246. <!-- end of leaf footer-->
  247.  
  248. </BODY>
  249.  
  250. </HTML>
  251.