10.6. PEAR Commands
In this section, you learn all the PEAR Installer commands for installation and maintenance of packages on your system. For each of the commands, you will have the output of pear help command, and a thorough explanation of every option the command offers. If you notice commands mentioned in some of the help text that you do not find covered here, those commands are used by PEAR package maintaners during development. The development commands are covered in Chapter 12.
10.6.1. pear install
This command takes the content of a package file and installs files in your designated PEAR directories. You may specify the package to install as a local file, just the package name or as a full HTTP URL. Here's the help text for pear install:
$ pear help install pear install [options] <package> ... Installs one or more PEAR packages. You can specify a package to install in four ways: "Package-1.0.tgz" : installs from a local file "http://example.com/Package-1.0.tgz" : installs from anywhere on the net. "package.xml" : installs the package described in package.xml. Useful for testing, or for wrapping a PEAR package in another package manager such as RPM. "Package" : queries your configured server (pear.php.net) and downloads the newest package with the preferred quality/state (stable). More than one package may be specified at once. It is ok to mix these four ways of specifying packages. Options: -f, --force will overwrite newer installed packages
The -force option lets you install the package even if the same release or a newer release is already installed. This is useful for repairing broken installs, or during testing.
-n, --nodeps ignore dependencies, install anyway
Use this option to ignore dependencies and pretend that they are already installed. Use it only if you understand the consequences, the installed package may not work at all.
-r, --register-only do not install files, only register the package as installed
The -register-only option makes the installer list your package as installed, but it does not actually install any files. The purpose of this is to make it possible for non-PEAR package managers to also register packages as installed in the PEAR package registry. For example, if you install DB (the PEAR database layer) with an RPM, all the files are installed and you can use it, but the pear list command does not show that it is installed because RPM does not (by default) update the PEAR package registry. But, if the RPM package has a post-install command that runs pear -register-only package.xm, the package will be registered, both from RPM's and PEAR's point of view.
-s, --soft soft install, fail silently, or upgrade if already installed
This option is another way of saying, "Please give me the latest version of this package." If the package is not installed already, it will be installed. If the package is installed but you are specifying a package tarball with a newer package, or the latest online version is newer, the package will be upgraded. The difference between pear install -s and pear upgrade is that upgrade upgrades only if the package is already installed.
-B, --nobuild don't build C extensions
If you are installing a package that is a mix of PHP and C code and don't want to build and install the C code, or you simply want to test-install a package with C code, use -nobuild.
-Z, --nocompress request uncompressed files when downloading
If your PHP build does not include the zlib extension, PHP cannot uncompress gzipped package files. The installer detects this automatically, and will download non-gzipped packages when necessary. But, if this detection doesn't work, you can override it with the -nocompres option.
-R DIR, --installroot=DIR root directory used when installing files (ala PHP's INSTALL_ROOT)
This option is useful when you are installing PEAR packages from a script or using another package manager. All file names created by the installer will have DIR prepended.
--ignore-errors force install even if there were errors
If there are errors in a package and the installer refuses to go ahead and install it, you can use the ignore-errors option to force installation. There is a risk of an inconsistent install when using this option, so use it with care!
-a, --alldeps install all required and optional dependencies
Use this option to automatically download and install any dependencies.
-o, --onlyreqdeps install all required dependencies
Some packages have optional dependencies, which means a dependency that exists to use optional features of the package. If you want to satisfy all the dependencies, but don't need the optional features, use this option.
Here are some examples of typical use. First, a plain example installing a package with no dependencies:
$ pear install Console_Table downloading Console_Table-1.0.1.tgz ... Starting to download Console_Table-1.0.1.tgz (3,319 bytes) ....done: 3,319 bytes install ok: Console_Table 1.0.1
Here is an example of installing a package with many optional dependencies, but pulling only the packages that are required:
$ pear install o HTML_QuickForm downloading HTML_Progress-1.1.tgz ... Starting to download HTML_Progress-1.1.tgz (163,298 bytes) ...................................done: 163,298 bytes skipping Package 'html_progress' optional dependency 'HTML_CSS' skipping Package 'html_progress' optional dependency 'HTML_Page' skipping Package 'html_progress' optional dependency 'HTML_QuickForm' skipping Package 'html_progress' optional dependency 'HTML_QuickForm_Controller'skipping Package 'html_progress' optional dependency 'Config' downloading HTML_Common-1.2.1.tgz ... Starting to download HTML_Common-1.2.1.tgz (3,637 bytes) ...done: 3,637 bytes install ok: HTML_Common 1.2.1 Optional dependencies: package 'HTML_CSS' version >= 0.3.1 is recommended to utilize some features. package 'HTML_Page' version >= 2.0.0RC2 is recommended to utilize some features.package 'HTML_QuickForm' version >= 3.1.1 is recommended to utilize some features. package 'HTML_QuickForm_Controller' version >= 0.9.3 is recommended to utilize some features. package 'Config' version >= 1.9 is recommended to utilize some features. install ok: HTML_Progress 1.1
Finally, this example installs a package and all dependencies, looking for releases of beta or better quality:
$ pear d preferred_state=beta install a Services_Weather downloading Services_Weather-1.2.2.tgz ... Starting to download Services_Weather-1.2.2.tgz (29,205 bytes) .........done: 29,205 bytes downloading Cache-1.5.4.tgz ... Starting to download Cache-1.5.4.tgz (30,690 bytes) ...done: 30,690 bytes downloading HTTP_Request-1.2.1.tgz ... Starting to download HTTP_Request-1.2.1.tgz (12,021 bytes) ...done: 12,021 bytes downloading SOAP-0.8RC3.tgz ... Starting to download SOAP-0.8RC3.tgz (67,608 bytes) ...done: 67,608 bytes downloading XML_Serializer-0.9.2.tgz ... Starting to download XML_Serializer-0.9.2.tgz (12,340 bytes) ...done: 12,340 bytes downloading Net_URL-1.0.11.tgz ... Starting to download Net_URL-1.0.11.tgz (4,474 bytes) ...done: 4,474 bytes downloading Mail_Mime-1.2.1.tgz ... Starting to download Mail_Mime-1.2.1.tgz (15,268 bytes) ...done: 15,268 bytes downloading Net_DIME-0.3.tgz ... Starting to download Net_DIME-0.3.tgz (6,740 bytes) ...done: 6,740 bytes downloading XML_Util-0.5.2.tgz ... Starting to download XML_Util-0.5.2.tgz (6,540 bytes) ...done: 6,540 bytes install ok: Mail_Mime 1.2.1 install ok: Net_DIME 0.3 install ok: XML_Util 0.5.2 install ok: Net_URL 1.0.11 install ok: XML_Serializer 0.9.2 install ok: HTTP_Request 1.2.1 install ok: Cache 1.5.4 install ok: SOAP 0.8RC3 install ok: Services_Weather 1.2.2
10.6.2. pear list
The pear list command lists the contents of either your package registry or a single package. First, let's list the currently installed packages to see how the Date package is doing:
INSTALLED PACKAGES: =================== PACKAGE VERSION STATE Archive_Tar 1.1 stable Cache 1.4 stable Console_Getopt 1.2 stable Console_Table 1.0.1 stable DB 1.6.3 stable Date 1.4.2 stable HTTP_Request 1.2.1 stable Log 1.2 stable Mail 1.1.2 stable Mail_Mime 1.2.1 stable Net_DIME 0.3 beta Net_SMTP 1.2.6 stable Net_Socket 1.0.2 stable Net_URL 1.0.11 stable PEAR 1.3.1 stable PHPUnit2 2.0.0beta1 beta SOAP 0.8RC3 beta XML_Parser 1.1.0 stable XML_RPC 1.1.0 stable XML_Serializer 0.9.2 beta XML_Util 0.5.2 stable
To inspect the contents of the recently installed Date package, use the list command:
$ pear list Net_Socket INSTALLED FILES FOR NET_SOCKET ============================== TYPE INSTALL PATH php /usr/local/lib/php/Net/Socket.php
This package contains only php files. The PEAR package contains different types of files. The following example also illustrates how "data" files are installed with the package name as part of the file path:
$ pear list PEAR INSTALLED FILES FOR PEAR ======================== TYPE INSTALL PATH data /usr/local/lib/php/data/PEAR/package.dtd data /usr/local/lib/php/data/PEAR/template.spec php /usr/local/lib/php/PEAR.php php /usr/local/lib/php/System.php php /usr/local/lib/php/PEAR/Autoloader.php php /usr/local/lib/php/PEAR/Command.php php /usr/local/lib/php/PEAR/Command/Auth.php php /usr/local/lib/php/PEAR/Command/Build.php php /usr/local/lib/php/PEAR/Command/Common.php php /usr/local/lib/php/PEAR/Command/Config.php php /usr/local/lib/php/PEAR/Command/Install.php php /usr/local/lib/php/PEAR/Command/Package.php php /usr/local/lib/php/PEAR/Command/Registry.php php /usr/local/lib/php/PEAR/Command/Remote.php php /usr/local/lib/php/PEAR/Command/Mirror.php php /usr/local/lib/php/PEAR/Common.php php /usr/local/lib/php/PEAR/Config.php php /usr/local/lib/php/PEAR/Dependency.php php /usr/local/lib/php/PEAR/Downloader.php php /usr/local/lib/php/PEAR/ErrorStack.php php /usr/local/lib/php/PEAR/Frontend/CLI.php php /usr/local/lib/php/PEAR/Builder.php php /usr/local/lib/php/PEAR/Installer.php php /usr/local/lib/php/PEAR/Packager.php php /usr/local/lib/php/PEAR/Registry.php php /usr/local/lib/php/PEAR/Remote.php php /usr/local/lib/php/OS/Guess.php script /usr/local/bin/pear php /usr/local/lib/php/pearcmd.php
10.6.3. pear info
The pear info command displays information about an installed package, a package tarball, or a package definition (XML) file. This example shows the information about the XML-RPC package:
$ pear info XML_RPC About XML_RPC-1.1.0 =================== Provides Classes: Package XML_RPC Summary PHP implementation of the XML-RPC protocol Description This is a PEAR-ified version of Useful inc's XML-RPC for PHP. It has support for HTTP transport, proxies and authentication. Maintainers Stig S?ther Bakken <firstname.lastname@example.org> (lead) Version 1.1.0 Release Date 2003-03-15 Release License PHP License Release State stable Release Notes - Added support for sequential arrays to XML_RPC_encode() (mroch) - Cleaned up new XML_RPC_encode() changes a bit (mroch, pierre) - Remove "require_once 'PEAR.php'", include only when needed to raise an error - Replace echo and error_log() with raiseError() (mroch) - Make all classes extend XML_RPC_Base, which will handle common functions (mroch) - be tolerant of junk after methodResponse (Luca Mariano, mroch) - Silent notice even in the error log (pierre) - fix include of shared xml extension on win32 (pierre) Last Modified 2004-05-03
If you have downloaded a package file (.tgz file), you may also run pear info on it to display information about the contents without installing the package first; for example:
$ pear info XML-RPC-1.1.0.tgz
You can even specify a full URL to a package you want to view:
$ pear info http://www.example.com/packages/Foo_Bar-4.2.tgz
See also the remote-info command.
10.6.4. pear list-all
While pear list displays all the packages installed on your system, pear list-all displays an alphabetically sorted list of all packages with the latest stable version, and which version you have installed, if any. The full output of this command is long because it lists every package that has a stable release.
ALL PACKAGES: ============= PACKAGE LATEST LOCAL APC 2.0.3 Cache 1.5.4 1.4 Cache_Lite 1.3 apd 0.4p2 ...truncated... XML_Transformer 1.0.1 XML_Tree 1.1 XML_Util 0.5.2 0.5.2 PHPUnit2 2.0.0beta1 Net_DIME 0.3 XML_Serializer 0.9.2 SOAP 0.8RC3
10.6.5. pear list-upgrades
The pear list-upgrades command compares the version you have installed containing the newest version with the release state you have configured (see the preferred_state configuration parameter). Here's an example:
$ pear list-upgrades AVAILABLE UPGRADES (STABLE): ============================ PACKAGE LOCAL REMOTE SIZE Cache 1.4 (stable) 1.5.4 (stable) 30kB DB 1.6.3 (stable) 1.6.4 (stable) 90kB Log 1.2 (stable) 1.8.4 (stable) 29kB Mail 1.1.2 (stable) 1.1.3 (stable) 13.2kB
The version listed here is not the one you have installed, but the one you will upgrade to if you use the upgrade command.
10.6.6. pear upgrade
The pear upgrade command replaces one or more installed packages with a newer release, if a newer release can be found. As with many other commands taking a package argument, you may refer to the package just by name, the URL or name of a tarball, or the URL or name of a package description (XML) file. This section only demonstrates specifying the package by name because that is by far the most common usage.
In the list-upgrades example, you saw a few packages where newer releases were available. Upgrade the Log package:
$ pear upgrade Log downloading Log-1.8.4.tgz ... Starting to download Log-1.8.4.tgz (29,453 bytes) .........done: 29,453 bytes Optional dependencies: 'sqlite' PHP extension is recommended to utilize some features upgrade ok: Log 1.8.4
The upgrade command has the same options as the install command, with the exception that the S / --soft option is missing. The options are listed here; refer to the install command, shown previously, for a more detailed description.
$ pear help upgrade pear upgrade [options] <package> ... Upgrades one or more PEAR packages. See documentation for the "install" command for ways to specify a package. When upgrading, your package will be updated if the provided new package has a higher version number (use the -f option if you need to upgrade anyway). More than one package may be specified at once. Options: -f, --force overwrite newer installed packages -n, --nodeps ignore dependencies, upgrade anyway -r, --register-only do not install files, only register the package as upgraded -B, --nobuild don't build C extensions -Z, --nocompress request uncompressed files when downloading -R DIR, --installroot=DIR root directory used when installing files (ala PHP's INSTALL_ROOT) --ignore-errors force install even if there were errors -a, --alldeps install all required and optional dependencies -o, --onlyreqdeps install all required dependencies
10.6.7. pear upgrade-all
For your convenience, the upgrade-all command provides a combination of the list-upgrades and upgrade commands, upgrading every package that has a newer release available.
The command-line options available are
-n, --nodeps ignore dependencies, upgrade anyway -r, --register-only do not install files, only register the package as upgraded -B, --nobuild don't build C extensions -Z, --nocompress request uncompressed files when downloading -R DIR, --installroot=DIR root directory used when installing files (ala PHP's INSTALL_ROOT) --ignore-errors force install even if there were errors
See the install command for a description of each of these options.
If you have followed the examples in this chapter, you have still not upgraded three out of the four packages that list-upgrades reported as having newer releases. Upgrade them all at once like this:
$ pear upgrade-all Will upgrade cache Will upgrade db Will upgrade mail downloading Cache-1.5.4.tgz ... Starting to download Cache-1.5.4.tgz (30,690 bytes) .........done: 30,690 bytes downloading DB-1.6.4.tgz ... Starting to download DB-1.6.4.tgz (91,722 bytes) ...done: 91,722 bytes downloading Mail-1.1.3.tgz ... Starting to download Mail-1.1.3.tgz (13,415 bytes) ...done: 13,415 bytes upgrade-all ok: Mail 1.1.3 upgrade-all ok: DB 1.6.4 upgrade-all ok: Cache 1.5.4 Optional dependencies: 'sqlite' PHP extension is recommended to utilize some features upgrade-all ok: Log 1.8.4
10.6.8. pear uninstall
To delete a package, you must uninstall it. Here's an example:
$ pear uninstall Cache Warning: Package 'services_weather' optionally depends on 'Cache' uninstall ok: Cache
The uninstall command has three options:
pear uninstall [options] <package> ... Uninstalls one or more PEAR packages. More than one package may be specified at once. Options: -n, --nodeps ignore dependencies, uninstall anyway -r, --register-only do not remove files, only register the packages as not installed -R DIR, --installroot=DIR root directory used when installing files (ala PHP's INSTALL_ROOT) --ignore-errors force install even if there were errors
These options all correspond to the same options to the install command.
10.6.9. pear search
If you want to install a package but don't remember what it was called, or just wonder if there is a package that does X, you can search for it with the pear search command, which does a substring search in package names. Here's an example:
$ pear search xml MATCHED PACKAGES: ================= PACKAGE LATEST LOCAL XML_Beautifier 1.1 Class to format XML documents. XML_CSSML 1.1 The PEAR::XML_CSSML package provides methods for creating cascading style sheets (CSS) from an XML standard called CSSML. XML_fo2pdf 0.98 Converts a xsl-fo file to pdf/ps/pcl text/etc with the help of apache-fop XML_HTMLSax 2.1.2 A SAX based parser for HTML and other badly formed XML documents XML_image2svg 0.1 Image to SVG conversion XML_NITF 1.0.0 Parse NITF documents. XML_Parser 1.1.0 1.1.0 XML parsing class based on PHP's bundled expat XML_RSS 0.9.2 RSS parser XML_SVG 0.0.3 XML_SVG API XML_Transformer 1.0.1 XML Transformations in PHP XML_Tree 1.1 Represent XML data in a tree structure XML_Util 0.5.2 0.5.2 XML utility class. XML_RPC 1.1.0 1.1.0 PHP implementation of the XML-RPC protocol
The output is displayed in four columns: package name, latest version available online, locally installed version (or blank if you do not have that package installed), and a short description.
10.6.10. pear remote-list
This command displays a list of all packages and stable releases that are available in the package repository:
$ pear remote-list AVAILABLE PACKAGES: =================== PACKAGE VERSION APC 2.0.3 apd 0.4p2 Archive_Tar 1.1 Auth 1.2.3 Auth_HTTP 2.0 Auth_PrefManager 1.1.2 Auth_RADIUS 1.0.4 Auth_SASL 1.0.1 Benchmark 1.2.1 bz2 1.0 Cache 1.5.4 ...
The difference from list-all is that remote-list only shows the last available version, while list-all also shows which releases you have installed.
This command obeys your preferred_state configuration setting, which defaults to stable. All the packages and releases in the output of the previous example are tagged as stable.
You may temporarily set preferred_state for just one command. The following example shows all packages that are of alpha quality or better:
$ pear d preferred_state=alpha remote-list AVAILABLE PACKAGES: =================== PACKAGE VERSION APC 2.0.3 apd 0.4p2 Archive_Tar 1.1 Archive_Zip 0 Auth 1.2.3 Auth_Enterprise 0 Auth_HTTP 2.1.0RC2 Auth_PrefManager 1.1.2 Auth_RADIUS 1.0.4 Auth_SASL 1.0.1 bcompiler 0.5 Benchmark 1.2.1 bz2 1.0 ...
As you can see, some new packages showed up: Archive_Zip, and Auth_Enterprise (which did not have any releases at all at this point), and bcompiler 0.5.
10.6.11. pear remote-info
To display detailed information about a package you have not installed, use the pear remote-info command.
$ pear remote-info apc PACKAGE DETAILS: ================ Latest 2.0 Installed - no - ackage APC License PHP Category Caching Summary Alternative PHP Cache Description APC is the Alternative PHP Cache. It was conceived of to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.
The package description shown by the remote-info command is taken from the newest release of the package.
10.6.12. pear download
The pear install command does not store the package file it downloads anywhere. If all you want is the package tarball (for installing later or something else), you can use the pear download command:
$ pear download DB File DB-1.3.tgz downloaded (59332 bytes)
By default, you will receive the latest release matching your preferred_state configuration parameter. If you want to download a specific release, give the full file name instead:
$ pear download DB-1.2.tgz File DB-1.2.tgz downloaded (58090 bytes)
If you don't have the zlib PHP extension built in, use the -Z or --nocompress option to download .tar files.
10.6.13. pear config-get
As you have already seen, the pear config-get command is used to display a configuration parameter:
$ pear config-get php_dir php_dir=/usr/share/pear
If you do not specify a layer, the value is read from the first layer that defines it (in the order user, system, default). You may also specify a specific configuration layer from where you want to get the value:
$ pear config-get http_proxy system system.http_proxy=proxy.example.com:3128
10.6.14. pear config-set
The pear config-set command changes a configuration parameter:
$ pear config-set preferred_state beta
By default, the change is performed in the user configuration layer. You may specify the configuration layer with an additional parameter:
$ pear config-set preferred_state beta system
(You need write access to the system configuration file for this to have any effect.)
10.6.15. pear config-show
The pear config-show command is used to display all configuration settings, treating layers just like the config-get command.
$ pear config-show CONFIGURATION: ============== PEAR executables directory bin_dir /usr/local/bin PEAR documentation directory doc_dir /usr/local/lib/php/doc PHP extension directory ext_dir /usr/local/lib/php/ extensions/no-debug-non-zts-20040316 PEAR directory php_dir /usr/local/lib/php PEAR Installer cache directory cache_dir /tmp/pear/cache PEAR data directory data_dir /usr/local/lib/php/data PHP CLI/CGI binary php_bin /usr/local/bin/php PEAR test directory test_dir /usr/local/lib/php/test Cache TimeToLive cache_ttl 3600 Preferred Package State preferred_state stable Unix file mask umask 22 Debug Log Level verbose 1 HTTP Proxy Server Address http_proxy <not set> PEAR server master_server pear.php.net PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin /usr/bin/gpg Signature Key Directory sig_keydir /usr/local/etc/pearkeys Signature Key Id sig_keyid <not set> Package Signature Type sig_type gpg PEAR username (for username <not set> maintainers)
By adding an extra parameter (user or system), you can view the contents of a specific configuration layer.
Every command in the PEAR Installer may specify a command-line shortcut, just to save people from typing. Type pear help shortcuts to see them:
$ pear help shortcuts Shortcuts: li login lo logout b build csh config-show cg config-get cs config-set ch config-help i install up upgrade ua upgrade-all un uninstall bun bundle p package pv package-validate cd cvsdiff ct cvstag rt run-tests pd package-dependencies si sign rpm makerpm l list st shell-test in info ri remote-info lu list-upgrades rl remote-list sp search la list-all d download cc clear-cache da download-all
Instead of pear config-set foo=bar, you may type pear cs foo=bar, or pear pd instead of pear package-dependencies.