PEAR パッケージの追加

PEAR 設定で説明した、PEAR パッケージマネージャを設定すれば、PEAR パッケージの追加インストールができます。
ところが、ほとんどのレンタルサーバーでは、PEAR コマンドを実行する権限を与えられていません。でも、安心してください。レンタルサーバに FTP を使ってローカルコピーの PEAR パッケージをインストールするには、2つの方法があります。

  1. go-pear.phpを利用する方法
  2. PEAR_RemoteInstaller を使う方法

go-pear.php の利用は、昔ながらの方法です。インストールした PEAR のディレクトリ・ファイルの所有者は「appatch」となってしまいますので、インストール時に作成されたディレクトリ及びディレクトリの下にあるファイルは、自分の権限では削除も変更も出来なくなります。
PEAR_RemoteInstaller を使う方法では、作成したディレクトリやファイルの所有者は自分になります。この方法は、追加 PEAR パッケージをローカルとリモートの両方に同時にインストールすることができます。ところが、(マニュアルにはとても簡単と書いてありますが)とても難しく、ネット上の多くの方が挑戦しても失敗し、利用を断念しているようです。

リモートインストールに挑戦

PEAR のインストール方法は、PEAR マニュアルに、詳しく??書いてあります。まずは、こちらをご覧ください。
概要がわかりましら、実践です。PHP 5.0 以降で PEAR コマンドが利用できることが必要です。また、リモートホストに ftp でアクセスできるようにしてください。セキュリティ上は、ftp でなく sftp か ftps で使用したほうが良いと思いますが、ここでは ftp で説明します。

ローカルに設定ファイルを保存するディレクトリを作成

リモートインストールする時は、ローカルに PEAR パッケージをインストールしてからリモートサーバーにインストールします。まずローカルに設定ファイルを保存するディレクトリ C:\xampp\remote\pear を作成します。ディレクトリの場所と名前は任意です。
コマンドプロンプトから次のように入力します。

\remote\pear の作成

C:>cd c:\xampp
C:\xampp>mkdir remote
C:\xampp>cd remote
C:\xampp\remote>mkdir pear
C:\xampp\remote>cd pear

ローカルの環境に対応した設定ファイル

ローカルの環境に対応した設定ファイル remote.ini を作成します。
ローカルに PEAR をインストールするディレクトリは、 c:\remote\pear とします。

remote.ini の作成

C:\xampp\remote\pear>pear config-create -w c:\remote\pear remote.ini
CONFIGURATION (CHANNEL PEAR.PHP.NET):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    <not set>
Default Channel Mirror         preferred_mirror <not set>
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          c:\remote\pear\pear
PEAR documentation directory   doc_dir          c:\remote\pear\pear\docs
PHP extension directory        ext_dir          c:\remote\pear\pear\ext
PEAR directory                 php_dir          c:\remote\pear\pear\php
PEAR Installer cache directory cache_dir        c:\remote\pear\pear\cache
PEAR data directory            data_dir         c:\remote\pear\pear\data
PEAR Installer download        download_dir     <not set>
directory
PHP CLI/CGI binary             php_bin          <not set>
PEAR Installer temp directory  temp_dir         <not set>
PEAR test directory            test_dir         c:\remote\pear\pear\tests
Cache TimeToLive               cache_ttl        <not set>
Preferred Package State        preferred_state  <not set>
Unix file mask                 umask            <not set>
Debug Log Level                verbose          <not set>
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          <not set>
Signature Key Directory        sig_keydir       <not set>
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         <not set>
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         C:\xampp\remote\pear\remote.ini
System Configuration File      Filename         #no#system#config#
Successfully created default configuration file "C:\xampp\remote\pear\remote.ini"

リモートの環境に対応した設定ファイル

リモートの PEAR リモートの環境に対応した設定ファイル .pearrc を作成します。リモートに PEAR をインストールするディレクトリは、/add_pear/pear とします。PEAR マニュアルでは、指定するディレクトリは、フルパスで指定するように指示がありますが、FTP で接続できるパスです。レンタルサーバーによっては、/home/・・・・/add_pear/pear のように指定すると、FTP 接続できない場合があります。

.pearrc の作成

C:\xampp\remote\pear>pear config-create /add_pear/pear .pearrc
CONFIGURATION (CHANNEL PEAR.PHP.NET):
=====================================
Auto-discover new Channels     auto_discover    <not set>
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    <not set>
Default Channel Mirror         preferred_mirror <not set>
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /add_pear/pear/pear
PEAR documentation directory   doc_dir          /add_pear/pear/pear/docs
PHP extension directory        ext_dir          /add_pear/pear/pear/ext
PEAR directory                 php_dir          /add_pear/pear/pear/php
PEAR Installer cache directory cache_dir        /add_pear/pear/pear/cache
PEAR data directory            data_dir         /add_pear/pear/pear/data
PEAR Installer download        download_dir     /add_pear/pear/pear/download
directory
PHP CLI/CGI binary             php_bin          <not set>
php.ini location               php_ini          <not set>
PEAR Installer temp directory  temp_dir         /add_pear/pear/pear/temp
PEAR test directory            test_dir         /add_pear/pear/pear/tests
Cache TimeToLive               cache_ttl        <not set>
Preferred Package State        preferred_state  <not set>
Unix file mask                 umask            <not set>
Debug Log Level                verbose          <not set>
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          <not set>
Signature Key Directory        sig_keydir       <not set>
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         <not set>
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         C:\xampp\remote\pear\.pearrc
System Configuration File      Filename         #no#system#config#
Successfully created default configuration file "C:\xampp\remote\pear\.pearrc"

