Недавно мы поговорили о том, что такое менеджер пакетов и зачем он нужен. Вот основное, если пропустили:
- Существует программа «менеджер пакетов».
- У этого менеджера есть библиотека программ где-то на сервере в интернете.
- Вы говорите менеджеру: «Установи мне такую-то программу». Если она есть в библиотеке, менеджер её выкачает и установит.
- Пакет — это набор файлов и инструкций, которые вместе дают вам рабочую программу или библиотеку на вашем компьютере.
- Менеджер умеет читать эти пакеты, скачивать, устанавливать, обновлять и удалять.
- Ещё менеджеры занимаются зависимостями: когда одной программе для работы нужны другие, он их тоже скачивает и устанавливает.
- Благодаря менеджеру пакетов вы можете установить множество программ одной строчкой в командной строке. Например, вы говорите: «Установи мне такую-то систему машинного обучения». И дальше он сам ставит вам все библиотеки, всю математику, все базы данных и вообще всё, что нужно для работы этой системы.
Сегодня будет практика: поработаем с менеджером пакетов в Ubuntu и посмотрим, на что он способен.
Менеджеры пакетов — линуксовая тема, в Windows и Mac OS их нет. При желании, конечно, можно поставить какие-то менеджеры и туда и туда, но всей мощи, как у менеджеров в Linux, у них не будет.
Дело в том, что Linux — это прежде всего командная строка, и красивых окон там может и не быть. Чтобы управлять программами, пользователям нужен был отдельный инструмент — им стал как раз менеджер пакетов.
Что нам понадобится
Чтобы посмотреть, как работает и что умеет менеджер пакетов, будем использовать Ubuntu — популярный дистрибутив Linux как среди разработчиков, так и у обычных пользователей. В нём используется менеджер пакетов apt, поэтому все команды у нас будут начинаться именно с apt, например apt list --installed
.
В Ubuntu нам нужно запустить командную строку — всё управление менеджером пакетов будет там. Для этого нажимаем на точки в левом нижнем углу и в общем списке приложений выбираем Terminal:


Смотрим, что у нас есть
Чтобы посмотреть список всех установленных программ, выполняем такое:
apt list --installed

Список получился огромный, на пару десятков экранов, потому что команда показала нам вообще всё, что у нас есть. Если нам среди этого нужно найти, например, Python, чтобы знать, надо его ставить или нет, добавим к команде | grep — он отберёт только те варианты, которые нам нужны:
apt list --installed | grep python

Видно, что на компьютере уже есть Python третьей версии, поэтому можно сразу проверить, какая версия сейчас установлена. Для этого используем команду python3 --version
:

Обновляем то, что уже установлено
Перед тем как устанавливать что-то новое, обычно обновляют все программы в системе. Это часто выручает в ситуациях, когда новой программе требуется более свежие версии пакетов, чем те, которые у нас есть.
Чтобы посмотреть, что будет обновляться, набираем в терминале такую команду:
apt list --upgradable
Если обновлять нечего, компьютер не покажет ни одной программы:

А если обновлений накопилось много, система покажет, у каких программ появились новые версии:

Чтобы обновить всё, используем команду apt upgrade
— она сама сходит в репозиторий (хранилище программ) на сервере, заберёт оттуда последние версии и установит их вместо старых. Кайф в том, что сколько бы ни было необновлённых программ, менеджер пакетов пройдёт их по очереди и сделает всё сам. Это может занять много времени, но вас он тревожить не будет.
Устанавливаем новое
Ситуация: мы хотим смотреть видео и слушать музыку у себя на компьютере, но плеера у нас ещё нет. Проверенный вариант — использовать открытый и бесплатный VLC Player.
Сначала посмотрим информацию о пакете, используя команду apt show vlc
— она выведет описание пакета и какие там зависимости:

Устанавливаем плеер командой sudo apt install vlc
. Sudo означает, что команда выполнится от имени суперпользователя (администратора) — без этого установить новую программу не получится. После установки у нас появилась новая программа в меню приложений:


Удаляем ненужное
Если программа больше не нужна, её можно удалить такими командами:
sudo apt remove
название — программа удалится, но настройки и данные останутся;
sudo apt purge
название — если настройки программы и прочие её файлы вам уже не нужны;

Во время удаления VLC появилось сообщение, что хоть пакет vlc и удалён, но в системе осталось много пакетов, которые шли вместе с ним при установке (зависимости). Чтобы их тоже удалить, используем команду sudo apt autoremove
— она посмотрит, какие пакеты больше никем не используются, и удалит их:

Для перестраховки некоторые системные администраторы перед удалением программы смотрят, зависит ли от неё работа других программ. Для этого они пишут в консоли apt-cache rdepends --installed название
, например:
apt-cache rdepends --installed ssh — покажет все программы, которые зависят от ssh

Получается, что если мы удалим пакет ssh, то перестанут работать две другие программы: openssh-server и openssh-client.
Корова
Разработчики apt оставили нам подарок. Если выполнить команду apt-get moo
, то появится корова, которая спросит, мычали вы сегодня или нет:

Что дальше
Когда-нибудь мы ещё вернёмся к линуксу, менеджеру пакетов и работе в командной строке. Например, посмотрим, как можно быстро обрабатывать аудио и текст, не выходя из терминала.