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

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