ppm3 - Programmer's Package Manager, version 3.1

- NAME
- SYNOPSIS
- DESCRIPTION
- COMMANDS
- describe - Describe Packages

- Synopsis
- Description
- See Also

- exit, q, quit - Exit the program

- Synopsis
- Description

- help - General help, or help on specific commands.

- Synopsis
- Description

- install - Install Packages

- Synopsis
- Description
- See Also

- profile - Manage PPM Profiles

- Synopsis
- Description

- properties - Describe Installed Packages

- Synopsis
- Description
- See Also

- query - Query Installed Packages

- Synopsis
- Description
- See Also

- repository - Repository Control

- Synopsis
- Description
- Repository Types

- search - Search for Packages

- Synopsis
- Description
- Search Results

- settings - View or Set PPM Settings

- Synopsis
- Description

- targets - View Target Installer Backends

- Synopsis
- Description

- tree - Show Dependency Tree for Packages

- Synopsis
- Description

- remove, uninstall - Uninstalls Installed Packages

- Synopsis
- Description
- See Also

- upgrade - List or install available upgrades

- Synopsis
- Description
- See Also

- version - print the name and version of PPM.
- EXTRA HELP TOPICS
- ppm migration - PPM Migration Guide

- Description

- prompt - information about the PPM3 prompt

- Description
- Examples
- See Also

- quickstart - a beginners' guide to PPM3

- Description

- unicode - Notes About Unicode Author Names

- Description

- BUGS
- SEE ALSO
- AUTHOR
- COPYRIGHT

# NAME

ppm3 - Programmer's Package Manager, version 3.1

# SYNOPSIS

ppm3 [-file=f] [-shared] [-target[=t]] [-pause] [command [args]]

When run with no arguments, PPM3 starts up an interactive shell where you can enter commands. You may specify command-line arguments to run a single command.

For example, the following two sessions are equivalent:

       $ ppm
       ppm> search Tk
       [results displayed]
       ppm> exit

       $ ppm search Tk
       [results displayed]

In the first case, PPM returns you to the prompt, where you can enter more commands.

# DESCRIPTION

The program ppm3 is intended to simplify the tasks of locating, installing, upgrading and removing Perl packages.

ppm3 runs in one of three modes: an interactive shell from which commands may be entered; a script interpreter, reading sequential commands from a file; and command-line mode, in which one specific action is performed per invocation of the program.

# COMMANDS

The following sections describe each command available in PPM. The following help is also available via the online help feature by typing 'help' in PPM3.

# describe -- Describe Packages

## Synopsis

     des                Describes default/current package
     des <number>       Describes package <number> in the
                        current search set
     des <range>        Describes packages in the given
                        <range> from the current search
     des <package name> Describes named package
     des <url>          Describes package located at <url>
     des <glob pattern> Performes a new search using <glob pattern>

## Description

The describe command returns information about a package, including the name of the package, the author's name and a brief description (called an ``Abstract'') about the package. For example:

        describe libnet

returns:

        ===============================
        Package 1
        Name: libnet
        Version: 1.07.03
        Author: Graham Barr
        Abstract: Collection of Network protocol modules
        Implementations:
                1.sun4-solaris-thread-multi
                2.i686-linux-thread-multi
                3.MSWIn32-x86-multi-thread
        ===============================

There are two modifiers to the describe command:

-ppd
  Displays the raw PPD of the package.

-dump
  The same as -ppd.

When the describe command is called without arguments, it returns information about the first package in the current search. If there is no default search set, you will be prompted to use the search command to find a package.

If describe is called with a numeric argument, that number is set as the default package and the information about that package is returned. If the number given doesn't exist, you will be prompted to use search to find a package. Also, you can use describe to get descriptions of several packages. For example:

        describe 4-7

will return descriptions of packages 4 through 7 in the current search request. You can also enter:

        describe 3-4,10

to get information on packages 3, 4 and 10.

If you specify a URL as the argument to describe, PPM will describe the package located at the URL. The URL must point to a PPD file. The URL can also point to a PPD file on your computer.

When the describe command is given a name with a wildcard (such as ``*'' or ``?'') it executes the search command with the given argument. For example, describe Tk* will return the `name(s)` of any packages that match the search parameters.

## See Also

properties

# exit, q, quit -- Exit the program

## Synopsis

     exit                Exit
     q                   Exit
     quit                Exit

## Description

When you leave the PPM environment, the current settings are saved.

# help -- General help, or help on specific commands.

