<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатный перенос IT-инфраструктуры в облако

Как установить и использовать Composer в Ubuntu

Миша Курушин
Миша Курушин
Технический писатель
25 ноября 2024 г.
111
12 минут чтения
Средний рейтинг статьи: 5

Composer — это кроссплатформенный инструмент, позволяющий управлять зависимостями в проектах, которые написаны на языке программирования PHP.

С помощью Composer можно управлять множеством библиотек и фреймворков, которые называются «пакетами». Установив необходимые пакеты, можно расширить стандартные функции PHP, тем самым ускорив и упростив разработку. При этом все установленные пакеты становятся зависимостями проекта.

Таким образом, Composer можно считать полноценным менеджером зависимостей, которые характерны для множества языков программирования.

Помимо этого у Composer имеется полноценный реестр с репозиториями пакетов, именуемый Packagist — через него выполняется поиск, загрузка и установка необходимых пакетов.

Image4

Официальный реестр пакетов для Composer

В этом руководстве мы подробно рассмотрим процесс установки Composer в операционной системе Ubuntu с последующим использованием в проектах на языке программирования PHP.

Общий набор необходимых инструментов будет следующим:

  • Операционная система Ubuntu 22.04, запущенная на облачном сервере Timeweb Cloud
  • Интерпретатор PHP версии 8.1.2
  • Менеджер зависимостей Composer версии 2.8.2

Установка

Подготовка

Рекомендуется сперва обновить список существующих репозиториев APT:

sudo apt update

После этого потребуется установить пакеты, которые обеспечат дальнейшую загрузку и использование Composer:

sudo apt install curl php-cli unzip -y

В числе таких пакетов:

  • curl. Утилита для выполнения HTTP-запросов.
  • php-cli. Интерпретатор для запуска PHP-скриптов.
  • unzip. Утилита для распаковки ZIP-архивов.

Флаг -y необходим для положительного ответа на все вопросы во время установки.

Загрузка

Установка Composer выполняется автоматически с помощью PHP-скрипта, который создали сами разработчики менеджера зависимостей. Таким образом, установка Composer сводится к загрузке и запуску этого скрипта.

Загрузить установочный скрипт можно с официального сайте Composer, сделав соответствующий HTTP-запрос:

curl -sS https://getcomposer.org/installer -o composerInstall.php
  • Флаг -sS указывает на запуск curl в тихом режиме, когда не выводятся никакие сообщения, кроме ошибок.

  • Флаг -o указывает на директорию, в которую будет помещен загруженный файл, а также его имя, под которым он будет сохранен в системе.

Чтобы убедиться, что файл действительно был загружен, можно проверить содержимое текущей директории:

ls

В консольном терминале появится список файлов, среди которых будет установочный скрипт:

composerInstall.php  resize.log  snap

Установка

В этом руководстве выполняется глобальная установка Composer. То есть менеджер зависимостей будет запускаться в любом каталоге без необходимости явного указания абсолютного пути.

Для глобальной установки Composer нужно выполнить загруженный PHP-скрипт, передав ему несколько дополнительных параметров:

php composerInstall.php --install-dir=/usr/local/bin --filename=composer
  • Флаг --install-dir указывает на директорию, в которую будет установлен Composer.

  • Флаг --filename указывает на имя бинарного файла, к которому можно будет обращаться из терминала консоли.

В данном случае Composer устанавливается в системную директорию для бинарных файлов — /usr/local/bin.

После выполнения скрипта установки в консольном терминале появится результат его работы:

All settings correct for using Composer
Downloading...

Composer (version 2.8.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Так как установочный скрипт больше не нужен, его можно удалить:

rm composerInstall.php

Проверка

Если попытаться запустить Composer в первый раз:

composer

То в консольном терминале появится сообщение с вопросом:

Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]?

Composer сообщает о том, что его запуск от имени root-пользователя выполняется на свой страх и риск. Таким образом Composer создает предупреждает, но позволяет продолжить работу от имени администратора.

В рамках этого руководства мы будет работать с Composer как есть, поэтому соглашаемся с вопросом в консольном терминале. После этого в терминале появится стартовое приветствие, а также список возможных опций и команд с их кратким описанием.

Image2

Приветственное сообщение Composer со списком возможных опций и команд

Теперь Composer полностью установлен в систему, а значит его можно использовать для управления зависимостями любых проектов на PHP.

vds

Конфигурация

Основной файл, через который выполняется управление зависимостями, — composer.json. Внутри него описываются пакеты, необходимые для корректной работы проекта.

Таким образом, Composer следует подходу Infrastructure as Code (Iac), описывая локальную инфраструктуру проекта через конфигурационный файл, а не через ручное редактирование настроек в каком-либо графическом интерфейсе.

Тем не менее, Composer позволяет управлять файлом конфигурации не только вручную посредством редактирования его содержимого в текстовом редакторе, но и с помощью команд в консольном терминале — то есть в более интерактивном виде.

