pearでcould not extract the packageエラー

この記事について

環境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
タイトルとURLをコピーしました