【问题标题】:PHP package managerPHP 包管理器
【发布时间】:2011-02-26 01:33:09
【问题描述】:

有人知道 PEAR 的 PHP 包管理器库(例如 apt 或 yum 用于 linux 发行版)除了吗?我正在开发一个应该包含用于模块管理的包管理系统的系统。我设法使用 PEAR 获得了一个可行的解决方案,但是将 PEAR 客户端用于管理 PEAR 安装之外的任何其他事情并不是真正的最佳解决方案,因为它不是为此而设计的。我将不得不修改/扩展它(例如,实现安装/升级操作或将 PEAR 特定文件(如锁文件)从系统根目录移开),尤其是 CLI 客户端代码非常混乱且 PHP4.所以也许有人有一些建议

  • 用于易于使用和扩展的替代 PEAR 客户端库(服务器端有一些不错的实现,例如 Pirum 和 pearhub)
  • 用于用 PHP 编写的完全不同的包管理系统(理想情况下包括依赖项跟踪和不同的渠道)
  • 关于如何实施这样一个 PM 系统的一些一般性想法(是的,我仍在修改从头开始实施这样一个系统的想法)

我知道像 Magento 和 symfony 这样的大型系统使用 PEAR 作为他们的 PM。 Magento 使用原始 PEAR 客户端的破解版本(我想避免),symfony 的实现似乎与框架非常集成,但至少从头开始编写客户端将是一个很好的起点。无论如何,如果有人有建议:请:)

【问题讨论】:

  • 我不建议你自己写一个包管理器,除非是为了学习。例如,依赖管理并不是那么容易做到的。
  • 如果您发现了一些有趣的东西,或者真正开始一个新项目,请及时通知我们! ;) 顺便说一句,我最近在这里看到了一个关于“gnope”的问题(参见 sourceforge)。未对其进行测试,但似乎是某种图形包安装程序,可能与 PEAR 相关,但带有可重定位的包。但还没有真正检查过。
  • 除了以下建议之外,我还查看了 symfony 的 PEAR 安装程序实现,它是一组扩展原始 PEAR 的类。在库之上编写自己的客户端实现似乎很简单。

标签: php pear package-managers


【解决方案1】:

还有Composer

【讨论】:

  • 谢谢,当然是现在要走的路,但当时不在那里 :)
  • 只是对此发表评论 - 根据 Composer 的网站,“Composer 不是包管理器。是的,它处理“包”或库,但它在每个项目的基础上管理它们,安装它们在项目内的目录(例如供应商)中。默认情况下,它永远不会全局安装任何东西。因此,它是一个依赖项管理器。这是微妙的,但不同。 (不过,Composer 很棒。)
【解决方案2】:

PEAR2/Pyrus 为任意应用程序的包管理而构建的。我相信它是以 apt/yum 架构为蓝本的。

Helgi - PEAR 核心成员 - 在这里介绍了其中的一些内容 - http://www.slideshare.net/helgith/pear2-pyrus-the-look-ahead 但文档也非常可靠:http://pear.php.net/manual/en/pyrus.extending.installation.php

【讨论】:

  • PEAR2 似乎患有命名空间炎。而不是好的。
  • 我知道 Pyrus 并考虑过使用它,但不知何故我没有找到您链接到的文档...对使用 PEAR2 系统有很大帮助,谢谢。
  • @Mathias 我希望在 web2project 中使用它来解决我们所有的模块管理问题。我喜欢事物的依赖管理方面。
【解决方案3】:

你检查过Maven for PHP吗?我只在 Java 应用程序的上下文中使用过 Maven,但它肯定是:

  • 易于扩展 - 实现 Maven 插件真的很容易
  • 管理依赖项 - 区分编译、测试和运行时依赖项(尽管编译/运行时区分在 PHP 中没有意义)。
  • 存储库很容易建立 - 带有 mod_dav 的 Apache 将为您提供一个可工作的可写存储库,但您也有 Nexus
  • 将快照与稳定的工件区分开来;对于何时检查新的快照工件以及从哪些存储库获取每种类型,允许使用多种策略。

还有很多——很多——更多的东西。

【讨论】:

  • 我只知道 Maven 与持续集成结合使用,但它似乎非常强大 - 感谢您的建议,我一定会尝试一下。
猜你喜欢
  • 2023-04-07
  • 2013-07-02
  • 2015-02-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多