I found there are two options to install PHP package globally in Linux (Ubuntu 16.04):
Using composer
:
composer global require symfony/finder
The package will be located at ~/.config/composer/vendor/
Using apt-get
:
apt-get install php-symfony-finder
The package will be located at /usr/share/php/
This directory /usr/share/php/
is also in default PHPs include_path
(I have PHP 7.2)
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 ?
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:
composer
is specific for php
based packages but apt-get
is for Linux and more system level oriented.composer
uses packagist and apt-get
uses a selection of repositories and ppas (you can find them in /var/lib/apt/lists/
).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.