如何使用 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 Installer >= 1.9.2,无法从 1.9.0 升级 PEAR