Пакетный менеджер
Для установки программ, особенно связанных с разработкой, придумали пакетные менеджеры. Во вссех примерах использован пакетный менеджер apt, который поставляется с Kubuntu 20.04.
apt (advanced packaging tool) — программа для установки, обновления и удаления программных пакетов в операционных системах Debian и основанных на них (Ubuntu, Linux Mint и т. п.). Способна автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.
Пакеты берутся из интернет-репозиториев либо их можно установить с имеющихся носителей. Графические оболочки для apt позволяют легко добавлять новые и удалять ненужные источники.
Установка
Пакетный менеджер состоит из нескольких частей. Одна из них взаимодействует с пользователем напрямую — это консольная утилита apt. Для установки необходимой программы нужно набрать apt install и далее указать её имя.
Почти всегда пакетные менеджеры требуют запуска от суперпользователя (root), так как установка программ происходит в системные директории, недоступные для записи обычному пользователю.
Например, установка git выглядит так:
$ sudo apt install git
# Много текста и вопрос: Хотите продолжить? [Д/н]
Удаление
Пакеты можно удалять. Для этого используется команда apt remove:
$ apt remove git
На другом конце провода находится каталог так называемых пакетов. Во время попытки установить программу утилита apt выполняет запрос в каталог и пытается понять, есть ли там пакет с таким именем. Если его нет, то вы об этом узнаете:
ыudo apt install super-git
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package super-git
Обновление локального индекса
Для экономии ресурсов сети и ускорения работы apt сохраняет индекс (список пакетов в каталоге) на локальный диск и использует его для своей работы. Иногда это может приводить к ситуациям, что пакет в реальности существует, но apt утверждает обратное. Если вы чувствуете подвох, то запустите ручное обновление локального индекса:
$ sudo apt update
Пакет vs программа
Чем пакет отличается от программы?
Сама программа ничего не знает про существование пакетного менеджера. Но чтобы её можно было ставить через менеджер пакетов, она должна быть специальным образом "упакована". Это может сделать как автор программы, так и энтузиасты. В Ubuntu используется специальный формат пакетов, называемый deb. У этого формата есть подробная документация о том, как производить упаковку.
Как программы попадают в каталог?
А вот здесь всё сильно зависит от политики тех, кто его поддерживает. В некоторые каталоги попасть очень тяжело и программы в них обновляют медленно. Связано это с тем, что разработчики стараются добавлять туда только проверенный софт. В других всё происходит просто и быстро. В любом случае необходимо пройти некоторую процедуру, после которой программа будет добавлена. Это один из ключевых аспектов, по которому дистрибутивы Linux отличаются друг от друга. В любом случае эти каталоги огромны, в них входят десятки и сотни тысяч программ и библиотек.
Пакетные менеджеры есть у всех языков программирования, иногда несколько, большинство из них включены в языки по умолчанию. В Node.js (серверный JavaScript) пакетный менеджер npm, в PHP — Composer, в Ruby — RubyGems, в Python — pip.