全局PHP安装包:apt-get vs composer
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 PHPsinclude_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 ?
我发现有两种方法可以在Linux(Ubuntu 16.04)中全局安装PHP包: p>
-
使用
composer code>: p>
composer global require symfony / finder code>
包将位于
〜/ .config / composer / vendor / code> p>
使用
apt-get code>: p>
apt-get 安装php-symfony-finder code> pre>
该软件包将位于
/ usr / share / php / code> p> \ n
此目录
/ usr / share / php / code>也是默认的PHP
include_path code>(我有PHP 7.2) p>
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 forphp
based packages butapt-get
is for Linux and more system level oriented. - Their package database,
composer
uses packagist andapt-get
uses a selection of repositories and ppas (you can find them in/var/lib/apt/lists/
). - The package selection, since
composer
is specialized inphp
you can expect a wider variety in anythingphp
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.