## Synopsis

     help                Lists available commands and help topics
     help <command>      Lists detailed help about a specific command

## Description

The help command provides a brief description of the commands available within PPM. For help on a specific command, enter help followed by the command name. For example, enter help settings or help set for a detailed description of the settings command.

There are some extra help topics built into PPM. They can be accessed within the PPM environment as follows:

      help ppm_migration

shows more details about the changes from previous versions of PPM

      help quickstart

an easy-to-follow guide to getting started with PPM

      help prompt

provides a detailed explanation about the PPM prompt

# install -- Install Packages

## Synopsis

     install           Installs default package
     install <number>  Installs packages by a specific <number>
     install <range>   Installs packages in the given numeric <range>
     install <name>    Installs named package
     install <url>     Installs the package located at <url>

## Description

The install command is used to install packages from the repository. Install packages by name or number (the number is given by the repository or search request), or set a default package using the describe command. You can specify a full URL to a PPD file; the URL may point to a PPD file on your computer.

If you have profile tracking enabled, (see 'help profile') the current profile will be updated to include the newly installed package(s).

The following modifiers can be used with the install command:

  -force

  -noforce

  -follow

  -nofollow

The force and follow switches determine how packages are installed:

     FORCE       FOLLOW          RESULT
     false       false           Checks to see if the package is installed and
                                 if it is, installation stops. If there are any
                                 missing prerequisites, the installation will
                                 fail.

     false       true            Checks to see if the package is installed and
                                 if it is, installation stops. If there are any
                                 missing prerequisites, they are automatically
                                 installed. NOTE: this is the default setting
                                 when PPM is first installed.

     true        false           If the package is installed, PPM will
                                 reinstall the package. If there are any
                                 missing prerequisites, the installation will
                                 fail.

     true        true            If the package is installed, PPM will
                                 reinstall the package. All prerequisites are
                                 installed, missing or not.

    If you do not specify any options, install uses the default settings.
    Set or view the current defaults using the 'settings' command.

For example:

        install foo

will install the package named ``foo'', using the default settings. Over-ride the defaults using the install modifiers described above.

For example:

        install foo -force

will install the ``foo'' package, even if it has already been installed. If both -force and -follow are set to ``true'', all the prerequisites for any package you install will also be installed. For example, the installation of a tk-related package, like ``tk-ach'' which is 8.4 kB will be preceded by the installation of Tk, which is 1.7 MB.

You can also install by package number. Package numbers are based on the current repository or current search request. For example:

        install 6

installs package number 6. You can install more than one package at one time:

        install 3-5

installs packages 3, 4 and 5. You can also type install 3-6,8 to install packages 3,4,5,6 and 8.

## See Also

profile

# profile -- Manage PPM Profiles

## Synopsis

     profile                     Lists profiles available on the repository
     profile <num>               Switches to the given profile
     profile add <name>          Creates a new profile on the repository
     profile delete <name or num>
                                 Deletes the given profile
     profile describe [name or num]
                                 Describes the current or given profile
     profile save                Saves the client state to the current profile
     profile restore             Restores the current profile
     profile rename <name or num> <name>
                                 Renames the given profile to <name>

## Description

Profiles store information about packages that are installed on your system. If the 'profile-track' setting is enabled, your ASPN Profile will be updated with information about installed packages. Profiles allow you to easily migrate, reinstall, upgrade or restore PPM packages in one or more locations.

To use profiles, you must have a license for ASPN. For license information, see http://www.ActiveState.com/ASPN/About Disable profile tracking by setting 'profile-track=0'.

# properties -- Describe Installed Packages

## Synopsis

     prop                    Describes default installed package
     prop <number>           Describes installed package <number>
     prop <range>            Describes a <range> of installed packages
     prop <package name>     Describes named installed package
     prop <url>              Describes installed package located at <url>
     prop <glob pattern>     Performs a new query using <glob pattern>

## Description

The properties command is an verbose form of the describe command. In addition to summary information, properties will display the installation date and a URL showing the location of the package within the repository.

If you specify the package as a URL, PPM determines the package name from the URL and searches for that.

When the properties command is used with wildcard arguments, the text entered at the PPM prompt is passed to the query command.

For example, typing 'properties libnet' will give you:

        ====================
            Name: libnet
         Version: 1.07.03
          Author: Graham Barr
           Title: libnet
        Abstract: Collection of Network protocol modules
        InstDate: Fri Oct  2 16:15:15 1998
        Location: http://ppm.ActiveState.com/PPM/...
        ====================

## See Also

