それってちゃうんちゃうん

関西人はでんがなまんがなとか言いません(謎

http://blog.asial.co.jp/518

用語ちゃうんちゃうん?

ちゃうちゃう.それってちゃうんちゃうん.

レポジトリー(repository)ってPEAR固有用語では存在しないと思うので,一般的な用語だと,subversionのチェックアウト元みたいな集中管理場所のことをさすと思うんですね(gitやMercurialは〜とかいう人グーで殴ります).

#パッケージを落としてくる元をレポジトリーということもあるけど,PEAR固有用語ではチャンネル(channel)

マニュアルにあるようにローカルコピーです.

ブログにある方法で気をつけること

次に、プロジェクトをチェックアウトした中にPEARが含まれている場合のチェックアウト方法です。今回は ~/project/pearPEARのインストールされているディレクトリとします。

とあるので,いわゆるホームディレクトリー配下にコピーします.
ここで気をつけなければいけないのは,「PEARの設定ファイルは絶対パスで書かれる」ということです.
つまり,morikawaさんが作成した設定ファイル(「/home/morikawa/...」な値の設定ファイル)をsubversionなどでコミット,jokagiさんがチェックアウトして使うと不都合が起こる可能性があります(「/home/morikawa/...」な値の設定ファイルのまま動作する).例えばうろ覚えですが,「pear list-files PEAR」みたいにやると意図しないディレクトリーが表示される可能性があります.

しいていうと例にあるようにinstallをするときやPHPスクリプト上でパッケージを読み込むときには不都合はあまり出ないと思います.
あまりでない,イコール根が深い,イコール困ったときに泥沼です.例えば上記例だとずっと/home/morikawa/...を参照してしまう可能性がありますが,(apacheなどで読み込む必要があるため,ワールドリーダブルになっていて下手に読めてしまい,)それに気づかないかもしれません.

個人的には過去に同様なことをやっていて,下記のようなスクリプトを用意し,コミット前,アップデートあとに実行するようにしていました.

  • PEARのコピー先ディレクトリーをマクロ名に置換する(例えば@@pear_install_dir@@とかだったかな?)
  • マクロ名をプロジェクトの基準ディレクトリーを元に適切なフルパスに復元する

どうでもいいこと

最後にコマンドでやるより

GET http://pear.php.net/go-pear | php
|||<

もしくは

>||
wget -qO- http://pear.php.net/go-pear | php

の方が楽ですね.個人的には〜ですけど.
あと古くて相当使い物にならないとかヤバいところがあるとかですが,まるごとPHP Vol.1にも同様な話があるので,お持ちの方でご興味のある方は読んでみてください.