如何正确使用PEAR安装PHPUnit?

40

我必须按照这些指示卸载并重新安装了PHPUnit的较新版本。现在,当我运行以下代码时:

sudo pear install --alldeps phpunit/PHPUnit

我看到一个错误消息,长得像这样。

Unknown remote channel: pear.symfony.com
phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml" (version >= 2.1.0)
No valid packages found
如果我只通过启动安装Yaml
sudo pear install symfony/YAML

安装了一个旧版本(1.0.6),不符合 PHPUnit 的依赖要求。我该如何解决?


Pear 给我带来了麻烦。这个链接为我解决了问题:https://askubuntu.com/questions/451953/php-pear-is-not-working-after-upgrading-to-ubuntu-14-04/451975#451975 - eddy147
8个回答

85

我在升级phpunit时遇到了同样的问题。

这个方法解决了这个问题:

pear channel-discover pear.symfony.com
pear install pear.symfony.com/Yaml

然后运行:

pear install --alldeps pear.phpunit.de/PHPUnit

注意:我认为pear install pear.symfony.com/Yaml不是必需的。我只是发帖是因为这正是我解决问题的方法。


1
这真的起作用了,现在我明白为什么之前没有成功。Symfony项目操作两个不同的pear通道。http://pear.symfony-project.com/是版本1,而http://pear.symfony.com/是版本2。只有后者包含YAML2,这是PHPUnit所需的。谢谢PutzKipa! - twigmac
1
是的,安装PHPUnit不需要执行命令pear install pear.symfony.com/Yaml - twigmac
我还需要从Github仓库https://github.com/sebastianbergmann/php-code-coverage下载CodeCoverage,并将其链接到PHPUnit目录中:sudo mv ./PHP/CodeCoverage.php ./PHP/CodeCoverage.php.bak; sudo ln -s /home/my-cloned-github-repo-dir/php-code-coverage/PHP/CodeCoverage.php ./PHP/CodeCoverage.php;sudo ln -s /home/my-cloned-github-repo-dir/PHP/CodeCoverage ./PHP/CodeCoverage;# “我在Ubuntu 12.04上”。 - knb
这个过程也没有解决我在这里提到的问题。YAML被安装了过时的版本。Doctrine的其他组件也是如此。 - Lenin

10

按照PHPUnit文档所述使用这个命令:(我不知道sudo是什么意思,这是我在Windows PC上的操作方法):

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit

太棒了!我经常安装PHPUnit,但总是找不到所需的渠道。 - ksiimson
太棒了。你让我避免了三天的头疼。我必须去点赞你所有的答案 :) - samayo

5
我也遇到了这个错误信息:
未知远程通道:pear.symfony.com
创建一个别名解决问题:
pear channel-alias pear.symfony-project.com pear.symfony.com

然后

channel-discover pear.symfony-project.com

sudo pear channel-discover components.ez.no

sudo pear update-channels

sudo pear upgrade-all

sudo pear install --force --alldeps phpunit/PHPUnit

这个过程也没有帮助我解决问题。但是我在这里用另一种方式解决了。 - Lenin

2

首先:执行locate pear命令,你可能安装了多个版本,这可能会带来麻烦。

在我们的公司内部网络中,我们有类似于以下内容的东西:

sudo [your pear install] channel-update pear.php.net  
sudo [your pear install] upgrade pear  
sudo [your pear install] channel-discover pear.phpunit.de  
sudo [your pear install] install --alldeps phpunit/PHPUnit

我知道有一种更自动化的安装方法,使用go-pear(http://pear.php.net/manual/en/installation.getting.php

但是,如果您已经安装了其他版本的pear,它会完全破坏一切,您将花费相当长的时间来修复它。我认为最大的障碍是能够告诉所有库彼此的位置。


没有帮助重置 PEAR 以解决这个问题。期待您在那里的回答。 :) - Lenin

0

跟随Plínio César的建议,我最终解决了问题,但稍有不同:

首先,我执行了“sudo apt-get remove phpunit”以删除有问题的安装。然后使用pear进行phpunit安装:

sudo pear install pear.symfony.com/Yaml

sudo pear channel-discover pear.phpunit.de

sudo pear config-set auto_discover 1

sudo pear install --alldeps pear.phpunit.de/PHPUnit

感谢Plinio Cesar!


0

PutzKipa提到的过程可以工作,但您可能需要超级用户权限。对于Ubuntu,请在每个命令之前添加sudo。


0
sudo pear install -a phpunit
sudo pear channel-discover pear.phpunit.de

我遇到了类似的问题,抱怨“未知的远程通道:pear.symfony.com”。 必须这样做(没有sudo,我会得到一些关于无法打开某个文件的奇怪错误)

sudo pear channel-discover pear.symfony.com

那么

sudo pear install phpunit/PHPUnit

现在我可以在我的 /usr/bin 中看到 phpunit。

0
在Ubuntu、Debian、Fedora或OpenSUSE中获取PHPUnit最简单的方法是下载一个PHP存档(PHAR),其中包含了所有必需(以及一些可选)的PHPUnit依赖项,这些依赖项都打包在一个文件中。
打开终端并输入:
wget https://phar.phpunit.de/phpunit.phar  # download the PHP Archive (PHAR) file  
chmod +x phpunit.phar   
sudo mv phpunit.phar /usr/local/bin/phpunit   

https://phar.phpunit.de/上有许多不同版本的phpunit.phar。如果您使用第一个命令,它将选择并下载最新版本。

注意:最后一个命令中的/usr/local/bin/路径适用于Ubuntu、Debian、Fedora和OpenSUSE发行版,以及其他具有/usr/local/bin/目录的Linux发行版。

参考:/usr/local/bin是什么?在Applescript的脚本安装中遇到了它,但想了解更多信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接