Education 1.1 Help

Пакетный менеджер

Привычный способ ставить программы для 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

Здесь у вас может возникнуть как минимум три вопроса:

  1. Как узнать, какой пакет ставить?

    Когда нам нужно установить определенную программу, то самый очевидный способ сделать это — найти сайт программы и выполнить действия, указанные на странице «Скачать» (Download). Обычно на этой странице написаны инструкции по пакетному менеджеру и примеры команд. К примеру, такое описание есть у Node.js.

    Другой способ: загуглить php install ubuntu. Вы найдете статьи с такими же инструкциями. Со временем вы запомните имена многих пакетов и сможете ставить их без инструкций.

  2. Чем пакет отличается от программы?

    Если коротко, пакет — это упаковка для программы. Сама программа ничего не знает о существовании своего пакета и пакетного менеджера. Чтобы пользователи могли установить программу через менеджер пакетов, ее разработчик заранее упаковывает программу в пакет.

    В Ubuntu используется специальный формат пакетов, называемый deb. У этого формата есть подробная документация о том, как производить упаковку.

  3. Как программы попадают в каталог?

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

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

Пакетные менеджеры есть не только в операционных системах. Любая экосистема, внутри которой возможно распространение библиотек или программ, имеет свой пакетный менеджер. Пакетные менеджеры есть у всех языков программирования. Большинство из них включены в языки по умолчанию:

  • В Node.js — пакетный менеджер npm

  • в PHP — Composer

  • в Ruby — RubyGems

  • в Python — pip

Самостоятельная работа

Утилита tree умеет отображать в виде дерева структуру директорий и файлов, имеющихся на компьютере. Но чтобы начать работать с этой утилитой, ее нужно установить — в стандартный набор утилит она не входит.

Для этого воспользуйтесь пакетным менеджером:

  • Установите пакетный менеджер для вашей операционной системы, если он еще не установлен

  • Используя пакетный менеджер, установите программу tree

  • Запустите программу и убедитесь, что все работает корректно

  • Документацию по утилите можно посмотреть, выполнив в терминале команду man tree.

Вопросы для самопроверки

Как правильно установить PHP, если вы работаете в Ubuntu?

  • sudo apt install php

  • brew install php

  • Скачать установщик с официального сайта и запустить его

Представьте, что ваш пакетный менеджер может вывести сообщение:

  • Устарел индекс, нужно запустить apt update

  • Не хватает прав на запуск apt

  • Пакета с таким именем не существует

Посмотрите документацию утилиты apt. Как с помощью этой утилиты найти пакет по слову в описании?

  • apt search php

  • apt show php

  • apt look php

Last modified: 12 June 2024