PHP 全局安装包:apt-get vs composer

PHP install package globally: apt-get vs composer

我发现有两个选项可以在 Linux (Ubuntu 16.04) 中全局安装 PHP 包:

  1. 使用composer:

    composer global require symfony/finder
    

    包裹将位于~/.config/composer/vendor/

  2. 使用apt-get:

    apt-get install php-symfony-finder
    

    包裹将位于/usr/share/php/

    这个目录/usr/share/php/也是默认的PHPsinclude_path(我有PHP7.2)


我有几个问题:

为什么我要全局安装包?

我知道全局安装 php 工具很有用,比如 phpunit - 它有二进制文件,它允许你在任何地方进行 运行 测试,所以你不必在每个项目中安装它。 但是,例如 symfony/finder 呢?全局安装的这个包有什么特殊用途?

选项1和选项2有什么区别?

它有任何不同的用例或不同的效果吗?

为什么我要全局安装包?

通常,这些是您希望在 几乎 每个项目中使用的依赖项,因为它们在系统级别可用,您可以使用它们而无需在您创建的每个应用程序中复制它们的依赖项.

例如,在我的例子中,我有 php_mdphp_cs 用于代码格式化,phpunit 用于测试。

选项1和选项2有什么区别?

两者都是包管理器,它们确保安装的每个包都具有正确的依赖项,因此它们的核心功能相似。

现在,它们有几点不同:

  • 他们专注于他们管理的包,composer 特定于基于 php 的包,但 apt-get 是针对 Linux 和更多面向系统级别的包。
  • 他们的包数据库,composer 使用 packagistapt-get 使用精选的存储库和 ppas(您可以在 /var/lib/apt/lists/ 中找到它们)。
  • 软件包选择,因为 composer 专用于 php,您可以期待更多与 php 相关的内容。

总而言之,你可以清楚地让它与两者一起工作,但我建议你保留所有 php 与 composer 相关的内容,将它们统一在同一个管理器下。

欢迎提出我遗漏的任何其他差异或更正。