.pearrc をリモートにアップロード

C:\xampp\remote\pear\ に、remote.ini と .pearrc の2つの設定ファイルが、出来上がりました。
FTP を使って .pearrc をリモートの /add_pear/pear へアップロードします。アップロードするディレクトリは、あらかじめ作成しておきます。

リモートホストの .pearrc の場所を remote_config に指定

次に、リモートホストの設定ファイル .pearrc があるディレクトリを、ローカルの設定ファイル remote.ini の remote_config に指定します。remote_config に設定するパスは、 次の例のようにフルパス( FTP で接続できるパス )にする必要があります。user は FTP 接続するときのユーザー名、pass は、パスワード、myremotehost.com は、FTP のホスト名を指定してください。

remote.ini のディレクトリを remote_config に指定

C:\xampp\remote\pear>pear -c remote.ini config-set remote_config ftp://user:pass@myremotehost.com/add_pear/pear/.pearrc
config-set succeeded

これで、remote.ini にデータが追加されます。
remote-info、remote-list のコマンドを試すと有効に働きます。 ただし、コマンド pear help で見ると remote-install, remote-uninstall, remote-upgrade および remote-upgrade-all のコマンドがありません。XAMPP には、PEAR_RemoteInstaller がインストールされていませんでした。

PEAR_RemoteInstaller をインストール

pear install コマンドで XAMPP に、PEAR_RemoteInstaller をローカルにインストールします。

PEAR_RemoteInstaller をインストール

C:>pear install -a PEAR_RemoteInstaller
Failed to download pear/PEAR_RemoteInstaller within preferred state "stable", latest release is version 0.3.1, stability "alpha", use "channel://pear.php.net/PEAR_RemoteInstaller-0.3.1" to install
Cannot initialize 'PEAR_RemoteInstaller', invalid or missing package file
Package "PEAR_RemoteInstaller" is not valid
install failed

PEAR_RemoteInstaller は、正式になっていないのでインストールに失敗しました。最終リリースバージョンは、0.3.1 でした。α も安定しているようです。
そこで、α を指定してインストールしてみました。

PEAR_RemoteInstaller-alpha をインストール

C:>pear install -a PEAR_RemoteInstaller-alpha
pear/PEAR_RemoteInstaller requires PEAR Installer (version >= 1.5.0RC1), installed version is 1.4.11
downloading ssh2-0.10.tgz ...
Starting to download ssh2-0.10.tgz (22,187 bytes)
........done: 22,187 bytes
5 source files, building
ERROR: The DSP ssh2.dsp does not exist.

まだ、インストールできません。 PEAR Installer のバージョンは 1.5.0RC1 以上である必要があるようですが、XAMPP でインストールされていたバージョンは 1.4.11 でした。また、ssh2-0.10 がダウンロードされましたが、ssh2.dsp が存在しないというエラーがでました。
そこで、php.ini の 668行 ;extension=php_ssh2.dll のコメント ; をはずし有効にします。 また、PEAR Installer をアップグレードします。

PEAR Installer のアップグレード

C:>pear upgrade PEAR Installer
No releases available for package "pear.php.net/Installer"
Cannot initialize 'Installer', invalid or missing package file
Did not download optional dependencies: pear/XML_RPC, use --alldeps to download
automatically
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
.............................................................done: 297,794 bytes

downloading Archive_Tar-1.3.2.tgz ...
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
...done: 17,150 bytes
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
...done: 30,947 bytes
downloading Console_Getopt-1.2.3.tgz ...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
...done: 4,011 bytes
Package "Installer" is not valid
upgrade ok: channel://pear.php.net/Console_Getopt-1.2.3
upgrade ok: channel://pear.php.net/Structures_Graph-1.0.2
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.2
upgrade ok: channel://pear.php.net/PEAR-1.6.2
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)

To install use "pear install pear/PEAR#featurename"
'th' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

これで、PEAR Installer のバージョンは、1.6.2 になったようです。まだ、完全ではないようですが、最新の PEAR_RemoteInstaller-0.3.1 をインストールしてみます。

PEAR_RemoteInstaller-0.3.1 のインストール

C:>pear install -a PEAR_RemoteInstaller-0.3.1
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.10, stability "beta", use "channel://pecl.php.net/ssh2-0.10" to install
downloading PEAR_RemoteInstaller-0.3.1.tgz ...
Starting to download PEAR_RemoteInstaller-0.3.1.tgz (8,331 bytes)
.....done: 8,331 bytes
install ok: channel://pear.php.net/PEAR_RemoteInstaller-0.3.1

