> For the complete documentation index, see [llms.txt](https://denis-3.gitbook.io/linuxguide-linux-dlya-nachinayushikh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://denis-3.gitbook.io/linuxguide-linux-dlya-nachinayushikh/terminal-linux/ustanovka-programm.-paketnye-menedzhery.md).

# Установка программ. Пакетные менеджеры

Сейчас дистрибутивы Linux включают в себя пакетные менеджеры. Но что это такое? Пакетный менеджер - это набор ПО, который управляет процессами установки, обновления, удаления и настройки пакетов программ. С его помощью можно установить программу в Linux, а также совершать другие действия с пакетами. Пакетный менеджер также называют «системой управления пакетами». Есть разные менеджеры пакетов, используемые в Linux. Из основных:

* dpkg и apt - используется в системах, основанных на Debian, например, Ubuntu.
* RPM и yum (сейчас всё чаще используется dnf как обновлённая версия yum) - используется в системах, основанных на Red Hat и других, например Fedora или openSUSE

Пакеты в свою очередь имеют свои форматы. Для dpkg и apt - .deb, соответственно, для Debian и производных. Для RPM и yum - .rpm, соответственно, для Red Hat, производных и других. Что-то типа .exe в Windows.

Существуют также другие **независимые** системы управления пакетами. Приведу в пример: snap, AppImage и Flatpak. Они могут работать вне зависимости от дистрибутива и его пакетной базы. Это в разы расширяет распространение программ по Linux-системам. Но как? Дело в том, что в Linux программа - это как конструктор, набор, собранный из других компонентов (библиотек, зависимостей и т. д.). Значит, для работы этой программы нужны необходимые комплектующие. С одной стороны, это хорошо, ведь несколько программ могут пользоваться установленной зависимостью, не засоряя систему, подтягивая за собой одни и те же. Да и обновлять такие вещи будет лучше. НО у этого подхода есть серьёзные минусы. У разных дистрибутивов Linux разные форматы пакетов и их поставки, соответственно. А значит распространять прогу по всему миру Linux будет крайне сложно. По этой же причине появляется проблема, по которой какой-то зависимости может не быть в конкретном дистрибутиве. Или программе нужно работать только с определённой версией библиотеки. Да и разработчикам сложнее отслеживать изменения в зависимости, подстраивать её под программу под определённый Linux-дистрибутив. Короче, проблемы есть и они жёстко могут повлиять на рабочий процесс. Чтобы избавиться от такого, были придуманы независимые менеджеры. С их помощью программа поставляется со всеми необходимыми для неё зависимостями. Плюсы, вроде, экономии места, конечно, отпадают. Зато меньше проблем при работе с приложением.

{% hint style="info" %}
**Примеры:**

### **Snap**

Активно (очень) продвигается разработчиками Ubuntu в своей системе. Программы поставляются сразу со всеми зависимостями и обнавляются автоматически. Однако, по сравнению с другими независимыми системами управления пакетами, запуск программ происходит значительно медленнее.

### **AppImage**

Также завозит программы с их зависимостями в изолированной среде, но тут работает концепция одна программа - один файл, что похоже на переносимый exe в Windows. По сравнению со snap, здесь не нужны привелегии суперпользователя. Много популярных приложений доставляются именно в формате AppImage. Фокус делается на портативность.

### **Flatpak**

Создаёт изолированную среду для программ ("песочницу") и, само собой, устанавливает все зависимости вместе с программой. Flatpak предлагает децентрализованный способ установки приложений, что даёт возможность загружать Flatpak-пакеты из разных источников, самый популярный из которых Flathub. Не требует привелегий пользователя для установки и не обновляет пакеты автоматически. Этот формат тоже широко используется и по умолчанию предустановлен в различных дистрибутивах Linux. По скорости запуска, также как и по объёму дискового пространства, где-то посередине. Фокус делается на безопасность.
{% endhint %}

Сами программы загружаются из репозиториев. Репозитории - это такие места, где хранятся определённые файлы и каталоги, в нашем случае, файлы различных программ. Репозиториев также бывает огромное множество, но обычно используются официальные, они по умолчанию установлены в системе. Бывает так, что какого-то приложения нет в определённом репозитории. Тогда для его загрузки подключается другой (мы говорим об установке программ через пакетные менеджеры, но есть и другие способы, о которых рассказывается в одной из следующих глав).

## Установка программ

Сейчас разберём один из способов установки программ в Linux. Установим, например, веб-браузер Chromium. Это веб-браузер с открытым исходным кодом от Google, упрощённая версия Google Chrome. Как упоминалось ранее, дистрибутив Linux Mint основан на Ubuntu. А значит здесь используется пакетный менеджер Debian. dpkg - низкоуровневый пакетный менеджер (используется для установки локальных .deb пакетов), apt - высокоуровневый пакетный менеджер (используется для установки пакетов из репозиториев).&#x20;

Чтобы установить Chromium, нам нужно открыть терминал и ввести: `sudo apt install chromium`. Разберёмся в этой команде. `sudo` - выполнение команды с правами суперпользователя (об этом говорили в предыдущей главе). `apt` - обращение к пакетному менеджеру дистрибутива. `install` - команда для установки определённой программы из репозитория. `chromium` - сама программа, которую нужно установить. Вводим эту команду в Терминал, и ждём окончания процесса установки.

<figure><img src="/files/Sgqr6cxq2RJ3Q2ccIJtL" alt=""><figcaption></figcaption></figure>

Готово! Chromium установлен! Теперь мы можем зайти в меню, найти этот веб-браузер и открыть его. Приложение может запросить пароль пользователя, чтобы разблокировать связку ключей. Это место, куда сохраняются различные конфиденциальные данные приложения, например, личные данные или пароли. Это окно будет показываться каждый раз при входе в систему и открытии такого приложения, например, веб-браузера. Но чтобы его отключить, можно отключить автоматический вход в систему. Тогда связка ключей сама разблокируется после входа в систему с паролем пользователя. Так что, вводим пароль.&#x20;

<figure><img src="/files/WhLjI77gjhbdAMIUdr2G" alt=""><figcaption></figcaption></figure>

Открылся веб-браузер на стартовой странице. Всё работает)

