将PEAR包添加到Subversion存储库?

时间:2009-06-28 18:37:14

标签: php svn pear

我正在开发一个使用PEAR包的项目。因为您永远不知道您的托管服务提供商将安装哪个版本的PEAR包(特别是因为我需要将修补程序应用于其中一个软件包),所以我想把我的项目的PEAR源代码放入SVN,所以其他开发人员可以立即拥有依赖项。

但是与PEAR相关的一切似乎都有绝对的目录!运行“pear config-create.peed.conf”来设置新的PEAR目录甚至失败并显示错误消息:

根目录必须是绝对路径

我检查了其他一些服务器上的pear配置文件,它们似乎也有绝对路径。

每当开发人员将其检出自己的机器,或者我们将其全部导出到服务器时,我们都不知道绝对路径是什么。

有没有办法设置它?

3 个答案:

答案 0 :(得分:3)

我无法让我的托管服务提供商安装我想要的PEAR库。以下是我将PEAR作为源代码树的一部分。

1。创建remote.conf文件

创建remote.conf与手册略有不同。假设我想在项目的vendor/PEAR中安装PEAR。你会这样做:

#from the root of the project
$ cd vendor ; mkdir PEAR ; cd PEAR
$ pear config-create <absolute path to project>/vendor/PEAR/ remote.conf 

2.更新频道

$ pear -c remote.conf channel-update pear.php.net

3。安装PEAR

$ pear -c remote.conf install --alldeps pear

4。安装任何其他库

$ pear -c remote.conf install --alldeps <libname>

Voila ...... PEAR是源代码树的一部分。

捕获:

  • 即使remote.conf中的路径是绝对的,但库本身仍然可以工作。它只是更新,不会在任何地方工作。您需要从与其创建的路径相同的路径更新它 - 在上述情况下,来自vendor/PEAR
  • 有些图书馆不喜欢在路径之外,所以你可能需要在路径中添加vendor/PEAR(我有代码,只要问你是否需要。)

答案 1 :(得分:2)

如果你有PHP 5.3.1使用Pyrus,PEAR2安装程序。 pyrus管理的安装可以随心所欲地移动。

下载pyrus -

$> wget http://pear2.php.net/pyrus.phar

创建一个目录来存储pyrus安装的软件包:

$> mkdir mylibs

安装包 -

$> php pyrus.phar mylibs install pear/Net_URL

您安装的软件包现在位于mylibs/php/Net/URL.php

请注意,我们传递了mylibs目录以指示要安装到的目录,以及通道名称“pear”(pyrus中的默认值为pear2.php.net)。为方便起见,如果chmod + x,可以从cli执行pyrus.phar文件。

您可以将mylibs目录移动到任何您想要的位置。甚至将它提交到您的存储库。

PEAR website上有很多文档。

答案 2 :(得分:1)

我完全确定这是否能解答您的问题,但您可以在命令行上指定PEAR存储库的位置,以便您可以使用以下命令创建本地存储库:

pear install --force --installroot=/path/to/my/pear/ PEAR

然后您可以使用以下方法安装其他软件包:

pear install --installroot=/path/to/my/pear/ SomePackage

要在应用程序中使用本地存储库,您必须确保include_path指向本地存储库,而不是默认(全局安装)存储库。所以你希望它看起来像这样:

include_path = ".:/path/to/my/pear/usr/share/php"

回复:

  

实际上,他希望避免使用绝对路径,以便可以从多台计算机中检出解决方案,而不依赖于每个计算机都安装了存储库的路径。

     

- Carlos Lima

好像你是对的。在这种情况下,我建议您不要将PEAR存储库检入SVN存储库,而是使用部署脚本在服务器上安装/更新存储库。只需确保安装特定版本。 (你有自动部署,对吗?)