如何使用 PEAR 正确安装 PHPUnit?

Posted

技术标签:

【中文标题】如何使用 PEAR 正确安装 PHPUnit?【英文标题】:How do I correctly install PHPUnit with PEAR? 【发布时间】:2012-09-14 05:43:35 【问题描述】:

我不得不在these directions 之后卸载并重新安装更新版本的 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

将安装不符合 PHPUnit 依赖关系的旧版本 (1.0.6)。我怎么可能解决这个问题?

【问题讨论】:

梨给我带来了麻烦。这为我解决了这个问题:askubuntu.com/questions/451953/… 【参考方案1】:

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

这解决了问题:

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

然后运行:

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

OBS:我认为pear install pear.symfony.com/Yaml 没有必要。我只是发布它,因为这正是我解决问题的方式。

【讨论】:

这确实有效,现在我明白为什么它事先没有。 symfony 项目运行两个不同的梨通道。 http://pear.symfony-project.com/ 用于版本 1,http://pear.symfony.com/ 用于版本 2。只有后者包含 PHPUnit 需要的 YAML2。谢谢,普茨基帕! 是的,命令 pear install pear.symfony.com/Yaml 不是安装 PHPUnit 所必需的。 我还必须从 Github repo 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" 这个过程也没有解决我提到的问题here。 YAML 正在安装回溯版本。 Doctrine 的其他组成部分也是如此。【参考方案2】:

使用这个,如in the PHPUnit docs 所述:(我不是 sudo 的意思,这是我在 Windows PC 上的操作方式):

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

【讨论】:

太棒了!我总是很难找到 PHPUnit 所需的频道,我经常安装它 太棒了。你让我摆脱了三天的头痛。我不得不去投票赞成你所有的答案:)【参考方案3】:

我也收到了这个错误信息:

未知的远程通道: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

【讨论】:

这个过程也没有帮助解决我的问题。但我以不同的方式解决了here。【参考方案4】:

首先:locate pear 您可能安装了多个版本,这可能会很痛苦。

在工作中,我们的 Intranet 中有这样的内容:

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)

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

【讨论】:

对此problem 重置 PEAR 没有帮助。在那里期待你的回答。 :)【参考方案5】:
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

【讨论】:

【参考方案6】:

PutzKipa 提到的流程有效,但您可能需要超级用户权限。对于 ubuntu,在每个命令前添加 sudo。

【讨论】:

【参考方案7】:

在 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

感谢普林尼奥·塞萨尔!!!

【讨论】:

【参考方案8】:

在 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 发行版都是正确的。

参考:What is /usr/local/bin? Came across it in an script installation for Applescript but would like to know more

【讨论】:

以上是关于如何使用 PEAR 正确安装 PHPUnit?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 PEAR 安装旧版本的 PHPUnit?

通过 PEAR 安装 PHPUnit

通过 pear 或 composer 安装 phpUnit

无法通过 PEAR 安装 PHPUnit,需要 PEAR Installer >= 1.9.2,无法从 1.9.0 升级 PEAR

Linux下的PHPUnit 4.0手动到底怎么安装

机油测试引发未捕获的异常