Я обнаружил, что есть два варианта глобальной установки пакета PHP в Linux (Ubuntu 16.04):
Использование composer:
composer global require symfony/finder
Пакет будет расположен по адресу ~/.config/composer/vendor/.
Использование apt-get:
apt-get install php-symfony-finder
Пакет будет расположен по адресу /usr/share/php/.
Этот каталог /usr/share/php/ также находится в PHP по умолчанию include_path (у меня PHP 7.2)
У меня есть несколько вопросов:
Зачем мне устанавливать пакет глобально?
Я знаю, что полезно устанавливать инструменты php глобально, например phpunit - у него есть двоичный файл, и он позволяет запускать тесты везде, поэтому вам не нужно устанавливать его в каждом проекте.
А что, например, с symfony/finder? Какое конкретное использование этого пакета устанавливается глобально?
В чем разница между 1 и 2 вариантом?
Есть ли у него разные варианты использования или разные эффекты?
Я полагаю, что есть вещи, которые используются не только php. В этом случае вы сделаете apt-get. (возможно, я скажу что-нибудь глупое, но я думал о wkhtmltopdf)
Версия, установленная с apt-get, является глобальной; его могут использовать другие пользователи системы. Тот, который установлен с composer, находится в вашем домашнем каталоге; только ты можешь им пользоваться. Если вы единственный пользователь компьютера, это не имеет значения. Однако версия, установленная с помощью composer, всегда является самой последней версией, в то время как версия, установленная с помощью apt-get, обновляется реже, и в какой-то момент она может быть заморожена и больше не обновляться.
Как вы сказали, Phpunit - это инструмент. symfony / finder является частью проекта / зависимости проекта, поэтому вы должны сохранять его для каждого проекта. Представьте, что вы разрабатываете один проект symfony4 и поддерживаете другой, работающий на symfony 2.7. Не существует одинаковых версий Finder, поэтому вам придется сохранить 2 версии вашего глобально установленного Finder. Или вам нужно будет сохранить разные версии для ветки dev и для ветки master. Перебор
@Nigel Да, слишком много, вопрос об окнах для меня вообще не имеет значения. Первый и второй вопросы я думаю немного одинаковы. В любом случае все комментарии хорошие.
@Lilian Это имеет смысл
@axiac Спасибо, не подумал об этом. Я единственный пользователь компьютера
Глобальная установка phpunit - плохая идея просто потому, что это очень активный проект с частыми изменениями, необходимыми для поддержки последних версий php. Вы быстро столкнетесь с ситуацией, когда одному приложению нужна одна версия phpunit, а другому приложению - другая. Я думаю, что возможность глобальной установки - это всего лишь пережиток более ранней эпохи.






Зачем мне устанавливать пакет глобально?
Обычно это зависимости, которые вы хотите использовать в почти в каждом проекте, поскольку они доступны на системном уровне, вы можете использовать их, не дублируя их зависимости в каждом создаваемом вами приложении.
Например, в моем случае у меня есть php_md, php_cs для форматирования кода, phpunit для тестирования.
В чем разница между 1 и 2 вариантом?
Оба являются менеджерами пакетов, они следят за тем, чтобы каждый установленный пакет имел правильные зависимости, поэтому их основные функции аналогичны.
Теперь у них есть несколько отличий:
composer специфичен для пакетов на основе php, но apt-get предназначен для Linux и более ориентирован на системный уровень.composer использует упаковщик, а apt-get использует набор репозиториев и ppas (вы можете найти их в /var/lib/apt/lists/).composer специализируется на php, вы можете ожидать более широкого разнообразия всего, что связано с php.В заключение, вы можете явно заставить его работать с обоими, но я бы рекомендовал вам сохранить все, что связано с php, на composer, объединяя их под одним и тем же менеджером.
Приветствуются любые другие различия или исправления, которые я не заметил.
Слишком много вопросов за один раз. НО одна особенность apt-get заключается в том, что вы должны выбрать версию, определенную в пакетах. Обычно они немного отстают от последних версий - иногда совсем немного.