Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Пакетный менеджер Основы командной строки

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

В некоторых операционных системах есть пакетный менеджер по умолчанию, в других отсутствует и его надо устанавливать самостоятельно:

Далее, для всех примеров будет использоваться пакетный менеджер apt, который поставляется с Ubuntu. Например, установка PHP в Ubuntu выглядит так:

# Требует sudo, потому что установка идет в системные директории
$ sudo apt install php
# Здесь будет много текста и вопрос, устанавливать ли? Если да, то установится PHP
$ php -v
PHP 7.2.7 (cli) (built: Jun 22 2018 06:27:50) ( NTS )

Пакетный менеджер состоит из нескольких частей. Одна из них взаимодействует с пользователем напрямую — это консольная утилита apt. Для установки необходимой программы нужно набрать apt install и далее указать её имя. Почти всегда пакетные менеджеры требуют запуска от суперпользователя (root), так как установка программ происходит в системные директории, недоступные для записи обычному пользователю (но это не всегда так, в macOS не нужно использовать sudo).

$ 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?

Установленные пакеты можно удалять. Для этого используется команда 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 (серверный JavaScript) пакетный менеджер npm, в PHP — Composer, в Ruby — RubyGems, в Python — pip.

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

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

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
29 сентября 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
29 сентября 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
29 сентября 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
29 сентября 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
29 сентября 10 месяцев

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»