うまくいったようです。pear help で確認すると、リモートインストールのコマンドが追加されています。これで、リモートインストールが使用できます。

PEAR コマンド

C:>pear help
Commands:
build                       Build an Extension From C Source
bundle                      Unpacks a Pecl Package
channel-add                 Add a Channel
channel-alias               Specify an alias to a channel name
channel-delete              Remove a Channel From the List
channel-discover            Initialize a Channel from its server
channel-info                Retrieve Information on a Channel
channel-update              Update an Existing Channel
clear-cache                 Clear Web Services Cache
config-create               Create a Default configuration file
config-get                  Show One Setting
config-help                 Show Information About Setting
config-set                  Change Setting
config-show                 Show All Settings
convert                     Convert a package.xml 1.0 to package.xml 2.0 format
cvsdiff                     Run a "cvs diff" for all files in a package
cvstag                      Set CVS Release Tag
download                    Download Package
download-all                Downloads each available package from the default ch
annel
info                        Display information about a package
install                     Install Package
list                        List Installed Packages In The Default Channel
list-all                    List All Packages
list-channels               List Available Channels
list-files                  List Files In Installed Package
list-upgrades               List Available Upgrades
login                       Connects and authenticates to remote server
logout                      Logs out from the remote server
makerpm                     Builds an RPM spec file from a PEAR package
package                     Build Package
package-dependencies        Show package dependencies
package-validate            Validate Package Consistency
pickle                      Build PECL Package
remote-info                 Information About Remote Packages
remote-install              Install Package
remote-list                 List Remote Packages
remote-uninstall            Un-install Package
remote-upgrade              Upgrade Package
remote-upgrade-all          Upgrade All Packages
run-scripts                 Run Post-Install Scripts bundled with a package
run-tests                   Run Regression Tests
search                      Search remote package database
shell-test                  Shell Script Test
sign                        Sign a package distribution file
uninstall                   Un-install Package
update-channels             Update the Channel List
upgrade                     Upgrade Package
upgrade-all                 Upgrade All Packages
Usage: pear [options] command [command-options] <parameters>
Type "pear help options" to list all options.
Type "pear help shortcuts" to list all command shortcuts.
Type "pear help <command>" to get the help for the specified command.

リモートインストールしてみる

試しに、Pear_Info をリモートインストールしてみます。

Pear_Info をリモートインストール

C:>pear -c c:\xampp\remote\pear\remote.ini remote-install -a Pear_Info
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading PEAR_Info-1.7.0.tgz ...
Starting to download PEAR_Info-1.7.0.tgz (56,638 bytes)
..............done: 56,638 bytes
downloading PEAR-1.6.2.tgz ...
Starting to download PEAR-1.6.2.tgz (297,794 bytes)
...done: 297,794 bytes
downloading Archive_Tar-1.3.2.tgz ...
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
...done: 17,150 bytes
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
...done: 30,947 bytes
downloading Console_Getopt-1.2.3.tgz ...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
...done: 4,011 bytes
downloading XML_RPC-1.5.1.tgz ...
Starting to download XML_RPC-1.5.1.tgz (32,215 bytes)
...done: 32,215 bytes
install ok: channel://pear.php.net/Archive_Tar-1.3.2
remote install ok: channel://pear.php.net/Archive_Tar-1.3.2
install ok: channel://pear.php.net/Structures_Graph-1.0.2
remote install ok: channel://pear.php.net/Structures_Graph-1.0.2
install ok: channel://pear.php.net/Console_Getopt-1.2.3
remote install ok: channel://pear.php.net/Console_Getopt-1.2.3
install ok: channel://pear.php.net/XML_RPC-1.5.1
remote install ok: channel://pear.php.net/XML_RPC-1.5.1
install ok: channel://pear.php.net/PEAR-1.6.2
remote install ok: channel://pear.php.net/PEAR-1.6.2
install ok: channel://pear.php.net/PEAR_Info-1.7.0
remote install ok: channel://pear.php.net/PEAR_Info-1.7.0
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)

PEAR: To install optional features use "pear install pear/PEAR#featurename"

うまくいきました。ローカルにも、リモートにもちゃんとインストールされています。ここにインストールしたパッケージを利用するには、インストールしたディレクトリのインクルードパスを設定する必要がありますので、忘れないでください。

パッケージを管理

これで、remote-install, remote-uninstall, remote-upgrade および remote-upgrade-all コマンドを使ってパッケージを管理することができます。
ローカルとリモートのリポジトリは、同期させることができます。
既にインストールしているパッケージを間違って remote-install しようとした場合は、次のように、インストールを拒否されますので、アンインストールしてやりなおすか、remote-upgrade を使ってください。

Ignoring installed package pear/・・・
Nothing to install

PR amazon

author

サイト管理人:パワーデジット
管理人への連絡フォーム

スポンサード リンク

このページは 

トップページ > 開発環境 > PEAR 追加