Привычный способ ставить программы для Windows-пользователя — бродить по интернету в поисках нужных приложений. В *nix-системах такой способ используется значительно реже. Для установки программ придумали пакетные менеджеры, с которыми мы познакомимся в этом уроке.
В некоторых операционных системах есть пакетный менеджер по умолчанию, в других его надо устанавливать самостоятельно. Например, для macOS есть пакетный менеджер brew.
Далее, для всех примеров будет использоваться пакетный менеджер apt, который поставляется с Ubuntu. Например, установка PHP в Ubuntu выглядит так:
# Требует sudo, потому что мы устанавливаем в системную директорию
sudo apt install php
# Здесь будет много текста и вопрос, устанавливать ли? Если да, то PHP установится
php -v
PHP 7.4.3 (cli) (built: Feb 20 2020 08:51:50) ( NTS )
Пакетный менеджер состоит из нескольких частей. Одна из них взаимодействует с пользователем напрямую — это консольная утилита apt
. Для установки нужно набрать apt install
и далее указать имя необходимой программы.
Почти всегда пакетные менеджеры требуют запуска от суперпользователя root
, потому что установка программ происходит в системные директории, недоступные для записи обычному пользователю:
apt install php
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Но это не всегда так — например, в macOS не нужно использовать sudo
.
Установленные пакеты можно удалять. Для этого используется команда apt remove
:
apt remove php
# Тут тоже много вывода и вопрос, удалять ли?
На другом конце провода находится каталог пакетов. Во время попытки установить программу утилита apt
выполняет запрос в каталог и пытается понять, есть ли там пакет с таким именем. Если его нет, то вы об этом узнаете:
# Пакета wrongname не существует
sudo apt install wrongname
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package wrongname
Для экономии ресурсов и ускорения работы пакетный менеджер apt сохраняет индекс — список пакетов в каталоге. Индекс хранится на локальном диске и используется для работы пакетного менеджера.
Иногда это может приводить к ситуациям, что пакет в реальности существует, но apt
утверждает обратное. Если вы чувствуете подвох, то запустите ручное обновление локального индекса:
sudo apt update
# Теперь можно устанавливать
sudo apt install php
Здесь у вас может возникнуть как минимум три вопроса:
Как узнать, какой пакет ставить?
Когда нам нужно установить определенную программу, то самый очевидный способ сделать это — найти сайт программы и выполнить действия, указанные на странице «Скачать» (Download). Обычно на этой странице написаны инструкции по пакетному менеджеру и примеры команд. К примеру, такое описание есть у Node.js.
Другой способ: загуглить php install ubuntu. Вы найдете статьи с такими же инструкциями. Со временем вы запомните имена многих пакетов и сможете ставить их без инструкций.
Чем пакет отличается от программы?
Если коротко, пакет — это упаковка для программы. Сама программа ничего не знает о существовании своего пакета и пакетного менеджера. Чтобы пользователи могли установить программу через менеджер пакетов, ее разработчик заранее упаковывает программу в пакет.
В Ubuntu используется специальный формат пакетов, называемый deb. У этого формата есть подробная документация о том, как производить упаковку.
Как программы попадают в каталог?
Все сильно зависит от политики тех, кто поддерживает работу каталога. В некоторые каталоги попасть очень тяжело. Разработчики добавляют туда только проверенный софт, поэтому программы в них обновляют медленно. В других каталогах все происходит просто и быстро.
В любом случае нужно пройти некую процедуру, чтобы добавить программу в каталог. Это один из ключевых аспектов, по которому дистрибутивы Linux отличаются друг от друга. В любом случае эти каталоги огромны, в них входят десятки и сотни тысяч программ и библиотек.
Пакетные менеджеры есть не только в операционных системах. Любая экосистема, внутри которой возможно распространение библиотек или программ, имеет свой пакетный менеджер. Пакетные менеджеры есть у всех языков программирования. Большинство из них включены в языки по умолчанию:
- В Node.js — пакетный менеджер npm
- в PHP — Composer
- в Ruby — RubyGems
- в Python — pip
Самостоятельная работа
Утилита tree
умеет отображать в виде дерева структуру директорий и файлов, имеющихся на компьютере. Но чтобы начать работать с этой утилитой, ее нужно установить — в стандартный набор утилит она не входит.
Для этого воспользуйтесь пакетным менеджером:
- Установите пакетный менеджер для вашей операционной системы, если он еще не установлен
- Используя пакетный менеджер, установите программу
tree
- Запустите программу и убедитесь, что все работает корректно
Документацию по утилите можно посмотреть, выполнив в терминале команду man tree
.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты