この記事について
| 環境 | pear(古いバージョン) |
|---|---|
| 目的 | パッケージインストール時の could not extract the package エラーを解消 |
| 結果 | Tar.php を手動で置き換えて解決。pear 自体もアップグレードした |
つまずきポイント要約
- 原因は Archive_Tar のバグ。だが Archive_Tar 自体が解凍できないので pear コマンドからは直せない
- ダウンロード自体はできているので、手動で tar zxvf して Tar.php を置き換える
事象
pearで新しいパッケージをインストールするとエラーが出る。
could not extract the package ~
tgz ファイルが展開できないという内容らしい。
以下のサイトを参考に対処
pearコマンドでcould not extractのエラーが発生
インストール時の解凍に失敗する Tarのバグ(PEAR/Archive/Tar.php)
PEAR on PHP 5.5: could not extract package.xml
原因
原因は Archive_Tar のバグ。なので Archive_Tar 自体をアップデートを試みるが、Archive_Tar のファイル自体が解凍できないので解決できない。
pear upgrade Archive_Tar
downloading Archive_Tar-1.4.2.tgz ...
Starting to download Archive_Tar-1.4.2.tgz (20,624 bytes)
.....done: 20,624 bytes
could not extract the package.xml file from "/tmp/pear/download/Archive_Tar-1.4.2.tgz"
Download of "pear/Archive_Tar" succeeded, but it is not a valid package archive
Error: cannot download "pear/Archive_Tar"
Download failed
upgrade failed
対処:手動で解凍して置き換え
解凍はできないけどファイルのダウンロードはできているようなので手動で解凍。
tar zxvf Archive_Tar-1.4.2.tgz
解凍したファイルと問題のあるファイルを置き換える
ファイルの場所を確認
find / -name Tar.php
/usr/share/pear/Archive/Tar.php
/tmp/pear/download/Archive_Tar-1.4.2/Archive/Tar.php
ファイルの置換
cp /tmp/pear/download/Archive_Tar-1.4.2/Archive/Tar.php /usr/share/pear/Archive/
これでOK。
古い pear がインストールされたのが原因だったので pear 自体をアップグレードしておく
pear upgrade PEAR
