home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 March / PCWorld_2003-03_cd.bin / Software / Topware / activeperl / ActivePerl / Perl / bin / ppm.bat < prev    next >
Encoding:
DOS Batch File  |  2002-12-01  |  44.7 KB  |  1,530 lines

  1. @rem = '--*-Perl-*--
  2. @echo off
  3. if "%OS%" == "Windows_NT" goto WinNT
  4. perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. :WinNT
  7. perl -x -S %0 %*
  8. if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
  9. if %errorlevel% == 9009 echo You do not have Perl in your PATH.
  10. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
  11. goto endofperl
  12. @rem ';
  13. #!perl
  14. #line 15
  15. use Win32::TieRegistry;
  16.  
  17. my $R = $Registry;
  18. $R->Delimiter('/');
  19.  
  20. my $key1 = 'HKEY_LOCAL_MACHINE/SOFTWARE/ActiveState/PPM//InstallLocation';
  21. my $key2 = 'HKEY_CURRENT_USER/SOFTWARE/ActiveState/PPM//InstallLocation';
  22. my $own  = "$Config{binexp}\\ppm3-bin";
  23. my $opt_exe = -f $own            ? $own        : 
  24.           defined $R->{$key1}    ? $R->{$key1}    :
  25.           defined $R->{$key2}    ? $R->{$key2}    : undef;
  26.  
  27. die "Error: neither '$key1' nor '$key2' found in registry"
  28.   unless defined $opt_exe;
  29.  
  30. # Tell ppm3-bin where it was launched from. (Used when auto-selecting what
  31. # target to use.)
  32. use Config;
  33. $ENV{PPM3_PERL_PREFIX} = $Config{prefix};  # should really be 'prefixexp'
  34.                        # but most versions on windows don't
  35.                        # have it set right
  36. $ENV{PPM3_PERL_SITELIB} = $Config{sitelibexp};
  37.  
  38. # If $shared is true, then tell PPM3 to look at the shared config.
  39. # If $user   is true, then tell PPM3 to look at the user's config.
  40. # If $tree   is true, then tell PPM3 to look at the perl tree's config.
  41. # Note: if both of these are true, PPM3 will not work properly!
  42. $ENV{PPM3_SHARED} = 1 if $opt_shared;
  43. $ENV{PPM3_USER}   = 1 if $opt_user;
  44.  
  45. system($opt_exe, @ARGV);
  46. exit ($? >> 8);
  47.  
  48. =head1 NAME
  49.  
  50. ppm3 - Programmer's Package Manager, version 3.0
  51.  
  52. =head1 SYNOPSIS
  53.  
  54. ppm3 [-file=f] [-shared] [-target[=t]] [-pause] [command [args]]
  55.  
  56. When run with no arguments, PPM3 starts up an interactive shell where you can
  57. enter commands. You may specify command-line arguments to run a single
  58. command.
  59.  
  60. For example, the following two sessions are equivalent:
  61.  
  62.    $ ppm
  63.    ppm> search Tk
  64.    [results displayed]
  65.    ppm> exit
  66.  
  67.    $ ppm search Tk
  68.    [results displayed]
  69.  
  70. In the first case, PPM returns you to the prompt, where you can enter more
  71. commands.
  72.  
  73. =head1 DESCRIPTION
  74.  
  75. The program I<ppm3> is intended to simplify the tasks of locating, installing,
  76. upgrading and removing Perl packages.
  77.  
  78. I<ppm3> runs in one of three modes: an interactive shell from which commands
  79. may be entered; a script interpreter, reading sequential commands from a
  80. file; and command-line mode, in which one specific action is performed per
  81. invocation of the program.
  82.  
  83. =head1 COMMANDS
  84.  
  85. The following sections describe each command available in PPM. The following
  86. help is also available via the online help feature by typing 'help' in PPM3.
  87.  
  88.  
  89. =head1 describe -- Describe Packages
  90.  
  91. =head2 Synopsis
  92.  
  93.  des                Describes default/current package
  94.  des <number>       Describes package <number> in the
  95.                     current search set
  96.  des <range>        Describes packages in the given 
  97.                     <range> from the current search
  98.  des <package name> Describes named package
  99.  des <url>          Describes package located at <url>
  100.  des <glob pattern> Performes a new search using <glob pattern>
  101.  
  102. =head2 Description
  103.  
  104. The describe command returns information about a package, including
  105. the name of the package, the author's name and a brief description
  106. (called an "Abstract") about the package. For example:
  107.  
  108.     describe libnet
  109.  
  110. returns:
  111.  
  112.     ===============================
  113.     Package 1
  114.     Name: libnet
  115.     Version: 1.07.03
  116.     Author: Graham Barr
  117.     Abstract: Collection of Network protocol modules
  118.     Implementations:
  119.             1.sun4-solaris-thread-multi
  120.             2.i686-linux-thread-multi
  121.             3.MSWIn32-x86-multi-thread
  122.     ===============================
  123.  
  124. There are two modifiers to the describe command:
  125.  
  126. =over 4
  127.  
  128. =item -ppd
  129.  
  130. Displays the raw PPD of the package.
  131.  
  132. =item -dump
  133.  
  134. The same as -ppd.
  135.  
  136. =back
  137.  
  138. When the describe command is called without arguments, it returns
  139. information about the first package in the current search. If there is no
  140. default search set, you will be prompted to use the search command
  141. to find a package.
  142.  
  143. If describe is called with a numeric argument, that number is set as the
  144. default package and the information about that package is returned. If the
  145. number given doesn't exist, you will be prompted to use search to find a
  146. package. Also, you can use describe to get descriptions of several
  147. packages.  For example:
  148.  
  149.     describe 4-7
  150.  
  151. will return descriptions of packages 4 through 7 in the current search
  152. request. You can also enter:
  153.  
  154.     describe 3-4,10
  155.  
  156. to get information on packages 3, 4 and 10.
  157.  
  158. If you specify a URL as the argument to describe, PPM will describe the
  159. package located at the URL. The URL must point to a PPD file. The URL
  160. can also point to a PPD file on your computer.
  161.  
  162. When the describe command is given a name with a wildcard (such as "*" or
  163. "?") it executes the search command with the given argument. For example,
  164. describe Tk* will return the name(s) of any packages that match the
  165. search parameters.
  166.  
  167. =head2 See Also
  168.  
  169. properties
  170.  
  171. =head1 exit, q, quit -- Exit the program
  172.  
  173. =head2 Synopsis
  174.  
  175.  exit                Exit
  176.  quit                Exit
  177.  q                   Exit
  178.  q <query>           Perform a new query (shortcut for query)
  179.  
  180. =head2 Description
  181.  
  182. When you leave the PPM environment, the current settings are saved.
  183.  
  184. =head1 help -- General help, or help on specific commands.
  185.  
  186. =head2 Synopsis
  187.  
  188.  help                Lists available commands and help topics
  189.  help 'command'      Lists detailed help about a specific command
  190.  
  191. =head2 Description
  192.  
  193. The help command provides a brief description of the commands available
  194. within PPM. For help on a specific command, enter help followed by the
  195. command name. For example, enter help settings or help set for a detailed
  196. description of the settings command.
  197.  
  198. There are some extra help topics built into PPM. They can be accessed
  199. within the PPM environment as follows:
  200.  
  201.   help ppm_migration
  202.  
  203. shows more details about the changes from previous versions of PPM
  204.  
  205.   help quickstart
  206.  
  207. an easy-to-follow guide to getting started with PPM
  208.  
  209.   help prompt
  210.  
  211. provides a detailed explanation about the PPM prompt
  212.  
  213. =head1 install -- Install Packages
  214.  
  215. =head2 Synopsis
  216.  
  217.  install           Installs default package
  218.  install <number>  Installs packages by a specific <number>
  219.  install <range>   Installs packages in the given numeric <range>
  220.  install <name>    Installs named package
  221.  install <url>     Installs the package located at <url>
  222.  
  223. =head2 Description
  224.  
  225. The install command is used to install packages from the repository.  Install
  226. packages by name or number (the number is given by the repository or search
  227. request), or set a default package using the describe command. You can specify
  228. a full URL to a PPD file; the URL may point to a PPD file on your computer.
  229.  
  230. If you have profile tracking enabled, (see 'help profile') the current profile
  231. will be updated to include the newly installed package(s).
  232.  
  233. The following modifiers can be used with the install command:
  234.  
  235. =over 4
  236.  
  237. =item
  238.  
  239. -force
  240.  
  241. =item
  242.  
  243. -noforce
  244.  
  245. =item
  246.  
  247. -follow
  248.  
  249. =item
  250.  
  251. -nofollow
  252.  
  253. =back
  254.  
  255. The force and follow switches determine how packages are installed:
  256.  
  257.  FORCE       FOLLOW          RESULT
  258.  false       false           Checks to see if the package is installed and
  259.                              if it is, installation stops. If there are any
  260.                              missing prerequisites, the installation will
  261.                              fail.
  262.  
  263.  false       true            Checks to see if the package is installed and
  264.                              if it is, installation stops. If there are any
  265.                              missing prerequisites, they are automatically
  266.                              installed. NOTE: this is the default setting
  267.                              when PPM is first installed.
  268.  
  269.  true        false           If the package is installed, PPM will
  270.                              reinstall the package. If there are any
  271.                              missing prerequisites, the installation will
  272.                              fail.
  273.  
  274.  true        true            If the package is installed, PPM will
  275.                              reinstall the package. All prerequisites are
  276.                              installed, missing or not.
  277.     
  278. If you do not specify any options, install uses the default settings. 
  279. Set or view the current defaults using the 'settings' command.
  280.  
  281. For example:
  282.  
  283.     install foo
  284.  
  285. will install the package named "foo", using the default settings. 
  286. Over-ride the defaults using the install modifiers described above.
  287.  
  288. For example:
  289.  
  290.     install foo -force
  291.  
  292. will install the "foo" package, even if it has already been installed. If
  293. both -force and -follow are set to "true", all the prerequisites for any
  294. package you install will also be installed. For example, the installation
  295. of a tk-related package, like "tk-ach" which is 8.4 kB will be preceded
  296. by the installation of Tk, which is 1.7 MB.
  297.  
  298. You can also install by package number. Package numbers are 
  299. based on the current repository or current search request. For example:
  300.  
  301.     install 6
  302.  
  303. installs package number 6. You can install more than one package at one
  304. time:
  305.  
  306.     install 3-5
  307.  
  308. installs packages 3, 4 and 5. You can also type install 3-6,8 to install 
  309. packages 3,4,5,6 and 8.
  310.  
  311. =head2 See Also
  312.  
  313. profile
  314.  
  315. =head1 profile -- Manage PPM Profiles
  316.  
  317. =head2 Synopsis
  318.  
  319.  profile                     Lists profiles available on the repository
  320.  profile <num>               Switches to the given profile
  321.  profile add <name>          Creates a new profile on the repository
  322.  profile delete <name or num>
  323.                              Deletes the given profile
  324.  profile describe [name or num]
  325.                              Describes the current or given profile
  326.  profile save                Saves the client state to the current profile
  327.  profile restore             Restores the current profile
  328.  profile rename <name or num> <name>
  329.                              Renames the given profile to <name>
  330.  
  331. =head2 Description
  332.  
  333. Profiles store information about packages that are installed on your
  334. system. If the 'profile-track' setting is enabled, your ASPN Profile will
  335. be updated with information about installed packages. Profiles allow you
  336. to easily migrate, reinstall, upgrade or restore PPM packages in one or
  337. more locations.
  338.  
  339. To use profiles, you must have a license for ASPN. For license
  340. information, see http://www.ActiveState.com/ASPN/About. 
  341. Disable profile tracking by setting 'profile-track=0'.
  342.  
  343. =head1 properties -- Describe Installed Packages
  344.  
  345. =head2 Synopsis
  346.  
  347.  prop                    Describes default installed package
  348.  prop <number>           Describes installed package <number>
  349.  prop <range>            Describes a <range> of installed packages
  350.  prop <package name>     Describes named installed package
  351.  prop <url>              Describes installed package located at <url>
  352.  prop <glob pattern>     Performs a new query using <glob pattern>
  353.  
  354. =head2 Description
  355.  
  356. The properties command is an verbose form of the describe command. In
  357. addition to summary information, properties will display
  358. the installation date and a URL showing the location of the package
  359. within the repository.
  360.  
  361. If you specify the package as a URL, PPM determines the package name
  362. from the URL and searches for that.
  363.  
  364. When the properties command is used with wildcard arguments,
  365. the text entered at the PPM prompt is passed to the query command.
  366.  
  367. For example, typing 'properties libnet' will give you:
  368.  
  369.     ====================
  370.         Name: libnet
  371.      Version: 1.07.03
  372.       Author: Graham Barr
  373.        Title: libnet
  374.     Abstract: Collection of Network protocol modules
  375.     InstDate: Fri Oct  2 16:15:15 1998
  376.     Location: http://ppm-ia.ActiveState.com/PPM/...
  377.     ====================
  378.  
  379. =head2 See Also
  380.  
  381. describe
  382.  
  383. =head1 query -- Query Installed Packages
  384.  
  385. =head2 Synopsis
  386.  
  387.  query                   Displays list of previous queries
  388.  query <number>          Displays results of previous query
  389.  query <glob pattern>    Performs a new query using <glob pattern>
  390.  query *                 Displays a list of all installed packages
  391.  
  392. =head2 Description
  393.  
  394. The query command displays a list of all installed packages, or a
  395. list based on the <glob pattern> switch. You can also check
  396. the list of past queries, or the results of a past query.
  397.  
  398. With PPM 3.0, you can now perform much more powerful queries. The syntax
  399. is identical to the 'search' command, and almost all the search switches
  400. are also available for querying installed packages.
  401.  
  402. Recall previous queries with the 'query <number>' command. PPM3
  403. stores all queries from the current PPM session.
  404.  
  405. Note: Depending on the value of the "case-sensitivity" setting,
  406. the query may or may not be case-sensitive. See "help settings" for
  407. instructions on setting the default case sensitivity.
  408.  
  409. =head2 See Also
  410.  
  411. search, settings
  412.  
  413. =head1 repository -- Repository Control
  414.  
  415. =head2 Synopsis
  416.  
  417.  rep                        Displays all repositories
  418.  rep add [name] <location>  Adds a new repository; makes it active
  419.  rep delete <name or num>   Deletes specified repository
  420.  rep describe <name or num> Displays information about the specified
  421.                             repository
  422.  rep rename <name or num> <name>
  423.                             Renames the specified repository to
  424.                             the given name
  425.  rep on <name>              Activates the specified repository
  426.  rep off <name or num>      Removes the repository from the active list
  427.  rep up <name or num>       Moves the specified repository up one
  428.  rep down <name or num>     Moves the specified repository down one
  429.  
  430. =head2 Description
  431.  
  432. The I<repository> (or I<rep>) command controls two lists or repositories:
  433.  
  434. =over 4
  435.  
  436. =item 1
  437.  
  438. The list of "active" repositories. This is the list of repositories used by
  439. I<search>, I<install>, I<upgrade>, and I<verify>.
  440.  
  441. =item 2
  442.  
  443. The list of all known repositories. You can designate a repository "inactive",
  444. which means PPM will not use it in any commands.
  445.  
  446. =back
  447.  
  448. If no arguments are given, the rep command will list the active
  449. repositories defined in the PPM settings. The order is significant: when
  450. installing a package, PPM will try the first repository, then the
  451. second, and so on, until it find the package you asked for. When
  452. searching, PPM merges the results of all the repositories together, so the
  453. order is less important (see the I<search> command).
  454.  
  455. For example, when you enter:
  456.  
  457.     rep
  458.  
  459. PPM3 will return something resembling this:
  460.  
  461.     Repositories:
  462.     [1] ActiveCD
  463.     [2] ActiveState Package Repository
  464.     [ ] An inactive repository
  465.  
  466. In the example above, entering 'rep off 2' will disable the second repository
  467. (the ActiveStat Package Repository). To add another repository:
  468.  
  469.     rep add [options] <NAME> <LOCATION>
  470.  
  471. The following options are available for the 'add' command:
  472.  
  473. =over 4
  474.  
  475. =item
  476.  
  477. -username 
  478.  
  479. =item
  480.  
  481. -password
  482.  
  483. =back
  484.  
  485. These options allow you to specify a username and password to be used
  486. when logging into a repository. Currently, these are only used for FTP
  487. and WWW repositories.
  488.  
  489. For example:
  490.  
  491.     rep add "EZE" http://ppm.ActiveState.com/PPMPackages/5.8plus
  492.  
  493. with "EZE" being the name of the repository (for easy reference)
  494. and the location noted by the http location. If you were to enter the
  495. rep command again, you would see:
  496.  
  497.     ppm> rep
  498.     Repositories:
  499.     [1] ActiveCD
  500.     [2] ActiveState Package Repository
  501.     [3] EZE
  502.     [ ] An inactive repository
  503.  
  504. To move the new repository to the top of the Active list, you would type:
  505.  
  506.     ppm> rep up EZE
  507.     Repositories:
  508.     [1] ActiveCD
  509.     [2] EZE
  510.     [3] ActiveState Package Repository
  511.     [ ] An inactive repository
  512.     ppm> rep up EZE
  513.     Repositories:
  514.     [1] EZE
  515.     [2] ActiveCD
  516.     [3] ActiveState Package Repository
  517.     [ ] An inactive repository
  518.  
  519. To disable the ActiveCD repository temporarily, enter the following:
  520.  
  521.     ppm> rep off ActiveCD
  522.     Repositories:
  523.     [1] EZE
  524.     [2] ActiveState Package Repository
  525.     [ ] ActiveCD
  526.     [ ] An inactive repository
  527.  
  528. To describe a repository, refer to it either by name, or by the number
  529. displayed next to the repository in the Active Repositories list. You must
  530. refer to inactive repositories by their full name.
  531.  
  532.     ppm> rep describe 2
  533.     Describing Active Repository 2:
  534.         Name: ActiveState Package Repository
  535.     Location: http://ppm.ActiveState.com/cgibin/PPM/...
  536.         Type: PPMServer 2.00
  537.     ppm> rep describe ActiveCD
  538.     Describing Inactive Repository:
  539.         Name: ActiveCD
  540.     Location: F:\PPMPackages\5.8plus
  541.         Type: Local Directory
  542.  
  543. To re-activate the ActiveCD repository, use the I<rep on> command. You
  544. must refer to inactive repositories by name, not number.
  545.  
  546.     ppm> rep on ActiveCD
  547.     Active Repositories:
  548.     [1] EZE
  549.     [2] ActiveState Package Repository
  550.     [3] ActiveCD
  551.     [ ] An inactive repository
  552.  
  553. =head2 Repository Types
  554.  
  555. PPM3 supports several types of package repositories:
  556.  
  557. =over 4
  558.  
  559. =item 1.
  560.  
  561. PPM Server 3.0
  562.  
  563. ActiveState's SOAP-driven package server. Because all searches are
  564. done server-side, the server can deliver much richer information about
  565. packages than other repositories.
  566.        
  567. =item 2.
  568.  
  569. PPM Server 2.0
  570.  
  571. The SOAP server designed for PPM version 2. PPM3 ships with the
  572. PPM2 repository as well as the PPM3 repository, so you can use
  573. either. Simple searches are performed server-side. If your search is
  574. too complicated for the server, PPM3 will download the package
  575. summary and search by itself.
  576.  
  577. =item 3.
  578.  
  579. Web Repositories
  580.  
  581. Older versions of PPM used non-SOAP repositories (directories full of
  582. PPD files accessible using a web browser). Over the history of PPM,
  583. there have been several different ways of organising the files so that
  584. PPM can search for packages properly. PPM3 tries to download a summary
  585. file first -- if that fails, it gets the directory index. It parses the
  586. summary or the index, and caches it. Searches are done from the
  587. cache.
  588.  
  589. =item 4.
  590.  
  591. FTP Repositories
  592.  
  593. FTP is another way of exposing a directory full of PPD files. PPM3
  594. consideres FTP repositories a subset of Web repositories. Treat them as
  595. identical: PPM3 downloads the summary or the "index" (file listing in
  596. this case), parses it, and then searches from it.
  597.  
  598. =item 5.
  599.  
  600. Local Repositories
  601.  
  602. To support installing packages from the ActiveCD, a local directory can
  603. be a repository. PPM3 searches the files in the directory. All valid
  604. path formats are supported, including UNC paths.
  605.  
  606. =back
  607.  
  608. =head1 search -- Search for Packages
  609.  
  610. =head2 Synopsis
  611.  
  612.  search                Displays list of previous searches
  613.  search <number>       Displays results of search <number>
  614.  search <glob pattern> Performs a new search
  615.  search <field>=<glob> Searches for all packages matching the field.
  616.  search *              Displays all packages in the current repository
  617.  
  618. The available fields are 'ABSTRACT', 'NAME', 'TITLE', 'AUTHOR', and 'VERSION'.
  619. 'NAME' is used when you do not specify a field.
  620.  
  621. =head2 Description
  622.  
  623. Use the search command to look through the repository for packages.
  624. PPM version 3.0 provides powerful search functionality. For example:
  625.  
  626. =over 4
  627.  
  628. =item 1.
  629.  
  630. Search for 'CGI' anywhere in the name:
  631.  
  632.   search CGI
  633.  
  634. Example results:
  635.  
  636.   Apache-CGI
  637.   CGI-Application
  638.   CGI-ArgChecker
  639.  
  640. =item 2.
  641.  
  642. Search for 'CGI' at the beginning of the name:
  643.  
  644.   search CGI*
  645.  
  646. Example results:
  647.  
  648.   CGI-ArgChecker
  649.   CGI-Application
  650.  
  651. =item 3.
  652.  
  653. Search for all modules authored by someone with 'smith' in their name or
  654. email:
  655.  
  656.   search AUTHOR=smith 
  657.  
  658. Example results:
  659.  
  660.   Apache-ProxyPass
  661.   Business-ISBN
  662.  
  663. =item 4.
  664.  
  665. Search for 'compress' anywhere in the abstract:
  666.  
  667.   search ABSTRACT=compress
  668.  
  669. Example results:
  670.  
  671.   Apache-GzipChain
  672.   IO-Zlib
  673.  
  674. =item 5.
  675.  
  676. Search for 'CGI' in the name, or 'web' in the abstract:
  677.  
  678.   search CGI or ABSTRACT=web
  679.  
  680. Example results:
  681.  
  682.   CGI-XMLForm
  683.   HTML-Clean
  684.  
  685. =item 6.
  686.  
  687. Search for 'XML' in the name and either 'parser' in the name or 'pars' in the
  688. abstract, but not with 'XPath' in the name:
  689.  
  690.   search XML and (parser or ABSTRACT=pars) and not XPath
  691.  
  692. Example results:
  693.  
  694.   XML-Node
  695.   XML-Parser-EasyTree
  696.  
  697. =item 7.
  698.  
  699. PPM Server 3.0 repositories only: search by module name, even if unrelated to
  700. the containing package:
  701.  
  702.   search Data::Grove
  703.                                 
  704. Example results:
  705.  
  706.   libxml-perl
  707.  
  708. =item 8.
  709.  
  710. Browse all packages in the repository:
  711.  
  712.   search *
  713.  
  714. Example results:
  715.  
  716.   Affix-Infix2Postfix
  717.   AI-Fuzzy
  718.   [many more...]
  719.  
  720. =back
  721.  
  722. Recall previous searches using the 'search <number>' command. PPM3 stores
  723. searches for each session until you exit PPM.
  724.  
  725. Some package names or versions are too long to be displayed in the search
  726. results. If a name is too long, you will see a '~' (tilde) as the last visible
  727. character in the column. You can use I<describe> to view detailed information
  728. about such packages.
  729.  
  730. =head2 Search Results
  731.  
  732. When you type a command like C<search XML>, PPM searches in each of the Active
  733. Repositories (see the I<repository> command) for your package. The results are
  734. merged into one list, and duplicates (packages found in more than one
  735. repository) are hidden.
  736.  
  737. You can control what fields PPM shows for each package. The fields each have a
  738. built-in weight, which is used to calculate how wide to make each field based
  739. on the width of your screen. Information that doesn't fit into a field is
  740. truncated, and a tilde (C<~>) character is displayed in the last column of the
  741. field.
  742.  
  743. Let's get down to an example:
  744.  
  745.     ppm> search XML
  746.     Searching in Active Repositories
  747.         1. CGI-XMLForm           [0.10] Extension to CGI.pm which
  748.         2. Data-DumpXML          [1.01] Dump arbitrary data structures
  749.         3. DBIx-XML_RDB          [0.05] Perl extension for creating XML
  750.         4. DBIx-XMLMessage       [0.03] XML Message exchange between DBI
  751.         5. GoXML-XQI            [1.1.4] Perl extension for the XML Query
  752.         6. Language-DATR-DATR2~ [0.901] manipulate DATR .dtr, XML, HTML,
  753.         7. libxml-perl           [0.07] support for deeply nested
  754.         8. Mail-FilterXML         [0.1] Undetermined
  755.         9. Mail-XML              [0.03] Adds a toXML() method to
  756.        10. Pod-XML               [0.93] Module to convert POD to XML
  757.  
  758. As you can see, the three fields being displayed are:
  759.  
  760. =over 4
  761.  
  762. =item 1
  763.  
  764. NAME
  765.  
  766. The package name
  767.  
  768. =item 2
  769.  
  770. VERSION
  771.  
  772. The package version
  773.  
  774. =item 3
  775.  
  776. ABSTRACT
  777.  
  778. The package abstract
  779.  
  780. =back
  781.  
  782. You can customize the view somewhat. If you want to view the authors, but not
  783. the abstract, you can run the same I<search> command after using I<set> to
  784. change the fields:
  785.  
  786.     ppm> set fields="NAME VERSION AUTHOR"
  787.     Setting 'fields' set to 'name version author'.
  788.     ppm> search XML
  789.     Using cached search result set 1.
  790.         1. CGI-XMLForm         [0.10] Matt Sergeant (matt@sergeant.org)
  791.         2. Data-DumpXML        [1.01] Gisle Aas (gisle@aas.no)
  792.         3. DBIx-XML_RDB        [0.05] Matt Sergeant (matt@sergeant.org)
  793.         4. DBIx-XMLMessage     [0.03] Andrei Nossov (andrein@andrein.com)
  794.         5. GoXML-XQI          [1.1.4] Matthew MacKenzie (matt@goxml.com)
  795.         6. Language-DATR-DAT~ [0.901] Lee Goddard (lgoddard@cpan.org)
  796.         7. libxml-perl         [0.07] Ken MacLeod (ken@bitsko.slc.ut.us)
  797.         8. Mail-FilterXML       [0.1] Matthew MacKenzie (matt@goxml.com)
  798.         9. Mail-XML            [0.03] Matthew MacKenzie (matt@goxml.com)
  799.        10. Pod-XML             [0.93] Matt Sergeant (matt@sergeant.org)
  800.  
  801. You can change the order in which the results are sorted, and what columns are
  802. displayed. The settings I<fields> and I<sort-field> changes this. You can
  803. sort by any valid field name (even fields which are not displayed). See the
  804. I<settings> command for the valid field names.
  805.  
  806. PPM always hides "duplicate" results. It decides whether a result is
  807. duplicated based on the fields being displayed. If the same package is found
  808. in more than one repository, but you don't have the REPOSITORY field showing,
  809. PPM will only list the package once.
  810.  
  811.  
  812. =head1 settings -- View or Set PPM Settings
  813.  
  814. =head2 Synopsis
  815.  
  816.  set                 Displays current settings
  817.  set <name>          Displays the current setting of the given <name>
  818.  set <name> <value>  Sets <name> to <value>
  819.  unset <name>        Sets <name> to a "false" value: '0' for boolean
  820.                      Settings, '' for others.
  821.  
  822. =head2 Description
  823.  
  824. The settings command is used to configure the default PPM environment.
  825. Settings such as the number of lines displayed per page, case-sensitivity,
  826. and the log file are configured using the settings command.
  827.  
  828. Setting names may be abbreviated to uniqueness. For example, instead
  829. of typing 'case-sensitivity', you may type 'case'.
  830.  
  831. Available settings:
  832.  
  833.  NAME                VALUE           DESCRIPTION
  834.  case-sensitivity    1 or 0      If 1, searches and queries are
  835.                                  case-sensitive.
  836.  
  837.  download-chunksize  integer     If this is set to a positive,
  838.                                  non-zero integer, PPM updates the
  839.                                  status after "integer" of bytes
  840.                                  transferred during an install or
  841.                                  upgrade.
  842.  
  843.  fields              fields      A space-separated list of fields to 
  844.                                  display in the search results. Valid
  845.                                  fields are:
  846.  
  847.                                    ABSTRACT
  848.                                    AUTHOR
  849.                                    NAME
  850.                                    REPOSITORY
  851.                                    TITLE
  852.                                    VERSION
  853.  
  854.                                  Usually, NAME and TITLE have the same
  855.                                  content.
  856.  
  857.  follow-install      1 or 0      See 'help install' for details.
  858.  
  859.  force-install       1 or 0      See 'help install' for details.
  860.  
  861.  install-verbose     1 or 0      If 0, suppresses most output when
  862.                                  installing packages. If 1, PPM prints
  863.                                  each file as it is installed.
  864.  
  865.  pager               path        The path to an external pager program
  866.                                  used to page long displays. If blank,
  867.                                  or set to 'internal', the internal
  868.                                  pager is used. If 'none', paging
  869.                                  is disabled.
  870.  
  871.  profile-track       1 or 0      If 1, PPM arranges to have the 
  872.                                  ASPN server track your PPM profile. 
  873.                                  This means that every time your install
  874.                                  or remove a package, your profile is
  875.                                  updated on the server. If 0, you must
  876.                                  manually save your profile using
  877.                                  'profile save'.
  878.  
  879.  prompt-context      1 or 0      If 1, enables the prompt to change
  880.                                  based on the current state of PPM, i.e
  881.                                  showing current target, query, etc.
  882.  
  883.  prompt-slotsize     integer     If prompt-verbose is 1, this defines
  884.                                  the width of each slot in the prompt.
  885.                                  For instance, 4 means to use 4 
  886.                                  character-wide slots.
  887.  
  888.  prompt-verbose      1 or 0      If 0, uses numbers to represent the
  889.                                  context in the prompt; much shorter.
  890.                                  If prompt-context is set to 0, there
  891.                                  will be no visible difference in the
  892.                                  'prompt-verbose' settings.
  893.  
  894.  remove-verbose      1 or 0      If 0, suppresses most output when
  895.                                  removing packages. If 1, prints the
  896.                                  name of each file as it is removed.
  897.  
  898.  sort-field          field       The field by which to sort search and
  899.                                  query results. Valid fields are
  900.                  ABSTRACT, AUTHOR, NAME, TITLE
  901.                  and VERSION.
  902.  
  903.  tempdir             path        A temporary directory into which
  904.                                  packages are downloaded and expanded
  905.                                  during 'install' and 'upgrade'.
  906.  
  907.  trace-file          path        A file to which PPM will write tracing
  908.                                  information.
  909.  
  910.  trace-level         integer     If 0 or negative, tracing is disabled.
  911.                                  Positive, non-zero integers result in
  912.                                  tracing information being written to
  913.                                  'trace-file'. Higher settings of
  914.                                  'trace-level' result in more trace
  915.                                  information.
  916.  
  917.  upgrade-verbose     1 or 0      If 0, suppresses most output when
  918.                                  upgrading packages. If 1, prints the
  919.                                  name of each file as it is upgraded.
  920.  
  921. For information about migrating options used by previous
  922. versions of PPM, see 'help ppm_migration'.
  923.  
  924. When you assign a value to a setting, PPM saves the configuration.
  925. Therefore, setting values persist across sessions.
  926.  
  927. =head1 targets -- View Target Installer Backends
  928.  
  929. =head2 Synopsis
  930.  
  931.  target                      Displays a list of backend targets
  932.  target <number>             Sets <number> as default backend target
  933.  target [select] <name or num>
  934.                              Sets <name or num> as default backend target
  935.  target describe [name or num]
  936.                              Describes the given (or default) target
  937.  target set <key> <val>      Sets the target's <key> to <val> 
  938.  target rename <name or num> <name>
  939.                              Renames the given target to <name>
  940.  
  941. =head2 Description
  942.  
  943. The target is the destination location of the install routine, such as 
  944. the directory where the packages are installed when they're downloaded
  945. from the repository. For example:
  946.  
  947.     target
  948.  
  949. returns:
  950.  
  951.     Targets:
  952.       1. ActivePerl 618
  953.     * 2. ActivePerl 629
  954.  
  955. This shows that there are two available targets, and that the second
  956. target (ActivePerl 629) is currently the default (as shown by the
  957. asterisk). Using multiple targets, you can manage multiple 
  958. installations of Perl from a single command-line.
  959.  
  960. =head1 tree -- Show Dependency Tree for Packages
  961.  
  962. =head2 Synopsis
  963.  
  964.  tree                Displays the dependency-tree of the current
  965.                      or default package
  966.  tree <number>       Displays the dependency-tree of the given <number>
  967.  tree <range>        Displays a <range> of dependency-trees
  968.  tree <package name> Displays the dependency-tree of the named package
  969.  tree <url>          Displays the dependency-tree for the
  970.                      package at <url>
  971.  tree <glob pattern> Performs a new search using <glob pattern>
  972.  
  973. =head2 Description
  974.  
  975. The tree command is used to show the "dependency tree" of a given
  976. package (additional packages that are required by the current package).
  977. For example:
  978.     
  979.     tree SOAP-lite
  980.  
  981. returns:
  982.  
  983.     ====================
  984.     SOAP-Lite 0.51
  985.     |__MIME-tools 5.316
  986.     |   |__MailTools 1.15
  987.     |   \__IO-stringy 1.216
  988.     |
  989.     \__MIME-Lite 2.105
  990.     ====================
  991.  
  992. SOAP-Lite requires four other packages.
  993.  
  994. When tree is called without a <name> or <number> switch, the command
  995. will return the dependency tree of the first package in the default
  996. search result. If there is no default search, you will be requested to
  997. use search to find a package.
  998.  
  999. =head1 remove, uninstall -- Uninstalls Installed Packages
  1000.  
  1001. =head2 Synopsis
  1002.  
  1003.  remove              Deletes default installed package
  1004.  remove <number>     Deletes installed package <number>
  1005.  remove <range>      Deletes a <range> of installed packages
  1006.  remove <name>       Deletes a packages by a specific name
  1007.  remove <url>        Deletes the package located at <url>
  1008.  
  1009. =head2 Description
  1010.  
  1011. The remove and uninstall commands function identically. They are used to
  1012. delete packages from the current target (specified using the target
  1013. command). If profile tracking is enabled, (see 'help profile') the
  1014. current PPM profile on ASPN will be updated.
  1015.  
  1016. Packages can be removed by package name, by their numerical listing, or 
  1017. by specifying a URL to a PPD file. For example:
  1018.  
  1019.     remove XML-DOM
  1020.  
  1021. will delete the XML-DOM package from the target.
  1022.  
  1023. To remove package by number:
  1024.  
  1025.     remove 6
  1026.  
  1027. and the sixth package in your current query will be removed. If no
  1028. queries have been run in the current PPM session, you will be prompted
  1029. to use a query to find a package before deleting it. Remember that removing
  1030. packages clears all previous query requests, since the numerical
  1031. sequence stored in any query will no longer be true once package(s) have
  1032. been removed.
  1033.  
  1034. Packages can also be removed in groups.  For example:
  1035.  
  1036.     remove 4-7
  1037.  
  1038. will delete packages 4, 5, 6, and 7 from your target. You can also skip
  1039. packages:
  1040.  
  1041.     remove 3-5, 7
  1042.  
  1043. this will delete packages 3, 4, 5 and 7, but will leave 6 intact.
  1044. Remember to run a new query whenever you remove a package from your
  1045. target.
  1046.  
  1047. If you specify the package as a URL, PPM determines the package name from
  1048. the URL and removes that.
  1049.  
  1050. Please note that wildcards like "*" or "?" cannot be used with the remove
  1051. command.
  1052.  
  1053. =head2 See Also
  1054.  
  1055. profile
  1056.  
  1057. =head1 upgrade -- List or install available upgrades
  1058.  
  1059. =head2 Synopsis
  1060.  
  1061.  upgrade [*]         Lists upgrades available for all installed packages
  1062.  upgrade <number>    Upgrades installed package <number>
  1063.  upgrade <range>     Upgrades a <range> of installed packages
  1064.  upgrade <package>   Upgrades the named <package>
  1065.  
  1066. =head2 Description
  1067.  
  1068. The upgrade command lists package upgrades that are available on the
  1069. current repository for packages installed on your system. To install
  1070. available upgrades, use the '--install' option.
  1071.  
  1072. If profile tracking is enabled, (see 'help profile'), your profile
  1073. will be updated to reflect changes to any packages which are upgraded.
  1074.  
  1075. There are several modifiers to the upgrade command:
  1076.  
  1077. =over 4
  1078.  
  1079. =item -install
  1080.  
  1081. Installs, rather than lists, available upgrades
  1082.  
  1083. =item -precious
  1084.  
  1085. Allows upgrading of "precious" packages
  1086.  
  1087. =item -force
  1088.  
  1089. See 'help install'
  1090.  
  1091. =item -follow
  1092.  
  1093. See 'help install'
  1094.  
  1095. =back
  1096.  
  1097. By default, 'upgrade' typed by itself only lists the available upgrades.
  1098. To actually install all available upgrades, enter
  1099.  
  1100.     upgrade -install
  1101.  
  1102. To enable upgrading "precious" packages, enter
  1103.  
  1104.     upgrade -install -precious
  1105.  
  1106. =head2 See Also
  1107.  
  1108. profile
  1109.  
  1110. =head1 version -- print the name and version of PPM.
  1111.  
  1112. Prints the name and version of PPM3.
  1113.  
  1114.  
  1115. =head1 EXTRA HELP TOPICS
  1116.  
  1117. The following sections describe extra help topics available in PPM. An extra
  1118. help topic is not the name of a command -- it is only available as a help
  1119. page. The following help is available via the online help feature by typing
  1120. 'help' in PPM3.
  1121.  
  1122. =head1 ppm migration -- PPM Migration Guide
  1123.  
  1124. =head2 Description
  1125.  
  1126. Those familiar with PPM version 2 should appreciate the extended
  1127. functionality  of PPM version 3, including the command-line history,
  1128. autocomplete and profiles. Some PPM version 2 commands are different
  1129. in PPM version 3. Examples of command changes include:
  1130.  
  1131. =over 4
  1132.  
  1133. =item 1
  1134.  
  1135. Adding a repository
  1136.  
  1137. PPM2:
  1138.  
  1139.   set repository my_repository http://my/repository
  1140.  
  1141. PPM3:
  1142.  
  1143.   repository add my_repository http://my/repository
  1144.  
  1145. =item 2
  1146.  
  1147. Removing a repository
  1148.  
  1149. PPM2:
  1150.  
  1151.   set repository --remove my_repository
  1152.  
  1153. PPM3:
  1154.  
  1155.   repository del my_repository
  1156.  
  1157. =item 3
  1158.  
  1159. Setting the temporary directory
  1160.  
  1161. PPM2:
  1162.  
  1163.   set build DIRECTORY
  1164.  
  1165. PPM3
  1166.  
  1167.   set tempdir DIRECTORY
  1168.  
  1169. =item 4
  1170.  
  1171. Setting frequency of download updates
  1172.  
  1173. PPM2:
  1174.  
  1175.   set downloadstatus NUMBER
  1176.  
  1177. PPM3:
  1178.  
  1179.   set download-chunksize NUMBER
  1180.  
  1181. =item 5
  1182.  
  1183. Changing the installation root directory:
  1184.  
  1185. PPM2:
  1186.  
  1187.   set root DIRECTORY
  1188.  
  1189. PPM3:
  1190.  
  1191.   target set root DIRECTORY
  1192.  
  1193. =item 6
  1194.  
  1195. Listing all installed packages:
  1196.  
  1197. PPM2:
  1198.  
  1199.   query
  1200.  
  1201. PPM3:
  1202.  
  1203.   query *
  1204.  
  1205. =item 7
  1206.  
  1207. Listing all packages on server:
  1208.  
  1209. PPM2:
  1210.  
  1211.   search
  1212.  
  1213. PPM3:
  1214.  
  1215.   search *
  1216.  
  1217. =back
  1218.  
  1219. =head1 prompt -- information about the PPM3 prompt
  1220.  
  1221. =head2 Description
  1222.  
  1223. The PPM prompt can tell you six things:
  1224.  
  1225. =over 4
  1226.  
  1227. =item 1)
  1228.  
  1229. The current repository;
  1230.  
  1231. =item 2)
  1232.  
  1233. The current target;
  1234.  
  1235. =item 3)
  1236.  
  1237. The last search you made on the current repository;
  1238.  
  1239. =item 4)
  1240.  
  1241. The last query you made on the current target;
  1242.  
  1243. =item 5)
  1244.  
  1245. The last package you described from this repository; and,
  1246.  
  1247. =item 6)
  1248.  
  1249. The last package you described from this target.
  1250.  
  1251. =back
  1252.  
  1253. To enable the prompt to tell you this information, you must set
  1254. 'prompt-context' to '1'. The following examples all assume this setting.
  1255.  
  1256. =head2 Examples
  1257.  
  1258. =over 4
  1259.  
  1260. =item 1
  1261.  
  1262. Repository and Target:
  1263.  
  1264. Set 'prompt-context' The prompt will resemble:
  1265.  
  1266.     ppm:1:1> 
  1267.  
  1268. In this case, the first '1' means that the first repository is selected.
  1269. The second '1' means the first target is selected. You can prove this by
  1270. adding another repository and switching to it:
  1271.  
  1272.     ppm:1:1> rep add TEMP http://my/repository
  1273.     Repositories:
  1274.       1. ActiveState Package Repository
  1275.     * 2. TEMP
  1276.     ppm:1:1> rep 2
  1277.     Repositories:
  1278.       1. ActiveState Package Repository
  1279.     * 2. TEMP
  1280.     ppm:2:1> 
  1281.  
  1282. The same is true for targets. If you have multiple versions of Perl
  1283. installed, when you swtich to a different target the second number
  1284. reflects the change.
  1285.  
  1286. If you delete all the repositories, the repository number changes to '?'.
  1287. The same goes for targets. If either item is indicated by a question mark,
  1288. you must configure a repository or target before proceeding.
  1289.  
  1290. =item 2
  1291.  
  1292. Search and Query:
  1293.  
  1294. PPM stores searches and search results from in the current session.
  1295. The prompt displays the search number:
  1296.  
  1297.     ppm:1:1> search Text
  1298.     [results displayed here]
  1299.     ppm:1:1:s1> 
  1300.  
  1301. The 's1' indicates that the last search you performed
  1302. can be viewed again by entering 'search 1'. Type 'search' with no
  1303. arguments to view the list of cached searches:
  1304.  
  1305.     ppm:1:1:s1> search
  1306.     Search Result Sets:
  1307.     * 1. Text
  1308.  
  1309. If you then enter 'search 1', you will see the same results as when you
  1310. typed 'search Text' earlier. If you search for something else ('search 
  1311. Parse') then the number will change to 's2':
  1312.  
  1313.     ppm:1:1:s1> search Parse
  1314.     [results displayed here]
  1315.     ppm:1:1:s2>
  1316.  
  1317. The same indicators apply to the query command. When you run a query,
  1318. a numerical indicator displays the current query:
  1319.  
  1320.     ppm:1:1:s1> query PPM
  1321.     [results displayed here]
  1322.     ppm:1:1:s1:q1> 
  1323.  
  1324. You can view the past queries with 'query', and view results by querying a
  1325. particular number.
  1326.  
  1327. =item 3
  1328.  
  1329. Describe and Properties:
  1330.  
  1331. When you use the describe command with the numerical switch (to view
  1332. package information based on the package number in the last search or
  1333. query), PPM sets that index to the current index. If you use the desribe
  1334. command with the name switch, and the name is found within the current
  1335. result, the index is set to the current one. If no package is found,
  1336. PPM creates a new search or query on-the-fly, and sets it as the current
  1337. search or query.
  1338.  
  1339. For example:
  1340.  
  1341.     ppm:1:1> search Text
  1342.     1. Convert-Context  [0.501]     an Attributed Text data type
  1343.     2. gettext          [1.01]      message handling functions
  1344.     3. HTML-FromText    [1.005]     mark up text as HTML
  1345.     4. HTML-Subtext     [1.03]      Perform text substitutions on an HTML
  1346.                                     template
  1347.     5. Locale-Maketext  [0.18]      framework for software localization
  1348.     ppm:1:1:s1>
  1349.  
  1350.     ppm:1:1:s1> describe 1
  1351.     ====================
  1352.     Package 1:
  1353.         Name: Convert-Context
  1354.      Version: 0.501
  1355.       Author: Martin Schwartz (martin@nacho.de)
  1356.     Abstract: an Attributed Text data type
  1357.     Implementations:
  1358.            1. i686-linux-thread-multi
  1359.            2. MSWin32-x86-multi-thread
  1360.            3. sun4-solaris-thread-multi
  1361.     ====================
  1362.     ppm:1:1:s1:sp1> 
  1363.  
  1364. The last prompt has an extra 'sp1'. That stands for 'search
  1365. package 1', and it means that PPM considers 'Convert-Context' to be the
  1366. default package. If you now type 'describe' or 'install' with no
  1367. arguments, PPM will apply your command to this package.
  1368.  
  1369. If you go back to where you had no default package selected:
  1370.  
  1371.     ppm:1:1> search Text
  1372.     1. Convert-Context  [0.501]     an Attributed Text data type
  1373.     2. gettext          [1.01]      message handling functions
  1374.     3. HTML-FromText    [1.005]     mark up text as HTML
  1375.     4. HTML-Subtext     [1.03]      Perform text substitutions on an HTML
  1376.                                     template
  1377.     5. Locale-Maketext  [0.18]      framework for software localization
  1378.     ppm:1:1:s1>
  1379.  
  1380. ...and you describe 'Locale-Maketext', you will see this:
  1381.  
  1382.     ppm:1:1:s1> describe Locale-Maketext
  1383.     ====================
  1384.         Name: Locale-Maketext
  1385.      Version: 0.18
  1386.       Author: Sean M. Burke (sburke@cpan.org)
  1387.     Abstract: framework for software localization
  1388.     Prerequisites:
  1389.            1. I18N-LangTags 0.13
  1390.     Implementations:
  1391.            1. i686-linux-thread-multi
  1392.            2. MSWin32-x86-multi-thread
  1393.            3. sun4-solaris-thread-multi
  1394.     ====================
  1395.     ppm:1:1:s1:sp5>
  1396.  
  1397. Notice that the correct package got selected, even though you specified it
  1398. by name.
  1399.  
  1400. =back
  1401.  
  1402. This behaviour also applies to the query and properties commands.
  1403.  
  1404. =head2 See Also
  1405.  
  1406. describe, properties, query, search
  1407.  
  1408. =head1 quickstart -- a beginners' guide to PPM3
  1409.  
  1410. =head2 Description
  1411.  
  1412. PPM (Programmer's Package Manager) is a utility for managing
  1413. software "packages". A package is a modular extension for a language
  1414. or a software program. Packages reside in  repositories. PPM can use 
  1415. three types of repositories:
  1416.  
  1417.  1) A directory on a CD-ROM or hard drive in your computer
  1418.  2) A website
  1419.  3) A remote Repository Server (such as ASPN)
  1420.  
  1421. Common Commands:
  1422.  
  1423. To view PPM help:
  1424.  
  1425.   help
  1426.   help <command>
  1427.  
  1428. To view the name of the current repository:
  1429.  
  1430.   repository
  1431.  
  1432. To search the current repository:
  1433.  
  1434.   search <keywords>
  1435.  
  1436. To install a package:
  1437.  
  1438.   install <package_name>
  1439.  
  1440. Most commands can be truncated; as long as the command is unambiguous,
  1441. PPM will recognize it.  For example, 'repository add foo" can be
  1442. entered as 'rep add foo'.
  1443.  
  1444. PPM features user profiles, which store information about installed
  1445. packages. Profiles are stored as part of your ASPN account; thus,
  1446. you can easily maintain package profiles for different languages, or
  1447. configure one machine with your favorite packages, and then copy that
  1448. installation to another machine by accessing your ASPN profile.  
  1449.  
  1450. For more information, type 'help profile' at the PPM prompt.
  1451.  
  1452. =head1 unicode -- Notes About Unicode Author Names
  1453.  
  1454. =head2 Description
  1455.  
  1456. CPAN author names are defined to be in Unicode. Unicode is an international
  1457. standard ISO 10646, defining the I<Universal Character Set (UCS)>. UCS
  1458. contains all characters of all other character set standards. For more
  1459. information about Unicode, see F<http://www.unicode.org/>.
  1460.  
  1461. The CPAN authors website is located at your local CPAN mirror under
  1462. /authors/00whois.html. For example, you can view it at
  1463. F<http://www.cpan.org/authors/00whois.html>. This page can be rendered by
  1464. Mozilla 0.9.8 and Internet Explorer 5.0, but you may have to install extra
  1465. language packs to view all the author names.
  1466.  
  1467. By default, PPM3 renders all characters as Latin1 when it prints them to your
  1468. console. Characters outside the Latin1 range (0-255) are not printed at all.
  1469.  
  1470. If your console can render UTF-8 characters, you can tell PPM3 not to recode
  1471. characters by using one of the following environment variables:
  1472.  
  1473. =over 4
  1474.  
  1475. =item
  1476.  
  1477. LC_ALL
  1478.  
  1479. =item
  1480.  
  1481. LC_CTYPE
  1482.  
  1483. =item
  1484.  
  1485. LANG
  1486.  
  1487. =item
  1488.  
  1489. PPM_LANG
  1490.  
  1491. =back
  1492.  
  1493. PPM3 requires one of these environment variables to contain the string
  1494. 'UTF-8'. For example, the following setting make PPM3 print
  1495. beautifully-formatted authors in RedHat Linux 7.2 (assumes you're using a
  1496. Bourne shell):
  1497.  
  1498.   $ PPM_LANG='en_US.UTF-8' xterm -u8 -e ppm3
  1499.  
  1500. Linux and Solaris users should refer to L<xterm> for more information about
  1501. setting up xterm to display UTF-8 characters.
  1502.  
  1503. =head1 BUGS
  1504.  
  1505. If you find a bug in PPM, please report it at this URL:
  1506.  
  1507.   http://bugs.activestate.com/enter_bug.cgi?set_product=PPM
  1508.  
  1509. Bugs regarding the ActiveState Package Repository (particularly missing or
  1510. out-of-date packages) should be sent via email to this email address:
  1511.  
  1512.   mailto:ppm-request@ActiveState.com
  1513.  
  1514. =head1 SEE ALSO
  1515.  
  1516. For information about the older version of PPM, see L<ppm>.
  1517.  
  1518. =head1 AUTHOR
  1519.  
  1520. ActiveState Corporation (support@ActiveState.com)
  1521.  
  1522. =head1 COPYRIGHT
  1523.  
  1524. Copyright (C) 2001, 2002, ActiveState Corporation. All Rights Reserved.
  1525.  
  1526. =cut
  1527.  
  1528. __END__
  1529. :endofperl
  1530.