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

Dan*_*ler 3 php linux apt-get symfony composer-php

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

  1. 使用composer

    composer global require symfony/finder
    
    Run Code Online (Sandbox Code Playgroud)

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

    在此处输入图片说明

  2. 使用apt-get

    apt-get install php-symfony-finder
    
    Run Code Online (Sandbox Code Playgroud)

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

    在此处输入图片说明

    此目录/usr/share/php/也在默认 PHP 中include_path(我有 PHP 7.2)

    在此处输入图片说明


我有几个问题:

为什么我要全局安装包?

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

1 和 2 选项有什么区别?

它有什么不同的用例或不同的效果吗?

Asu*_*sur 5

为什么我要全局安装包?

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

例如,在我的情况下,我有php_mdphp_cs用于代码格式化,phpunit用于测试。

1 和 2 选项有什么区别?

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

现在,它们有几个区别:

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

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

欢迎我忽略的任何其他差异或更正。