Основные команды

Использование Composer сопряжено с использованием нескольких базовых команд, каждая из которых в том или ином виде взаимодействует с конфигурационным файлом composer.json:

  • init. Инициализирует проект.

  • require. Подключает пакет.

  • install. Устанавливает зависимости.

  • update. Обновляет пакеты.

На самом деле Composer имеет намного больше команд, однако именно эти используются чаще всего.

Постановка задачи

Предположим, мы работаем над небольшим проектом, который выполняет различные строковые преобразования. Поэтому нам в качестве зависимости нужна некая специфическая библиотека, содержащая ряд функций для изменения содержимого строк.

В этом руководстве мы будем выполнять общую для многих языков программирования функцию slugify, которая преобразует последовательность слов в одно длинное слово, содержащее только строчные ASCII-символы и дефисы.

Чаще всего slugify используется для преобразования произвольных заголовков в формат URL-адресов без пробелов.

Например, заголовок «How to deal with Composer» с помощью функции slugify можно преобразовать в надпись «how-to-deal-with-composer», которая может использовать для URL-адреса страницы руководства по установке — «https://timeweb.cloud/tutorials/php/how-to-deal-with-composer».

А еще результат функции slugify похож на стиль именования переменных Kebab Case:

some-variable-name = 10

Чтобы не писать эту функцию самостоятельно, мы воспользуемся Composer и найдем соответствующую библиотеку в официальном реестре пакетов, включим ее в список зависимостей и позволим Composer автоматически выполнить ее загрузку, установку и включение в проект.

Создание каталога

Сперва создадим отдельный каталог для PHP-проекта:

mkdir phptest

После чего перейдем в него:

cd phptest

Здесь будет размещаться как исходный код проекта, так и файлы необходимых зависимостей.

Поиск библиотеки

Чтобы найти необходимую библиотеку, нам потребуется:

  • Ввести в поиск «slugify».

  • Найти наиболее подходящий пакет исходя из его параметров и описания.

Интересно, что в поиске дополнительно выводятся ключевые показатели каждого из доступных пакетов:

  • Количество установок через Composer (справа вверху)

  • Количество звезд на GitHub (справа внизу)

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

Image1

Поисковый вывод подходящий библиотек

В этом руководстве мы будем использовать пакет ocur/slugify. Название пакета (подобно репозиторию на GitHub) содержит имя автора (поставщика) и название библиотеки, разделенных символом косой черты (/).

Мы можем перейти на страницу пакета, кликнув по его названию, чтобы увидеть больше подробностей о реализации библиотеки. Например, это может быть список зависимостей, описание с примерами кода, бейджи покрытия тестами, тип лицензии и т.п.

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

Image3

Страница пакета ocur/slugify в реестре пакетов Composer

Таким образом можно искать и подбирать подходящие пакеты для PHP-проекта, которые впоследствии будут использоваться в качестве зависимости для предоставления специфических функций.

Установка зависимости

Для того, чтобы установить необходимый пакет, нужно воспользоваться командой require, которая либо записывает зависимость в конфигурационный файл composer.json, либо создает его, если его еще нет:

composer require cocur/slugify:4.6

В этом руководстве используется cocur/slugify версии 4.6.0.

После выполнения этой команды в терминале консоли может появиться ошибка, сообщающая о недостающих системных библиотеках:

./composer.json has been created
Running composer update cocur/slugify
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires cocur/slugify 4.1 -> satisfiable by cocur/slugify[v4.1.0].
    - cocur/slugify v4.1.0 requires ext-mbstring * -> it is missing from your system. Install or enable PHP's mbstring extension.

...

Этот консольный вывод сообщает о недостающей системной библиотеке ext-mbstring, которая требуется для корректной работы cocur/slugify.

Это библиотеку можно вручную попытаться найти в пакетной менеджере APT:

sudo apt search mbstring

После этого в консольном терминале появится список совпадений по названию:

Sorting... Done
Full Text Search... Done
php-mbstring/jammy 2:8.1+92ubuntu1 all
  MBSTRING module for PHP [default]

php-patchwork-utf8/jammy 1.3.1-1 all
  UTF-8 strings handling for PHP

php-symfony-polyfill-mbstring/jammy 1.24.0-1ubuntu2 all
  Symfony polyfill for the Mbstring extension

php-symfony-polyfill-util/jammy 1.24.0-1ubuntu2 all
  Symfony utilities for portability of PHP codes

php8.1-mbstring/jammy-updates,jammy-security 8.1.2-1ubuntu2.19 amd64
  MBSTRING module for PHP

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

sudo apt install php-mbstring -y

После завершения установки недостающей системной библиотеки снова запускаем установку пакета для Composer:

composer require cocur/slugify:4.6

На этот раз консольный вывод должен сообщить об успешной установке:

