Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

linux - PHP install package globally: 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 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...