describe

# query -- Query Installed Packages

## Synopsis

     query                   Displays list of previous queries
     query <number>          Displays results of previous query
     query <glob pattern>    Performs a new query using <glob pattern>
     query *                 Displays a list of all installed packages

## Description

The query command displays a list of all installed packages, or a list based on the <glob pattern> switch. You can also check the list of past queries, or the results of a past query.

With PPM 3.1, you can now perform much more powerful queries. The syntax is identical to the 'search' command, and almost all the search switches are also available for querying installed packages.

Recall previous queries with the 'query <number>' command. PPM3 stores all queries from the current PPM session.

Note: Depending on the value of the ``case-sensitivity'' setting, the query may or may not be case-sensitive. See ``help settings'' for instructions on setting the default case sensitivity.

## See Also

search, settings

# repository -- Repository Control

## Synopsis

     rep                        Displays all repositories
     rep add [name] <location>  Adds a new repository; makes it active
     rep delete <name or num>   Deletes specified repository
     rep describe <name or num> Displays information about the specified
                                repository
     rep rename <name or num> <name>
                                Renames the specified repository to
                                the given name
     rep on <name>              Activates the specified repository
     rep off <name or num>      Removes the repository from the active list
     rep up <name or num>       Moves the specified repository up one
     rep down <name or num>     Moves the specified repository down one

The <name> needs to be put inside doublequotes if it contains any spaces.

## Description

The repository (or rep) command controls two lists or repositories:

The list of ``active'' repositories. This is the list of repositories used by search, install, and upgrade.

The list of all known repositories. You can designate a repository ``inactive'', which means PPM will not use it in any commands.

If no arguments are given, the rep command will list the active repositories defined in the PPM settings. The order is significant: when installing a package, PPM will try the first repository, then the second, and so on, until it find the package you asked for. When searching, PPM merges the results of all the repositories together, so the order is less important (see the search command).

For example, when you enter:

        rep

PPM3 will return something resembling this:

        Repositories:
        [1] ActiveCD
        [2] ActiveState Package Repository
        [ ] An inactive repository

In the example above, entering 'rep off 2' will disable the second repository (the ActiveStat Package Repository). To add another repository:

        rep add [options] <NAME> <LOCATION>

The following options are available for the 'add' command:

  -username

  -password

These options allow you to specify a username and password to be used when logging into a repository. Currently, these are only used for FTP and WWW repositories.

For example:

        rep add "EZE" http://foo.com/MyPPMPackages

with ``EZE'' being the name of the repository (for easy reference) and the location noted by the http location. If you were to enter the rep command again, you would see:

        ppm> rep
        Repositories:
        [1] ActiveCD
        [2] ActiveState Package Repository
        [3] EZE
        [ ] An inactive repository

To move the new repository to the top of the Active list, you would type:

        ppm> rep up EZE
        Repositories:
        [1] ActiveCD
        [2] EZE
        [3] ActiveState Package Repository
        [ ] An inactive repository
        ppm> rep up EZE
        Repositories:
        [1] EZE
        [2] ActiveCD
        [3] ActiveState Package Repository
        [ ] An inactive repository

To disable the ActiveCD repository temporarily, enter the following:

        ppm> rep off ActiveCD
        Repositories:
        [1] EZE
        [2] ActiveState Package Repository
        [ ] ActiveCD
        [ ] An inactive repository

To describe a repository, refer to it either by name, or by the number displayed next to the repository in the Active Repositories list. You must refer to inactive repositories by their full name.

        ppm> rep describe 2
        Describing Active Repository 2:
            Name: ActiveState Package Repository
        Location: http://ppm.ActiveState.com/cgibin/PPM/...
            Type: PPMServer 2.00
        ppm> rep describe ActiveCD
        Describing Inactive Repository:
            Name: ActiveCD
        Location: F:\PPMPackages\5.8plus
            Type: Local Directory

To re-activate the ActiveCD repository, use the rep on command. You must refer to inactive repositories by name, not number.

        ppm> rep on ActiveCD
        Active Repositories:
        [1] EZE
        [2] ActiveState Package Repository
        [3] ActiveCD
        [ ] An inactive repository

## Repository Types

PPM3 supports several types of package repositories:

PPM Server 3

ActiveState's SOAP-driven package server. Because all searches are done server-side, the server can deliver much richer information about packages than other repositories.

    =item 2.

PPM Server 2

