Глобальный установочный пакет PHP: apt-get vs composer

Я обнаружил, что есть два варианта глобальной установки пакета PHP в Linux (Ubuntu 16.04):

  1. Использование composer:

    composer global require symfony/finder
    

    Пакет будет расположен по адресу ~/.config/composer/vendor/.

    Глобальный установочный пакет PHP: apt-get vs composer

  2. Использование apt-get:

    apt-get install php-symfony-finder
    

    Пакет будет расположен по адресу /usr/share/php/.

    Глобальный установочный пакет PHP: apt-get vs composer

    Этот каталог /usr/share/php/ также находится в PHP по умолчанию include_path (у меня PHP 7.2)

    Глобальный установочный пакет PHP: apt-get vs composer


У меня есть несколько вопросов:

Зачем мне устанавливать пакет глобально?

Я знаю, что полезно устанавливать инструменты php глобально, например phpunit - у него есть двоичный файл, и он позволяет запускать тесты везде, поэтому вам не нужно устанавливать его в каждом проекте. А что, например, с symfony/finder? Какое конкретное использование этого пакета устанавливается глобально?

В чем разница между 1 и 2 вариантом?

Есть ли у него разные варианты использования или разные эффекты?

Слишком много вопросов за один раз. НО одна особенность apt-get заключается в том, что вы должны выбрать версию, определенную в пакетах. Обычно они немного отстают от последних версий - иногда совсем немного.

Nigel Ren 28.03.2018 15:37

Я полагаю, что есть вещи, которые используются не только php. В этом случае вы сделаете apt-get. (возможно, я скажу что-нибудь глупое, но я думал о wkhtmltopdf)

Lilian Barraud 28.03.2018 15:38

Версия, установленная с apt-get, является глобальной; его могут использовать другие пользователи системы. Тот, который установлен с composer, находится в вашем домашнем каталоге; только ты можешь им пользоваться. Если вы единственный пользователь компьютера, это не имеет значения. Однако версия, установленная с помощью composer, всегда является самой последней версией, в то время как версия, установленная с помощью apt-get, обновляется реже, и в какой-то момент она может быть заморожена и больше не обновляться.

axiac 28.03.2018 15:39

Как вы сказали, Phpunit - это инструмент. symfony / finder является частью проекта / зависимости проекта, поэтому вы должны сохранять его для каждого проекта. Представьте, что вы разрабатываете один проект symfony4 и поддерживаете другой, работающий на symfony 2.7. Не существует одинаковых версий Finder, поэтому вам придется сохранить 2 версии вашего глобально установленного Finder. Или вам нужно будет сохранить разные версии для ветки dev и для ветки master. Перебор

Eakethet 28.03.2018 15:40

@Nigel Да, слишком много, вопрос об окнах для меня вообще не имеет значения. Первый и второй вопросы я думаю немного одинаковы. В любом случае все комментарии хорошие.

Alexey Chuhrov 28.03.2018 15:55

@Lilian Это имеет смысл

Alexey Chuhrov 28.03.2018 15:55

@axiac Спасибо, не подумал об этом. Я единственный пользователь компьютера

Alexey Chuhrov 28.03.2018 15:55

Глобальная установка phpunit - плохая идея просто потому, что это очень активный проект с частыми изменениями, необходимыми для поддержки последних версий php. Вы быстро столкнетесь с ситуацией, когда одному приложению нужна одна версия phpunit, а другому приложению - другая. Я думаю, что возможность глобальной установки - это всего лишь пережиток более ранней эпохи.

Cerad 28.03.2018 15:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
8
940
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Зачем мне устанавливать пакет глобально?

Обычно это зависимости, которые вы хотите использовать в почти в каждом проекте, поскольку они доступны на системном уровне, вы можете использовать их, не дублируя их зависимости в каждом создаваемом вами приложении.

Например, в моем случае у меня есть 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, объединяя их под одним и тем же менеджером.

Приветствуются любые другие различия или исправления, которые я не заметил.

Другие вопросы по теме