Что такое менеджер пакетов в программировании
easy

Что такое менеджер пакетов в программировании

Система, которая наводит порядок в ваших библиотеках

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

Пакетные менеджеры выглядят сложновато со стороны, но когда раскуришь их, становится понятно, легко и интересно. Расскажем обо всём этом сегодня. 

Что такое пакет и чем он отличается от обычной программы

Пакет — это специальный набор файлов и данных. В пакете содержится:

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

В обычной программе-установщике всё это тоже есть, но установщик может сам выполнить все необходимые команды и установить программу, а пакет — нет. Для установки и управления пакетами как раз и нужен менеджер пакетов. 

Зависимости и менеджер пакетов

Кроме установки, у менеджера пакетов много работы, но основная — распутать все зависимости. Зависимость пакетов — это когда для работы одного пакета требуется установка нескольких других, причём определённых версий. 

Допустим, менеджер пакетов ставит пакет «Волшебный веб-сайт за 10 минут», смотрит его зависимости и понимает, что для работы ему нужны:

  • база данных MySQL 7-й версии;
  • утилита ssh любой версии;
  • веб-сервер Apache версии 2.4.0 или позднее.

Менеджер пакетов смотрит в список уже установленных программ и видит, что ssh уже стоит, Apache есть версии 2.4.2, а MySQL вообще не установлена. Это значит, что он первую установку ставит на паузу и начинает качать и устанавливать пакет с MySQL 7-й версии. С ним повторяется то же самое — менеджер смотрит, какие пакеты указаны в зависимостях, качает их и ставит. Как только всё установлено — возвращается к первоначальной задаче и ставит пакет «Волшебный веб-сайт за 10 минут».

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

Удаление пакетов

Отдельная задача менеджера пакетов — проследить, чтобы при удалении пакета также удалились и все его зависимости (то, что нужно было ему для работы). Но при этом менеджер посмотрит, а не использует ли другой пакет что-то из этих зависимостей. Если использует — менеджер не будет её удалять, а оставит для другой программы.

Что такое репозиторий

Репозиторий — это место, где хранятся пакеты. Проще говоря, какие-то чужие компьютеры. 

Обычно у каждого семейства операционных систем свой репозиторий и свой менеджер пакетов, который с ним работает. Например:

  • dpkg — менеджер пакетов для Debian. В репозитории Debian огромное количество пакетов — он работает с 1994 года.
  • rpm — менеджер пакетов для RedHat Linux.
  • portage — менеджер для Gentoo. Его особенность в том, что все программы компилируются при установке под то железо и процессор, который установлен в системе. Это даёт прирост производительности, но усложняет установку программ.

Почти все менеджеры пакетов работают из командной строки — это стандарт в Linux- и UNIX-системах. Например, команда rpm MySQL-server-standard-5.0.24-0.rhel4.i386.rpm установит MySQL в Red Hat Linux, а команда emerge --ask dev-db/phpmyadmin скачает исходные файлы панели управления базы данных и скомпилирует их в Gentoo Linux:

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

Менеджеры пакетов в программировании

На самом деле мы уже пользовались менеджерами пакетов, когда делали свои проекты:

Здесь мы использовали pip — менеджер пакетов для Python. С его помощью мы устанавливали все необходимые библиотеки, без которых приложение бы не работало. Например, вот что можно сделать с pip:

pip install plotly — установить библиотеку plotly, чтобы мы могли рисовать графики

pip check pandas — проверить зависимости у выбранного пакета

pip uninstall telebot — удалить библиотеку для работы с телеграм-ботом

А для проекта с тепловыми картами твитов Байдена и Трампа нам нужны были три библиотеки, и мы использовали команду pip list, чтобы посмотреть, есть они у нас или нет.

Что такое менеджер пакетов в программировании
Пакеты, которые нам наменеджерил pip для работы с проектами в Python

А в проекте с менеджером паролей мы вовсю использовали npm — менеджер пакетов Node.js: с его помощью мы установили Электрон и превратили веб-проект в отдельное приложение:

Что такое менеджер пакетов в программировании
Устанавливаем через npm среду electron, в которой соберётся наше приложение

Вот ещё несколько команд npm:

npm update -g npm — обновить сам менеджер пакетов

npm install mysql — установить базу данных MySQL

npm install-test <название пакета> — установить пакет и проверить тестами его работу

Бытовые менеджеры

В каком-то смысле магазины приложений типа AppStore и RuStore — это тоже менеджеры пакетов: 

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

Вместе с тем на Android и Mac OS можно установить приложения в обход сторов. Кому что удобнее. 

Когда менеджера пакетов нет

В Windows каждое приложение отвечает само за себя: если нужно что-то установить, обновить или удалить, вы просто это делаете. С одной стороны, это удобно, а с другой не очень: 

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

Жить с этим можно, но это не лучший вариант. 

Что дальше

Чтобы было интереснее, мы установим Linux в виртуальную машину и поэкспериментируем с менеджером пакетов — посмотрим, что он умеет, чем полезен и как с ним работать.

Читаете «Код»? Зарабатывайте на коде
Сфера ИТ и разработки постоянно растёт и требует новых кадров. Компании готовы щедро платить даже начинающим разработчикам, а опытных вообще отрывают с руками. Обучиться на разработчика можно в «Яндекс Практикуме».
Начать бесплатно
Читаете «Код»? Зарабатывайте на коде Читаете «Код»? Зарабатывайте на коде Читаете «Код»? Зарабатывайте на коде Читаете «Код»? Зарабатывайте на коде
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy