7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PEAR:but it is not a valid package archiveとなってしまう時の対処

Last updated at Posted at 2015-02-24

背景

pearでpackageをインストールしようと思ったらコケた

環境

# cat /etc/system-release
CentOS release 6.6 (Final)
# pear version
PEAR Version: 1.9.4
PHP Version: 5.6.5
Zend Engine Version: 2.6.0
Running on: Linux xxx.yyy.zzz.jp.internal 2.6.32-504.1.3.el6.x86_64 #1 SMP Tue Nov 11 17:57:25 UTC 2014 x86_64

結果

アップグレード失敗するpearのArchive/Tar.phpを手動でコピーしたらupgrade、installできた

# pear upgrade Archive_Tar
downloading Archive_Tar-1.3.13.tgz ...
Starting to download Archive_Tar-1.3.13.tgz (19,891 bytes)
.......done: 19,891 bytes
could not extract the package.xml file from "/tmp/pear/download/Archive_Tar-1.3.13.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
# cd /tmp/pear/download/
# tar -zxvf Archive_Tar-1.3.13.tgz
package.xml
Archive_Tar-1.3.13/Archive/Tar.php
Archive_Tar-1.3.13/docs/Archive_Tar.txt
# mv /usr/share/pear/Archive/Tar.php /usr/share/pear/Archive/Tar.php.org
# cp /tmp/pear/download/Archive_Tar-1.3.13/Archive/Tar.php /usr/share/pear/Archive/

やったことの手順

PHP_CodeSnifferのインストール

# pear install PHP_CodeSniffer
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
downloading PHP_CodeSniffer-2.2.0.tgz ...
Starting to download PHP_CodeSniffer-2.2.0.tgz (460,611 bytes)
.............................................................................................done: 460,611 bytes
could not extract the package.xml file from "/tmp/pear/download/PHP_CodeSniffer-2.2.0.tgz"
Download of "pear/PHP_CodeSniffer" succeeded, but it is not a valid package archive
Error: cannot download "pear/PHP_CodeSniffer"
Download failed
install failed

ファイルはダウンロード出来たが、Archiveファイルの解凍?でこけてるっぽい
ちなみにtarもzipもインストールされている

pearを最新にしてみる

phpを5.6にしているせいかと思ってpearを更新してみる

# yum update --enablerepo=remi-php56 php-pear
読み込んだプラグイン:fastestmirror, presto
更新処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: s3-mirror-ap-northeast-1.fedoraproject.org
 * extras: ftp.tsukuba.wide.ad.jp
 * remi-php56: remi.kazukioishi.net
 * updates: ftp.tsukuba.wide.ad.jp
更新と設定されたパッケージがありません。

はい。最新でした。

pear の更新状況を確認する

# pear list-upgrades
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
PEAR.PHP.NET AVAILABLE UPGRADES (STABLE):
=========================================
CHANNEL      PACKAGE        LOCAL          REMOTE          SIZE
pear.php.net Archive_Tar    1.3.7 (stable) 1.3.13 (stable) 19.5kB
pear.php.net Console_Getopt 1.2.3 (stable) 1.4.0 (stable)  4.5kB
pear.php.net PEAR           1.9.4 (stable) 1.9.5 (stable)  284kB
pear.php.net XML_RPC        1.5.4 (stable) 1.5.5 (stable)  32kB
pear.php.net XML_Util       1.2.1 (stable) 1.2.3 (stable)  16.8kB

いろいろアップデートがある!あやしいArchive_Tarも!!

pearのpackageを全てアップグレードしてみる

# pear upgrade
WARNING: "pear/XML_RPC" is deprecated in favor of "pear/XML_RPC2"
WARNING: "pear/Console_Getopt" is deprecated in favor of "pear/Console_GetoptPlus"
downloading XML_Util-1.2.3.tgz ...
Starting to download XML_Util-1.2.3.tgz (17,134 bytes)
......done: 17,134 bytes
could not extract the package.xml file from "/tmp/pear/download/XML_Util-1.2.3.tgz"
Download of "pear/xml_util" succeeded, but it is not a valid package archive
Error: cannot download "pear/XML_Util"
downloading Archive_Tar-1.3.13.tgz ...
Starting to download Archive_Tar-1.3.13.tgz (19,891 bytes)
...done: 19,891 bytes
could not extract the package.xml file from "/tmp/pear/download/Archive_Tar-1.3.13.tgz"
Download of "pear/archive_tar" succeeded, but it is not a valid package archive
Error: cannot download "pear/Archive_Tar"
downloading PEAR-1.9.5.tgz ...
Starting to download PEAR-1.9.5.tgz (290,006 bytes)
...done: 290,006 bytes
could not extract the package.xml file from "/tmp/pear/download/PEAR-1.9.5.tgz"
Download of "pear/pear" succeeded, but it is not a valid package archive
Error: cannot download "pear/PEAR"
downloading XML_RPC-1.5.5.tgz ...
Starting to download XML_RPC-1.5.5.tgz (31,862 bytes)
...done: 31,862 bytes
could not extract the package.xml file from "/tmp/pear/download/XML_RPC-1.5.5.tgz"
Download of "pear/xml_rpc" succeeded, but it is not a valid package archive
Error: cannot download "pear/XML_RPC"
downloading Console_Getopt-1.4.0.tgz ...
Starting to download Console_Getopt-1.4.0.tgz (4,534 bytes)
...done: 4,534 bytes
could not extract the package.xml file from "/tmp/pear/download/Console_Getopt-1.4.0.tgz"
Download of "pear/console_getopt" succeeded, but it is not a valid package archive
Error: cannot download "pear/Console_Getopt"
Download failed
upgrade failed

