Менеджер пакетов

Оригинальное название: package manager

Коротко

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

Что такое «Менеджер пакетов»

Современный проект редко пишется с нуля: отправка почты, работа с изображениями, клиент для API — всё это готовые библиотеки. У каждой есть свои зависимости, у тех — свои. Скачивать их вручную и следить за совместимостью версий нереально. Менеджер пакетов берёт эту работу на себя: разработчик указывает, что нужно, а инструмент находит подходящие версии в реестре и раскладывает файлы по местам.

Единица распространения — пакет: код библиотеки плюс описание с названием, версией и списком зависимостей.

Манифест и lock-файл

У менеджера два ключевых файла. Манифест (composer.json, package.json) перечисляет прямые зависимости с допустимыми диапазонами версий: запись ^7.8 означает «7.8 или новее, но не 8.0». Lock-файл (composer.lock, package-lock.json) фиксирует точные версии всего дерева, включая зависимости зависимостей. Его коммитят в репозиторий, чтобы на сервере и у коллег установилось ровно то же, что у вас.

Пример: Composer в проекте на PHP

composer require guzzlehttp/guzzle   # добавить пакет и записать в composer.json
composer install                     # поставить версии строго по composer.lock
composer update guzzlehttp/guzzle    # обновить пакет в пределах диапазона
composer audit                       # проверить известные уязвимости

После установки код подключается одной строкой require __DIR__ . '/vendor/autoload.php';, а классы загружаются автоматически. На боевом сервере выполняют composer install --no-dev, чтобы не тащить инструменты разработки.

Системные и языковые менеджеры

  • Языковые работают внутри проекта: Composer для PHP, npm, Yarn и pnpm для JavaScript, pip для Python.
  • Системные ставят программы в операционную систему: apt в Debian и Ubuntu, dnf в Fedora, Homebrew в macOS. Через apt на сервер ставят PHP, nginx и MariaDB, через Composer — библиотеки конкретного сайта.

Частая ошибка — запускать update на боевом сервере: туда приедут новые версии, которые никто не проверял. Обновляют локально, тестируют, коммитят lock-файл, а на сервере выполняют только install.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение