# Пакетные менеджеры простыми словами: npm, brew, pip

Канонический URL: https://zero2claude.ru/blog/terminal-package-managers
Дата: 2026-09-10
Теги: терминал, новичкам, инструменты

Что такое пакетный менеджер и зачем он нужен — и чем npm отличается от brew и pip, простыми словами.

Ты читаешь инструкцию, и на третьей строчке тебе говорят: «установи зависимости через `npm install`». Или `brew install`. Или `pip install`. Команда вроде простая, но что именно она делает — туман. Что-то качается, бежит куча строк, и непонятно, куда всё это девается и зачем.

Хорошая новость: за этими тремя командами стоит одна и та же простая идея. Сейчас разберёмся, что такое пакетный менеджер, зачем он нужен и почему их сразу несколько.

<Cover src="/blog/terminal-package-managers.jpg" alt="Полки с готовыми деталями, из которых собирают проект" />

## Что такое пакет и зачем его «устанавливать»

Представь, что собираешь шкаф. Можно выточить каждый винтик и петлю самому — а можно взять готовый набор фурнитуры из магазина. **Пакет** — это и есть такой готовый набор: кусок чужого кода, который кто-то уже написал, проверил и выложил, чтобы ты не делал то же самое заново.

Нужно отправить письмо из программы? Кто-то уже написал для этого пакет. Нужно нарисовать график, обработать дату, разобрать таблицу? Готовые пакеты есть почти на всё. «Установить пакет» — значит скачать этот набор к себе и подключить к проекту, чтобы пользоваться.

А **пакетный менеджер** — это магазин с доставкой и складом. Он находит нужный пакет в общем хранилище и скачивает его. Тянет заодно всё, от чего этот пакет зависит, — одни наборы используют другие, это называется *зависимости*. Складывает скачанное по местам, чтобы проект знал, где что лежит. И умеет обновлять и удалять пакеты, когда нужно.

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

## npm, brew, pip — в чём разница

Их несколько, потому что они работают в разных мирах. Принцип у всех один — «найди и установи», — а вот **что** именно они ставят, отличается.

- **npm** — менеджер для **JavaScript**. Ставит пакеты для сайтов и веб-проектов. `npm install` обычно читает список нужного из файла `package.json` и тащит всё в папку `node_modules` прямо внутри проекта.
- **brew** (Homebrew) — менеджер для самого **компьютера** (на Mac, есть и на Linux). Им ставят не кусочки кода для проекта, а **целые программы**: тот же Node.js, базы данных, утилиты для терминала. Это магазин приложений, только через команду.
- **pip** — менеджер для **Python**. Ставит библиотеки для Python-проектов: анализ данных, автоматизацию, графики и прочее.

Запомнить легко по такому делению: **brew ставит инструменты на компьютер, а npm и pip — детали внутрь конкретного проекта** (каждый для своего языка). Команды при этом похожи как близнецы:

```bash
brew install node
npm install react
pip install requests
```

Структура всегда одна: *менеджер* + `install` + *что ставим*. Увидишь незнакомую команду в таком виде — теперь ты понимаешь, что происходит: что-то скачивается и подключается.

А откуда вообще берутся эти пакеты? У каждого менеджера есть свой большой склад в интернете — реестр. У npm это npmjs.com, у pip — PyPI, у brew — список «формул». Когда ты пишешь `npm install react`, менеджер идёт на этот склад, находит там пакет с именем `react`, скачивает нужную версию и кладёт к тебе. Тебе не надо знать ни адрес, ни ссылку на скачивание — достаточно имени. Поэтому установка и выглядит так коротко: всю беготню по складу менеджер берёт на себя.

<Callout type="tip">
Не смешивай менеджеры в голове. Если инструкция говорит `npm install`, а у тебя в ответ «команда не найдена» — скорее всего, не установлен сам Node.js (а его как раз ставят через brew). Это очень частая цепочка у новичков: сначала ставим инструмент через brew, потом этим инструментом ставим пакеты для проекта.
</Callout>

## А запоминать всё это обязательно?

Нет. Тебе не нужно держать в голове, какой менеджер за что отвечает и какие у него флаги. Если ты работаешь с Claude Code, можно просто описать ситуацию словами: «хочу подключить к проекту библиотеку для работы с датами» или «при запуске пишет, что не хватает какого-то пакета». Claude посмотрит, что это за проект, поймёт, какой менеджер тут нужен, и предложит конкретную команду — а заодно объяснит, что она делает.

Но базовое понимание всё равно бесценно. Когда ты знаешь, что **пакет — это готовый чужой код**, а **менеджер — магазин, который его доставляет**, ты перестаёшь бояться этих команд. `install` больше не магия: ты видишь строки в терминале и понимаешь — идёт доставка, скоро всё встанет на место.

## Что стоит запомнить

Если выкинуть подробности, остаётся простая картина:

- Пакет — это готовый кусок чужого кода, чтобы не писать всё с нуля.
- Менеджер — магазин, который этот код находит, скачивает и подключает одной командой.
- brew ставит программы на компьютер, npm и pip — детали внутрь проекта (JavaScript и Python).

Пакетные менеджеры — один из тех навыков, после которых терминал перестаёт казаться чужим. Один раз понял идею — и `npm`, `brew`, `pip` из пугающих заклинаний превращаются в обычные инструменты под рукой.
