HTML Diff
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>