全てコケた。。。 PHP_CodeSnifferをインストールした時と同じエラー

Archive/Tar.phpを手動でおきかえちゃう

アーカイブのダウンロードは成功しているので手動で解凍、配置しちゃう
元のファイルは念のためバックアップしておく

# cd /tmp/pear/download/
# tar -zxvf Archive_Tar-1.3.13.tgz
package.xml
Archive_Tar-1.3.13/Archive/Tar.php
Archive_Tar-1.3.13/docs/Archive_Tar.txt
# mv /usr/share/pear/Archive/Tar.php /usr/share/pear/Archive/Tar.php.org
# cp /tmp/pear/download/Archive_Tar-1.3.13/Archive/Tar.php /usr/share/pear/Archive/

再度pearのpackageをアップグレードしてみる


# pear upgrade
WARNING: "pear/XML_RPC" is deprecated in favor of "pear/XML_RPC2"
WARNING: "pear/Console_Getopt" is deprecated in favor of "pear/Console_GetoptPlus"
downloading PEAR-1.9.5.tgz ...
Starting to download PEAR-1.9.5.tgz (290,006 bytes)
............................................................done: 290,006 bytes
downloading XML_RPC-1.5.5.tgz ...
Starting to download XML_RPC-1.5.5.tgz (31,862 bytes)
.........done: 31,862 bytes
downloading Archive_Tar-1.3.13.tgz ...
Starting to download Archive_Tar-1.3.13.tgz (19,891 bytes)
...done: 19,891 bytes
downloading Console_Getopt-1.4.0.tgz ...
Starting to download Console_Getopt-1.4.0.tgz (4,534 bytes)
...done: 4,534 bytes
downloading XML_Util-1.2.3.tgz ...
Starting to download XML_Util-1.2.3.tgz (17,134 bytes)
...done: 17,134 bytes
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.13
upgrade ok: channel://pear.php.net/Console_Getopt-1.4.0
upgrade ok: channel://pear.php.net/XML_Util-1.2.3
upgrade ok: channel://pear.php.net/PEAR-1.9.5
upgrade ok: channel://pear.php.net/XML_RPC-1.5.5
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"

アップグレード出来た!

再度PHP_CodeSnifferのインストール

# pear install PHP_CodeSniffer
downloading PHP_CodeSniffer-2.2.0.tgz ...
Starting to download PHP_CodeSniffer-2.2.0.tgz (460,611 bytes)
.............................................................................................done: 460,611 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-2.2.0

インストールできた!

根本の解決にはなっていないし
他にいい方法があるかもしれないけど、そこはプロに任せます
pearのアップグレード時にdeprecatedのworning出てたけど開発環境だし今回は無視
気になる人はちゃんとインストールしよう

# pear install XML_RPC2
downloading XML_RPC2-1.1.2.tgz ...
Starting to download XML_RPC2-1.1.2.tgz (67,331 bytes)
.................done: 67,331 bytes
downloading HTTP_Request2-2.2.1.tgz ...
Starting to download HTTP_Request2-2.2.1.tgz (107,339 bytes)
...done: 107,339 bytes
downloading Cache_Lite-1.7.16.tgz ...
Starting to download Cache_Lite-1.7.16.tgz (32,997 bytes)
...done: 32,997 bytes
downloading Net_URL2-2.1.1.tgz ...
Starting to download Net_URL2-2.1.1.tgz (19,848 bytes)
...done: 19,848 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.16
install ok: channel://pear.php.net/Net_URL2-2.1.1
install ok: channel://pear.php.net/HTTP_Request2-2.2.1
install ok: channel://pear.php.net/XML_RPC2-1.1.2

# pear install Console_GetoptPlus-1.0.0RC1
downloading Console_GetoptPlus-1.0.0RC1.tgz ...
Starting to download Console_GetoptPlus-1.0.0RC1.tgz (22,565 bytes)
........done: 22,565 bytes
install ok: channel://pear.php.net/Console_GetoptPlus-1.0.0RC1

参考にさせて頂いたURL

7
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?