php – 如何管理PEAR包的依赖项

在我看来,PEAR再次崛起,至少作为一种分配机制.由于实际上简单的简单PEAR通道服务器(例如 Pirum)的可用性,似乎许多项目正朝着PEAR作为分配机制发展.一些示例包括PHPUnit,Phing,Symfony2,Doctrine2等.但是,我在尝试管理这个问题时遇到了严重的麻烦.

我不想再使用单个系统范围的PEAR了.我在一台服务器上有几十个网站,都使用通过PEAR渠道分发的各种库.其中一些网站很旧.有些具有冲突的依赖关系.每次出现一些新的软件包版本时,我都不想检查30个网站.但是,与此同时,当我在一个新网站上工作时,我不想被困在一些古老的包版本上.

我已经打破了很长一段时间了. PEAR作为一种分发机制似乎完全不适用于多个站点在同一服务器上运行的任何类型的设置.似乎无法在一台机器上维护许多并行PEAR存储库,或者将PEAR存储库检查为版本控制.

由于PEAR在安装时替换了PHP文件中的某些路径,而不是在运行时解析它们,因此似乎会导致很多问题.例如,Phing想知道PEAR data_dir的位置.安装文件phing / Phing.php时,字符串@ data_dir @将替换为当时data_dir.但这使得无法移动它或将其置于版本控制之下.

我知道Pyrus和PEAR2应该解决很多问题,但是在这一点上它们似乎不是可行的选择.我的许多网站都依赖于未移植到PEAR2的PEAR包. Pyrus对于PEAR通道实现非常挑剔,使许多PEAR1通道无法与Pyrex一起使用(例如,由于eZcomponents.org上的配置错误,PHPUnit拒绝与Pyrus一起安装).

因此,如果未来似乎通过PEAR渠道带来更多的软件包,我如何管理所有网站的所有依赖项?我不可能是唯一一个患此的人.比我聪明的人必须已经解决了这个问题.

编辑:到目前为止我找到了Pearanha.基本上它为您的特定项目生成一个自定义PEAR.这需要在构建步骤中集成,因为它不会使PEAR存储库可移动.

pear-switch承诺使PEAR存储库可移动,但它不起作用.它是硬编码来处理注册表文件和pearcmd.php中的硬编码包含路径,但它不处理在安装过程中替换为PHP文件的任何其他路径.

使用Pyrus,下一代梨安装程序,并按照 Using Pyrus To Manage PEAR Installable Vendor Libs中的说明进行操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