./composer.json has been created
Running composer update cocur/slugify
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking cocur/slugify (v4.6.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Downloading cocur/slugify (v4.6.0)
  - Installing cocur/slugify (v4.6.0): Extracting archive
Generating autoload files
No security vulnerability advisories found.

Теперь проверим содержимое директории проекта:

ls

Можно заметить новые сгенерированные файлы:

composer.json  composer.lock  vendor

Каждый файл и каталог имеет свое закономерное предназначение:

  • composer.json — файл с информацией о необходимых зависимостях

  • composer.lock — файл с информацией об уже установленных зависимостях

  • vendor — установленные зависимости проекта

Если вы используете систему контроля версий (например, Git), папку vendor нужно исключить из сохранения в репозиторий.

Интереснее всего взглянуть на содержимое конфигурационного файла:

cat composer.json

Внутри он выглядит так:

{
    "require": {
        "cocur/slugify": "4.6"
    }
}

Можно заметить отдельный блок require, в котором указан необходимый пакет cocur/slugify версии 4.6.

С помощью специальных символов можно указывать допустимые диапазоны версий, требуемых для корректной работы проекта — все они следуют общепринятому соглашению Semantic Versioning 2.0.0:

Ограничитель

Диапазон

Возможные значения

1.5.2

1.5.2

1.5.2

^1.0

от 1.0 до 2.0

1.0, 1.4.7, 1.9.9

^1.1.0

от 1.1.0 до 2.0

1.1.0, 1.2.5, 1.9.9

~1.0

от 1.0 до 2.0.0

1.0, 1.5.2, 1.9.9

~1.0.0

от 1.0.0 до 1.1

1.0.0, 1.0.2, 1.0.9

1.*

от 1.0 до 2.0

1.0.0, 1.3.2, 1.9.9

1.2.*

от 1.2 до 1.3

1.2.0, 1.2.4, 1.2.9

Более подробную информацию о возможных значениях версий можно посмотреть на специальной странице в официальной документации Composer.

Использование

Подключение

После того, как зависимость была установлена, ее можно включить в код проекта с помощью автоматически сгенерированного скрипта автозагрузки autoload.php, который находится в директории vendor.

При включении этого скрипта в PHP-приложение функции и классы существующих зависимостей станут доступны изнутри.

Поэтому давайте создадим основной файл нашего приложения:

sudo nano main.php

И наполним его следующим содержимым:

<?php
require __DIR__ . '/vendor/autoload.php';

use Cocur\Slugify\Slugify;

$slugify = new Slugify();

// Значение PHP_EOL необходимо для переноса на новую строку в консоли

echo '[русский]: ' . $slugify->slugify('Как справится с Composer') . PHP_EOL;
echo '[english]: ' . $slugify->slugify('How to deal with composer') . PHP_EOL;
?>

Теперь скрипт можно запустить:

php main.php

В консольном терминале появится следующий вывод:

[русский]: kak-spravitsya-s-composer
[english]: how-to-deal-with-composer

Обновление

В Composer есть возможность проверить наличие новых версий библиотек из списка зависимостей на основе диапазонов версий, заданных в конфигурационном файле composer.json:

composer update

Либо можно выполнить обновление избирательно, явно указав имя пакета:

composer update cocur/slugify

Установка

Если в директории вашего PHP-проекта есть файл composer.json, но при этом еще не установлены указанные в нем зависимости, то их нужно установить.

Давайте сперва удалим все имеющиеся пакеты и связанную с ними информацию:

rm vendor composer.lock -R

Флаг -R необходим для рекурсивного удаления файлов и директорий.

После этого попробуем запустить скрипт:

php main.php

В консоли появится закономерная ошибка:

PHP Warning:  require(/root/phptest/vendor/autoload.php): Failed to open stream: No such file or directory in /root/phptest/main.php on line 2
PHP Fatal error:  Uncaught Error: Failed opening required '/root/phptest/vendor/autoload.php' (include_path='.:/usr/share/php') in /root/phptest/main.php:2
Stack trace:
#0 {main}
  thrown in /root/phptest/main.php on line 2

Теперь повторно установим зависимости на основе данных из конфигурационного файла:

composer install

После чего снова запустим скрипт:

php main.php

В консоли появится привычный результат без каких-либо ошибок:

[русский]: kak-ustanovit-i-ispolzovat-composer
[english]: how-to-install-and-use-composer
Разверните свой PHP-проект на VDS

Заключение

Установка Composer в операционной системе Ubuntu 22.04 выполняется автоматически с помощью установочного скрипта, написанного на PHP. Этот скрипт необходимо предварительно скачать с официального сайта Composer.

Соответственно, для работы с Composer в системе должен быть установлен интерпретатор PHP.

Несмотря на то, что в Composer есть множество команд для управления конфигурационным файлом composer.json, на практике используется лишь несколько базовых:

  • composer init

  • composer require

  • composer install

  • composer update

Исчерпывающую информацию об использовании Composer можно найти в официальной документации.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
25 ноября 2024 г.
111
12 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев