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

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

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

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

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

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

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

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

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

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

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

Допустим, менеджер пакетов ставит пакет «Волшебный веб-сайт за 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 в виртуальную машину и поэкспериментируем с менеджером пакетов — посмотрим, что он умеет, чем полезен и как с ним работать.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

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

Бесплатный движок с классной графикой, реалистичной физикой и понятным интерфейсом.

easy
Facebook хранил наши пароли в виде текста. Что это значит?
Facebook хранил наши пароли в виде текста. Что это значит?

Тут такое!

easy
Как устроена RTOS — операционная система реального времени
Как устроена RTOS — операционная система реального времени

Операционка для критически важных задач

medium
Как быстро освоить новую технологию
Как быстро освоить новую технологию

Пробуем метод разработчика из Яндекс.Практикума.

medium
Как компьютер научился обыгрывать человека в го и StarCraft
Как компьютер научился обыгрывать человека в го и StarCraft

И какая от этого польза человечеству

medium
Как устроен Практикум

И зачем там столько тренажёров.

easy
Почему разработчик сегодня злой
Почему разработчик сегодня злой

Три главные проблемы в работе программиста и как с ними быть.

easy
SSL-сертификаты и безопасный интернет

Ваше соединение надёжно защищено. Или нет.

easy
Английский для разработчика: что можно получить в «Яндекс Практикуме»
Английский для разработчика: что можно получить в «Яндекс Практикуме»

Как разработчику выучить язык и зачем это может быть нужно

easy
Карьера в Selectel: приходите строить большие российские облака
Карьера в Selectel: приходите строить большие российские облака

Кто нужен, чтобы развивать российскую ИТ-инфраструктуру

easy
easy