The SOAP server designed for PPM version 2. PPM 3.1 ships with the PPM2 repository as well as the PPM3 repository, so you can use either. Simple searches are performed server-side. If your search is too complicated for the server, PPM 3.1 will download the package summary and search by itself.

Web Repositories

Older versions of PPM used non-SOAP repositories (directories full of PPD files accessible using a web browser). Over the history of PPM, there have been several different ways of organising the files so that PPM can search for packages properly. PPM3 tries to download a summary file first -- if that fails, it gets the directory index. It parses the summary or the index, and caches it. Searches are done from the cache.

FTP Repositories

FTP is another way of exposing a directory full of PPD files. PPM3 consideres FTP repositories a subset of Web repositories. Treat them as identical: PPM3 downloads the summary or the ``index'' (file listing in this case), parses it, and then searches from it.

Local Repositories

To support installing packages from the ActiveCD, a local directory can be a repository. PPM searches the files in the directory. All valid path formats are supported, including UNC paths.

# search -- Search for Packages

## Synopsis

     search                Displays list of previous searches
     search <number>       Displays results of search <number>
     search <glob pattern> Performs a new search
     search <field>=<glob> Searches for all packages matching the field.
     search *              Displays all packages in the current repository

The available fields are 'ABSTRACT', 'NAME', 'TITLE', 'AUTHOR', and 'VERSION'. 'NAME' is used when you do not specify a field.

## Description

Use the search command to look through the repository for packages. PPM version 3 provides powerful search functionality. For example:

Search for 'CGI' anywhere in the name:

      search CGI

Example results:

      Apache-CGI
      CGI-Application
      CGI-ArgChecker

Search for 'CGI' at the beginning of the name:

      search CGI*

Example results:

      CGI-ArgChecker
      CGI-Application

Search for all modules authored by someone with 'smith' in their name or email:

      search AUTHOR=smith

Example results:

      Apache-ProxyPass
      Business-ISBN

Search for 'compress' anywhere in the abstract:

      search ABSTRACT=compress

Example results:

      Apache-GzipChain
      IO-Zlib

Search for 'CGI' in the name, or 'web' in the abstract:

      search CGI or ABSTRACT=web

Example results:

      CGI-XMLForm
      HTML-Clean

Search for 'XML' in the name and either 'parser' in the name or 'pars' in the abstract, but not with 'XPath' in the name:

      search XML and (parser or ABSTRACT=pars) and not XPath

Example results:

      XML-Node
      XML-Parser-EasyTree

PPM Server 3 repositories only: search by module name, even if unrelated to the containing package:

      search Data::Grove

    Example results:

      libxml-perl

Browse all packages in the repository:

      search *

Example results:

      Affix-Infix2Postfix
      AI-Fuzzy
      [many more...]

Recall previous searches using the 'search <number>' command. PPM stores searches for each session until you exit PPM.

Some package names or versions are too long to be displayed in the search results. If a name is too long, you will see a '~' (tilde) as the last visible character in the column. You can use describe to view detailed information about such packages.

## Search Results

When you type a command like `search XML`, PPM searches in each of the Active Repositories (see the repository command) for your package. The results are merged into one list, and duplicates (packages found in more than one repository) are hidden.

You can control what fields PPM shows for each package. The fields each have a built-in weight, which is used to calculate how wide to make each field based on the width of your screen. Information that doesn't fit into a field is truncated, and a tilde (`~`) character is displayed in the last column of the field.

Let's get down to an example:

        ppm> search XML
        Searching in Active Repositories
            1. CGI-XMLForm           [0.10] Extension to CGI.pm which
            2. Data-DumpXML          [1.01] Dump arbitrary data structures
            3. DBIx-XML_RDB          [0.05] Perl extension for creating XML
            4. DBIx-XMLMessage       [0.03] XML Message exchange between DBI
            5. GoXML-XQI            [1.1.4] Perl extension for the XML Query
            6. Language-DATR-DATR2~ [0.901] manipulate DATR .dtr, XML, HTML,
            7. libxml-perl           [0.07] support for deeply nested
            8. Mail-FilterXML         [0.1] Undetermined
            9. Mail-XML              [0.03] Adds a toXML() method to
           10. Pod-XML               [0.93] Module to convert POD to XML

As you can see, the three fields being displayed are:

NAME

The package name

VERSION

The package version

ABSTRACT

The package abstract

You can customize the view somewhat. If you want to view the authors, but not the abstract, you can run the same search command after using set to change the fields:

        ppm> set fields="NAME VERSION AUTHOR"
        Setting 'fields' set to 'name version author'.
        ppm> search XML
        Using cached search result set 1.
            1. CGI-XMLForm         [0.10] Matt Sergeant (matt@sergeant.org)
            2. Data-DumpXML        [1.01] Gisle Aas (gisle@aas.no)
            3. DBIx-XML_RDB        [0.05] Matt Sergeant (matt@sergeant.org)
            4. DBIx-XMLMessage     [0.03] Andrei Nossov (andrein@andrein.com)
            5. GoXML-XQI          [1.1.4] Matthew MacKenzie (matt@goxml.com)
            6. Language-DATR-DAT~ [0.901] Lee Goddard (lgoddard@cpan.org)
            7. libxml-perl         [0.07] Ken MacLeod (ken@bitsko.slc.ut.us)
            8. Mail-FilterXML       [0.1] Matthew MacKenzie (matt@goxml.com)
            9. Mail-XML            [0.03] Matthew MacKenzie (matt@goxml.com)
           10. Pod-XML             [0.93] Matt Sergeant (matt@sergeant.org)

You can change the order in which the results are sorted, and what columns are displayed. The settings fields and sort-field changes this. You can sort by any valid field name (even fields which are not displayed). See the settings command for the valid field names.

PPM always hides ``duplicate'' results. It decides whether a result is duplicated based on the fields being displayed. If the same package is found in more than one repository, but you don't have the REPOSITORY field showing, PPM will only list the package once.

# settings -- View or Set PPM Settings

## Synopsis

     set                 Displays current settings
     set <name>          Displays the current setting of the given <name>
     set <name> <value>  Sets <name> to <value>
     unset <name>        Sets <name> to a "false" value: '0' for boolean
                         settings, '' for others.

## Description

The settings command is used to configure the default PPM environment. Settings such as the number of lines displayed per page, case-sensitivity, and the log file are configured using the settings command.

Setting names may be abbreviated to uniqueness. For example, instead of typing 'case-sensitivity', you may type 'case'.

Available settings:

     NAME                VALUE           DESCRIPTION
     case-sensitivity    1 or 0      If 1, searches and queries are
                                     case-sensitive.

     download-chunksize  integer     If this is set to a positive,
                                     non-zero integer, PPM updates the
                                     status after "integer" of bytes
                                     transferred during an install or
                                     upgrade.

     fields              fields      A space-separated list of fields to
                                     display in the search results. Valid
                                     fields are:

                                       ABSTRACT
                                       AUTHOR
                                       NAME
                                       REPOSITORY
                                       TITLE
                                       VERSION

                                     Usually, NAME and TITLE have the same
                                     content.

     follow-install      1 or 0      See 'help install' for details.

     force-install       1 or 0      See 'help install' for details.

     install-verbose     1 or 0      If 0, suppresses most output when
                                     installing packages. If 1, PPM prints
                                     each file as it is installed.

     pager               path        The path to an external pager program
                                     used to page long displays. If blank,
                                     or set to 'internal', the internal
                                     pager is used. If 'none', paging
                                     is disabled.

     profile-track       1 or 0      If 1, PPM arranges to have the
                                     ASPN server track your PPM profile.
                                     This means that every time your install
                                     or remove a package, your profile is
                                     updated on the server. If 0, you must
                                     manually save your profile using
                                     'profile save'.

     prompt-context      1 or 0      If 1, enables the prompt to change
                                     based on the current state of PPM, i.e
                                     showing current target, query, etc.

     prompt-slotsize     integer     If prompt-verbose is 1, this defines
                                     the width of each slot in the prompt.
                                     For instance, 4 means to use 4
                                     character-wide slots.

     prompt-verbose      1 or 0      If 0, uses numbers to represent the
                                     context in the prompt; much shorter.
                                     If prompt-context is set to 0, there
                                     will be no visible difference in the
                                     'prompt-verbose' settings.

     rebuild-html        1 or 0      If 0, suppresses regeneration of HTML
                                     documentation when packages are
                                     installed. If 1, enables HTML to be
                                     generated from POD documentation.
                                     Enabling this option may slow down
                                     package installation.

     remove-verbose      1 or 0      If 0, suppresses most output when
                                     removing packages. If 1, prints the
                                     name of each file as it is removed.

     sort-field          field       The field by which to sort search and
                                     query results. Valid fields are
                                     ABSTRACT, AUTHOR, NAME, TITLE
                                     and VERSION.

     tempdir             path        A temporary directory into which
                                     packages are downloaded and expanded
                                     during 'install' and 'upgrade'.

     trace-file          path        A file to which PPM will write tracing
                                     information.

     trace-level         integer     If 0 or negative, tracing is disabled.
                                     Positive, non-zero integers result in
                                     tracing information being written to
                                     'trace-file'. Higher settings of
                                     'trace-level' result in more trace
                                     information.

     upgrade-verbose     1 or 0      If 0, suppresses most output when
                                     upgrading packages. If 1, prints the
                                     name of each file as it is upgraded.

