dqk94069
2018-03-28 13:33 阅读 93
已采纳

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

I found there are two options to install PHP package globally in Linux (Ubuntu 16.04):

  1. Using composer:

    composer global require symfony/finder
    

    The package will be located at ~/.config/composer/vendor/

    enter image description here

  2. Using apt-get:

    apt-get install php-symfony-finder
    

    The package will be located at /usr/share/php/

    enter image description here

    This directory /usr/share/php/ is also in default PHPs include_path (I have PHP 7.2)

    enter image description here


There are several questions I have:

Why would I want to install package globally ?

I know it's useful to install php tools globally, like phpunit - It has binary file and it allows you to run tests everywhere, so you don't have to install it in every project. But what about symfony/finder for example ? What is particular use of this package installed globally ?

What is the difference between 1 and 2 option ?

Does it have any different use cases or different effects ?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dph58509 dph58509 2018-03-28 14:19

    Why would I want to install package globally ?

    Normally, these are dependencies you want to use in almost every project, because they are available at a system level you can use them without duplicating their dependencies in every application you create.

    For example, in my case I have php_md, php_cs for code formatting, phpunit for testing.

    What is the difference between 1 and 2 option ?

    Both are package managers, they make sure every package installed has the correct dependencies, so their core functionality is similar.

    Now, they have several differences:

    • Their focus in the packages they manage, composer is specific for php based packages but apt-get is for Linux and more system level oriented.
    • Their package database, composer uses packagist and apt-get uses a selection of repositories and ppas (you can find them in /var/lib/apt/lists/).
    • The package selection, since composer is specialized in php you can expect a wider variety in anything php related.

    In conclusion, you can clearly make it work with both, but I would recommend you to keep everything php related on composer, unifying them under the same manager.

    Any other difference or correction I've overlooked is welcome.

    点赞 评论 复制链接分享

相关推荐