<figure><img src="/files/NLChVXDQE9LegmJHTpMx" alt=""><figcaption></figcaption></figure>

Саму программу можно также запустить через Терминал, просто введя название этой программы.

## Удаление программы

Если же мы хотим удалить программу через пакетный менеджер, то в Терминал вводим `sudo apt remove <программа для удаления>` или `sudo apt purge <программа для удаления>`. Отличие remove от purge заключается в том, что первая команда удаляет программу, сохраняя файлы конфигураций (неполное удаление), а вторая полностью удаляет все файлы связанные с этой программой (полное удаление). Мы попробуем первую команду. Таким образом, в Терминале прописываем следующую команду: `sudo apt remove chromium`. Вводим пароль. Нас спрашивают, хотим ли мы продолжить удаление программы, хотим ли мы её удалить? Мы же вводим Д(д) или Y(y), так как хотим. Программа удалена. Теперь в меню её нет, и через Терминал её не запустишь.

<figure><img src="/files/tnevcttil970RLOA0cme" alt=""><figcaption></figcaption></figure>

## Обновление программ

До обновления пакетов (программ) можно сначала обновить репозитории, т. е. проверить обновления. Для этого нужно ввести следующую команду: `sudo apt update`. Как видим, у нас есть несколько репозиториев, в которых хранятся различные программы. Мы проверили обновления, и в системе есть пакеты для обновления (об этом говорит надпись "Может быть обновлено 389 пакетов"). Да, не удивляйтесь, что пакетов так много, ведь в одной программе может быть несколько пакетов для её работы.&#x20;

<figure><img src="/files/jZ3NiG9xCBH1tGRwJRb8" alt=""><figcaption></figcaption></figure>

Чтобы обновить данные пакеты, нужно ввести команду `sudo apt upgrade`. Появится список всех пакетов для обновления. Соглашаемся с продолжением обновления и ждём. Процесс может занять довольно длительное время, в зависимости от размера и количества обновляемых пакетов. У меня как значения размера скачиваемых пакетов (чуть более 1 ГБ), так значение их количества (389) довольно внушительные. Поэтому придётся подождать. У меня данный процесс занял около 25 минут.

<figure><img src="/files/jNgpqP2iTOOt3Xmk6Vqk" alt=""><figcaption></figcaption></figure>

## Очистка

Чтобы очистить лишние и извлечённые пакеты, которые больше не будут нужны, можно использовать команды `sudo apt autoremove` и `sudo apt clean`. Советую использовать `autoremove` после обновления или удаления пакета, чтобы точно удостовериться в отсутствии лишних файлов.

<figure><img src="/files/UPGqziSEOuimOzqcRd58" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://denis-3.gitbook.io/linuxguide-linux-dlya-nachinayushikh/terminal-linux/ustanovka-programm.-paketnye-menedzhery.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