For information about migrating options used by previous versions of PPM, see 'help ppm_migration'.

When you assign a value to a setting, PPM saves the configuration. Therefore, setting values persist across sessions.

# targets -- View Target Installer Backends

## Synopsis

     target                      Displays a list of backend targets
     target <number>             Sets <number> as default backend target
     target [select] <name or num>
                                 Sets <name or num> as default backend target
     target describe [name or num]
                                 Describes the given (or default) target
     target set <key> <val>      Sets the target's <key> to <val>
     target rename <name or num> <name>
                                 Renames the given target to <name>

## Description

The target is the destination location of the install routine, such as the directory where the packages are installed when they're downloaded from the repository. For example:

        target

returns:

        Targets:
          1. ActivePerl 618
        * 2. ActivePerl 629

This shows that there are two available targets, and that the second target (ActivePerl 629) is currently the default (as shown by the asterisk). Using multiple targets, you can manage multiple installations of Perl from a single command-line.

# tree -- Show Dependency Tree for Packages

## Synopsis

     tree                Displays the dependency-tree of the current
                         or default package
     tree <number>       Displays the dependency-tree of the given <number>
     tree <range>        Displays a <range> of dependency-trees
     tree <package name> Displays the dependency-tree of the named package
     tree <url>          Displays the dependency-tree for the
                         package at <url>
     tree <glob pattern> Performs a new search using <glob pattern>

## Description

The tree command is used to show the ``dependency tree'' of a given package (additional packages that are required by the current package). For example:

        tree SOAP-lite

returns:

        ====================
        SOAP-Lite 0.51
        |__MIME-tools 5.316
        |   |__MailTools 1.15
        |   \__IO-stringy 1.216
        |
        \__MIME-Lite 2.105
        ====================

SOAP-Lite requires four other packages.

When tree is called without a <name> or <number> switch, the command will return the dependency tree of the first package in the default search result. If there is no default search, you will be requested to use search to find a package.

# remove, uninstall -- Uninstalls Installed Packages

## Synopsis

     remove              Deletes default installed package
     remove <number>     Deletes installed package <number>
     remove <range>      Deletes a <range> of installed packages
     remove <name>       Deletes a packages by a specific name
     remove <url>        Deletes the package located at <url>

## Description

The remove and uninstall commands function identically. They are used to delete packages from the current target (specified using the target command). If profile tracking is enabled, (see 'help profile') the current PPM profile on ASPN will be updated.

Packages can be removed by package name, by their numerical listing, or by specifying a URL to a PPD file. For example:

        remove XML-DOM

will delete the XML-DOM package from the target.

To remove package by number:

        remove 6

and the sixth package in your current query will be removed. If no queries have been run in the current PPM session, you will be prompted to use a query to find a package before deleting it. Remember that removing packages clears all previous query requests, since the numerical sequence stored in any query will no longer be true once `package(s)` have been removed.

Packages can also be removed in groups. For example:

        remove 4-7

will delete packages 4, 5, 6, and 7 from your target. You can also skip packages:

        remove 3-5, 7

this will delete packages 3, 4, 5 and 7, but will leave 6 intact. Remember to run a new query whenever you remove a package from your target.

If you specify the package as a URL, PPM determines the package name from the URL and removes that.

Please note that wildcards like ``*'' or ``?'' cannot be used with the remove command.

## See Also

profile

# upgrade -- List or install available upgrades

## Synopsis

     upgrade [*]         Lists upgrades available for all installed packages
     upgrade <number>    Lists upgrades for installed package <number>
     upgrade <range>     Lists upgrades for a <range> of installed packages
     upgrade <package>   Lists upgrades for the named <package>

## Description

The upgrade command lists package upgrades that are available on the active repositories for packages installed on your system. To install available upgrades, use the '--install' option.

If profile tracking is enabled, (see 'help profile'), your profile will be updated to reflect changes to any packages which are upgraded.

There are several modifiers to the upgrade command:

-install
  Installs, rather than lists, available upgrades

-precious
  Allows upgrading of ``precious'' packages

