PEAR パッケージをローカルでミラーする

以前から PEAR のパッケージをローカルでミラーしたいなと思ってたんだけど、rsync とか ftp とかでローカルに再帰的に一発でミラーっていうのができないみたい。

ELFさんに聞いてみると 「pear list-all でごにょごにょやればいいんじゃない」ってことだったので簡単なスクリプトを作ってみた。使い捨てスクリプトのつもりで適当に作ろうかと思ってたんだけど、どうせなら公開しようと思ってちょっとまじめに作ってみました。

作ったのは pear_mirror.sh というシェルスクリプトです。名前は pear_mirror.sh ですが、PEAR だけでなく PECL のライブラリもダウンロードしてくれます。pear_mirror.sh を実行すると pear/pecl list-all の出力を元に $HOME/(pear|pecl) に PEAR/PECL のパッケージをダウンロードしてくれます。1回ダウンロードしたら2回目以降はダウンロードしません。新しいパッケージがあった場合だけダウンロードしてくれます。

pear_mirror.sh --help のように --help をつけて実行すると簡単なヘルプが表示されます。

% pear_mirror.sh --help
Usage: pear_mirror.sh
        [--delete]
        [--dest-dir=DIRECTORY]
        [--help]
        [--php-dir=PHP DIRECTORY]
        [--verbose]

--delete を指定すると存在しないパッケージ、違うバージョンのパッケージが削除されます。デフォルトでは削除されません。

--dest-dir はダウンロード先のディレクトリを指定します。デフォルトは $HOME です。ダウンロード先のディレクトリに pear/pecl というディレクトリを作って、それぞれ PEAR/PECL のパッケージがダウンロードされます。

--php-dir はインストールした php のディレクトリを指定します。普通は必要ないですが、複数のバージョンの PHP をインストールしてる場合とかに有効です。

--verbose を指定すると出力が詳細になります。と言っても今は --delete をつけた時に削除するファイル名を表示してくれるだけですが...

このスクリプトを cron に1日1回登録しておけば、オフラインの時でも常に最新の PEAR パッケージをインストールできるようになります。

ダウンロード後のサイズは100MBもいかない。これぐらいなら --delete をつけないでミラーして過去のバージョンを保存してもしばらくの間は問題なさそう。

pear_mirror.sh

トラックバック(0)

このブログ記事を参照しているブログ一覧: PEAR パッケージをローカルでミラーする

このブログ記事に対するトラックバックURL: http://blog.bz2.jp/bz2mt/mt-tb.cgi/173

コメント(3)

本当に作ったんだえらいなあ(笑
私はヘタレなのでpear download-allをちょくちょくかけているだけです(ゲラ

エントリ書いてたらコメントが表示されるようになった!!
しかもトラックバック受け付けてくれない.
Movable Typeと相性悪いのかなぁ

http://blog.poyo.jp/archives/id-1162829716

引数とか対応していない分デグレードとも言えるかも.

トラックバック来てないみたいです。
迷惑トラックバックにも含まれてませんでした。

ウェブページ

Powered by Movable Type 4.21-ja

このブログ記事について

このページは、masatoが2006年11月 5日 21:42に書いたブログ記事です。

ひとつ前のブログ記事は「Mac に Ruby on Rails をインストール」です。

次のブログ記事は「Terminal.app で改行を含めてコピペできない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。