0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Привычный способ ставить программы для Windows-пользователя - бродить по интернету в поисках нужных приложений. В *nix-системах такой способ используется значительно реже. Для установки программ придумали<strong>пакетные менеджеры</strong>, с которыми мы познакомимся в этом уроке.</p>
1
<p>Привычный способ ставить программы для Windows-пользователя - бродить по интернету в поисках нужных приложений. В *nix-системах такой способ используется значительно реже. Для установки программ придумали<strong>пакетные менеджеры</strong>, с которыми мы познакомимся в этом уроке.</p>
2
<p>В некоторых операционных системах есть пакетный менеджер по умолчанию, в других его надо устанавливать самостоятельно. Например, для macOS есть пакетный менеджер<a>brew</a>.</p>
2
<p>В некоторых операционных системах есть пакетный менеджер по умолчанию, в других его надо устанавливать самостоятельно. Например, для macOS есть пакетный менеджер<a>brew</a>.</p>
3
<p>Далее, для всех примеров будет использоваться пакетный менеджер<strong>apt</strong>, который поставляется с Ubuntu. Например, установка PHP в Ubuntu выглядит так:</p>
3
<p>Далее, для всех примеров будет использоваться пакетный менеджер<strong>apt</strong>, который поставляется с Ubuntu. Например, установка PHP в Ubuntu выглядит так:</p>
4
<p>Пакетный менеджер состоит из нескольких частей. Одна из них взаимодействует с пользователем напрямую - это консольная утилита apt. Для установки нужно набрать apt install и далее указать имя необходимой программы.</p>
4
<p>Пакетный менеджер состоит из нескольких частей. Одна из них взаимодействует с пользователем напрямую - это консольная утилита apt. Для установки нужно набрать apt install и далее указать имя необходимой программы.</p>
5
<p>Почти всегда пакетные менеджеры требуют запуска от суперпользователя root, потому что установка программ происходит в системные директории, недоступные для записи обычному пользователю:</p>
5
<p>Почти всегда пакетные менеджеры требуют запуска от суперпользователя root, потому что установка программ происходит в системные директории, недоступные для записи обычному пользователю:</p>
6
<p>Но это не всегда так - например, в macOS не нужно использовать sudo.</p>
6
<p>Но это не всегда так - например, в macOS не нужно использовать sudo.</p>
7
<p>Установленные пакеты можно удалять. Для этого используется команда apt remove:</p>
7
<p>Установленные пакеты можно удалять. Для этого используется команда apt remove:</p>
8
<p>На другом конце провода находится<strong>каталог пакетов</strong>. Во время попытки установить программу утилита apt выполняет запрос в каталог и пытается понять, есть ли там пакет с таким именем. Если его нет, то вы об этом узнаете:</p>
8
<p>На другом конце провода находится<strong>каталог пакетов</strong>. Во время попытки установить программу утилита apt выполняет запрос в каталог и пытается понять, есть ли там пакет с таким именем. Если его нет, то вы об этом узнаете:</p>
9
<p>Для экономии ресурсов и ускорения работы пакетный менеджер apt сохраняет<strong>индекс</strong>- список пакетов в каталоге. Индекс хранится на локальном диске и используется для работы пакетного менеджера.</p>
9
<p>Для экономии ресурсов и ускорения работы пакетный менеджер apt сохраняет<strong>индекс</strong>- список пакетов в каталоге. Индекс хранится на локальном диске и используется для работы пакетного менеджера.</p>
10
<p>Иногда это может приводить к ситуациям, что пакет в реальности существует, но apt утверждает обратное. Если вы чувствуете подвох, то запустите ручное обновление локального индекса:</p>
10
<p>Иногда это может приводить к ситуациям, что пакет в реальности существует, но apt утверждает обратное. Если вы чувствуете подвох, то запустите ручное обновление локального индекса:</p>
11
<p>Здесь у вас может возникнуть как минимум три вопроса:</p>
11
<p>Здесь у вас может возникнуть как минимум три вопроса:</p>
12
<ol><li><p>Как узнать, какой пакет ставить?</p>
12
<ol><li><p>Как узнать, какой пакет ставить?</p>
13
<p>Когда нам нужно установить определенную программу, то самый очевидный способ сделать это - найти сайт программы и выполнить действия, указанные на странице "Скачать" (<em>Download</em>). Обычно на этой странице написаны инструкции по пакетному менеджеру и примеры команд. К примеру, такое описание есть у<a>Node.js</a>.</p>
13
<p>Когда нам нужно установить определенную программу, то самый очевидный способ сделать это - найти сайт программы и выполнить действия, указанные на странице "Скачать" (<em>Download</em>). Обычно на этой странице написаны инструкции по пакетному менеджеру и примеры команд. К примеру, такое описание есть у<a>Node.js</a>.</p>
14
<p>Другой способ: загуглить<em>php install ubuntu</em>. Вы найдете статьи с такими же инструкциями. Со временем вы запомните имена многих пакетов и сможете ставить их без инструкций.</p>
14
<p>Другой способ: загуглить<em>php install ubuntu</em>. Вы найдете статьи с такими же инструкциями. Со временем вы запомните имена многих пакетов и сможете ставить их без инструкций.</p>
15
</li>
15
</li>
16
<li><p>Чем пакет отличается от программы?</p>
16
<li><p>Чем пакет отличается от программы?</p>
17
<p>Если коротко, пакет - это упаковка для программы. Сама программа ничего не знает о существовании своего пакета и пакетного менеджера. Чтобы пользователи могли установить программу через менеджер пакетов, ее разработчик заранее упаковывает программу в пакет.</p>
17
<p>Если коротко, пакет - это упаковка для программы. Сама программа ничего не знает о существовании своего пакета и пакетного менеджера. Чтобы пользователи могли установить программу через менеджер пакетов, ее разработчик заранее упаковывает программу в пакет.</p>
18
<p>В Ubuntu используется специальный формат пакетов, называемый<em>deb</em>. У этого формата есть подробная документация о том, как производить упаковку.</p>
18
<p>В Ubuntu используется специальный формат пакетов, называемый<em>deb</em>. У этого формата есть подробная документация о том, как производить упаковку.</p>
19
</li>
19
</li>
20
<li><p>Как программы попадают в каталог?</p>
20
<li><p>Как программы попадают в каталог?</p>
21
<p>Все сильно зависит от политики тех, кто поддерживает работу каталога. В некоторые каталоги попасть очень тяжело. Разработчики добавляют туда только проверенный софт, поэтому программы в них обновляют медленно. В других каталогах все происходит просто и быстро.</p>
21
<p>Все сильно зависит от политики тех, кто поддерживает работу каталога. В некоторые каталоги попасть очень тяжело. Разработчики добавляют туда только проверенный софт, поэтому программы в них обновляют медленно. В других каталогах все происходит просто и быстро.</p>
22
<p>В любом случае нужно пройти некую процедуру, чтобы добавить программу в каталог.<strong>Это один из ключевых аспектов, по которому дистрибутивы Linux отличаются друг от друга</strong>. В любом случае эти каталоги огромны, в них входят десятки и сотни тысяч программ и библиотек.</p>
22
<p>В любом случае нужно пройти некую процедуру, чтобы добавить программу в каталог.<strong>Это один из ключевых аспектов, по которому дистрибутивы Linux отличаются друг от друга</strong>. В любом случае эти каталоги огромны, в них входят десятки и сотни тысяч программ и библиотек.</p>
23
</li>
23
</li>
24
</ol><p>Пакетные менеджеры есть не только в операционных системах. Любая экосистема, внутри которой возможно распространение библиотек или программ, имеет свой пакетный менеджер. Пакетные менеджеры есть у всех языков программирования. Большинство из них включены в языки по умолчанию:</p>
24
</ol><p>Пакетные менеджеры есть не только в операционных системах. Любая экосистема, внутри которой возможно распространение библиотек или программ, имеет свой пакетный менеджер. Пакетные менеджеры есть у всех языков программирования. Большинство из них включены в языки по умолчанию:</p>
25
<ul><li>В Node.js - пакетный менеджер npm</li>
25
<ul><li>В Node.js - пакетный менеджер npm</li>
26
<li>в PHP - Composer</li>
26
<li>в PHP - Composer</li>
27
<li>в Ruby - RubyGems</li>
27
<li>в Ruby - RubyGems</li>
28
<li>в Python - pip</li>
28
<li>в Python - pip</li>
29
</ul>
29
</ul>