-force
  See 'help install'

-follow
  See 'help install'

By default, 'upgrade' typed by itself only lists the available upgrades. To actually install all available upgrades, enter

        upgrade -install

To enable upgrading ``precious'' packages, enter

        upgrade -install -precious

## See Also

profile

# version -- print the name and version of PPM.

Prints the name and version of PPM3.

# EXTRA HELP TOPICS

The following sections describe extra help topics available in PPM. An extra help topic is not the name of a command -- it is only available as a help page. The following help is available via the online help feature by typing 'help' in PPM3.

# ppm migration -- PPM Migration Guide

## Description

Those familiar with PPM version 2 should appreciate the extended functionality of PPM version 3, including the command-line history, autocomplete and profiles. Some PPM version 2 commands are different in PPM version 3. Examples of command changes include:

Adding a repository

PPM2:

      set repository my_repository http://my/repository

PPM3:

      repository add my_repository http://my/repository

Removing a repository

PPM2:

      set repository --remove my_repository

PPM3:

      repository del my_repository

Setting the temporary directory

PPM2:

      set build DIRECTORY

PPM3

      set tempdir DIRECTORY

Setting frequency of download updates

PPM2:

      set downloadstatus NUMBER

PPM3:

      set download-chunksize NUMBER

Changing the installation root directory:

PPM2:

      set root DIRECTORY

PPM3:

      target set root DIRECTORY

Listing all installed packages:

PPM2:

      query

PPM3:

      query *

Listing all packages on server:

PPM2:

      search

PPM3:

      search *

Enabling HTML documentation generation:

PPM2:

      set rebuildhtml 1

PPM3:

      set rebuild-html 1

# prompt -- information about the PPM3 prompt

## Description

The PPM prompt can tell you six things:

1. )
The current repository;

2. )
The current target;

3. )
The last search you made on the current repository;

4. )
The last query you made on the current target;

5. )
The last package you described from this repository; and,

6. )
The last package you described from this target.

To enable the prompt to tell you this information, you must set 'prompt-context' to '1'. The following examples all assume this setting.

## Examples

Repository and Target:

Set 'prompt-context' The prompt will resemble:

        ppm:1:1>

In this case, the first '1' means that the first repository is selected. The second '1' means the first target is selected. You can prove this by adding another repository and switching to it:

        ppm:1:1> rep add TEMP http://my/repository
        Repositories:
          1. ActiveState Package Repository
        * 2. TEMP
        ppm:1:1> rep 2
        Repositories:
          1. ActiveState Package Repository
        * 2. TEMP
        ppm:2:1>

The same is true for targets. If you have multiple versions of Perl installed, when you swtich to a different target the second number reflects the change.

If you delete all the repositories, the repository number changes to '?'. The same goes for targets. If either item is indicated by a question mark, you must configure a repository or target before proceeding.

Search and Query:

PPM stores searches and search results from in the current session. The prompt displays the search number:

        ppm:1:1> search Text
        [results displayed here]
        ppm:1:1:s1>

The 's1' indicates that the last search you performed can be viewed again by entering 'search 1'. Type 'search' with no arguments to view the list of cached searches:

        ppm:1:1:s1> search
        Search Result Sets:
        * 1. Text

If you then enter 'search 1', you will see the same results as when you typed 'search Text' earlier. If you search for something else ('search Parse') then the number will change to 's2':

        ppm:1:1:s1> search Parse
        [results displayed here]
        ppm:1:1:s2>

The same indicators apply to the query command. When you run a query, a numerical indicator displays the current query:

        ppm:1:1:s1> query PPM
        [results displayed here]
        ppm:1:1:s1:q1>

You can view the past queries with 'query', and view results by querying a particular number.

Describe and Properties:

When you use the describe command with the numerical switch (to view package information based on the package number in the last search or query), PPM sets that index to the current index. If you use the desribe command with the name switch, and the name is found within the current result, the index is set to the current one. If no package is found, PPM creates a new search or query on-the-fly, and sets it as the current search or query.

For example:

        ppm:1:1> search Text
        1. Convert-Context  [0.501]     an Attributed Text data type
        2. gettext          [1.01]      message handling functions
        3. HTML-FromText    [1.005]     mark up text as HTML
        4. HTML-Subtext     [1.03]      Perform text substitutions on an HTML
                                        template
        5. Locale-Maketext  [0.18]      framework for software localization
        ppm:1:1:s1>

        ppm:1:1:s1> describe 1
        ====================
        Package 1:
            Name: Convert-Context
         Version: 0.501
          Author: Martin Schwartz (martin@nacho.de)
        Abstract: an Attributed Text data type
        Implementations:
               1. i686-linux-thread-multi
               2. MSWin32-x86-multi-thread
               3. sun4-solaris-thread-multi
        ====================
        ppm:1:1:s1:sp1>

The last prompt has an extra 'sp1'. That stands for 'search package 1', and it means that PPM considers 'Convert-Context' to be the default package. If you now type 'describe' or 'install' with no arguments, PPM will apply your command to this package.

If you go back to where you had no default package selected:

        ppm:1:1> search Text
        1. Convert-Context  [0.501]     an Attributed Text data type
        2. gettext          [1.01]      message handling functions
        3. HTML-FromText    [1.005]     mark up text as HTML
        4. HTML-Subtext     [1.03]      Perform text substitutions on an HTML
                                        template
        5. Locale-Maketext  [0.18]      framework for software localization
        ppm:1:1:s1>

...and you describe 'Locale-Maketext', you will see this:

        ppm:1:1:s1> describe Locale-Maketext
        ====================
            Name: Locale-Maketext
         Version: 0.18
          Author: Sean M. Burke (sburke@cpan.org)
        Abstract: framework for software localization
        Prerequisites:
               1. I18N-LangTags 0.13
        Implementations:
               1. i686-linux-thread-multi
               2. MSWin32-x86-multi-thread
               3. sun4-solaris-thread-multi
        ====================
        ppm:1:1:s1:sp5>

Notice that the correct package got selected, even though you specified it by name.

This behaviour also applies to the query and properties commands.

## See Also

describe, properties, query, search

# quickstart -- a beginners' guide to PPM3

## Description

PPM (Programmer's Package Manager) is a utility for managing software ``packages''. A package is a modular extension for a language or a software program. Packages reside in repositories. PPM can use three types of repositories:

     1) A directory on a CD-ROM or hard drive in your computer
     2) A website
     3) A remote Repository Server (such as ASPN)

Common Commands:

To view PPM help:

      help
      help <command>

To view the name of the current repository:

      repository

To search the current repository:

      search <keywords>

To install a package:

      install <package_name>

Most commands can be truncated; as long as the command is unambiguous, PPM will recognize it. For example, 'repository add foo' can be entered as 'rep add foo'.

PPM features user profiles, which store information about installed packages. Profiles are stored as part of your ASPN account; thus, you can easily maintain package profiles for different languages, or configure one machine with your favorite packages, and then copy that installation to another machine by accessing your ASPN profile.

For more information, type 'help profile' at the PPM prompt.

# unicode -- Notes About Unicode Author Names

## Description

CPAN author names are defined to be in Unicode. Unicode is an international standard ISO 10646, defining the Universal Character Set (UCS). UCS contains all characters of all other character set standards. For more information about Unicode, see http://www.unicode.org/.

The CPAN authors website is located at your local CPAN mirror under /authors/00whois.html. For example, you can view it at http://www.cpan.org/authors/00whois.html. This page can be rendered by Mozilla 0.9.8 and Internet Explorer 5.0, but you may have to install extra language packs to view all the author names.

By default, PPM3 renders all characters as Latin1 when it prints them to your console. Characters outside the Latin1 range (0-255) are not printed at all.

If your console can render UTF-8 characters, you can tell PPM3 not to recode characters by using one of the following environment variables:

  LC_ALL

  LC_CTYPE

  LANG

  PPM_LANG

PPM3 requires one of these environment variables to contain the string 'UTF-8'. For example, the following setting make PPM3 print beautifully-formatted authors in RedHat Linux 7.2 (assumes you're using a Bourne shell):

      $ PPM_LANG='en_US.UTF-8' xterm -u8 -e ppm3

Linux and Solaris users should refer to xterm for more information about setting up xterm to display UTF-8 characters.

# BUGS

If you find a bug in PPM, please report it at this URL:

      http://bugs.activestate.com/enter_bug.cgi?set_product=PPM

Bugs regarding the ActiveState Package Repository (particularly missing or out-of-date packages) should be sent via email to this email address:

      mailto:ppm-request@ActiveState.com

# SEE ALSO

For information about the older version of PPM, see ppm.

# AUTHOR

ActiveState Corporation (support@ActiveState.com)

# COPYRIGHT

Copyright (C) 2001, 2002, ActiveState Corporation. All Rights Reserved.

ppm3 - Programmer's Package Manager, version 3.1