Установка ПО
Есть несколько основных вариантов установки пакетов в линуксе:
- Установка из исходников. Самостоятельная сборка и установка пакета в линукс без надобности в рутправах.
- Установка из пакетов. Устанавливаются заранее собранные пакеты (deb, rpm) пакетным менеджером для определённой системы. Все пакеты привязаны к определённому дистрибутиву
- Установка из репозитория. Тут мы запрашиваем сам пакетный менеджер установить пакет в систему тз открытого репозитория. ПМ сам устанавливает остальные зависимости, которые требуются для пакета. К этому способу относятся подобные команды:
sudo dnf install git neovim nodejs npm.


Пакеты в Linux
На рынке преобладают два основных вида пакетов - .deb и .rpm

RHEL - корпортативное решение, а CentOS - решение для домашнего пользования на базе RHEL. Первый имеет стабильную работу и обновления для поддержки системы.

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

Основными задачами пакетного менеджера являются:
- установка пакета из проверенного источника
- проверка целостности пакетов
- избегания адской матрицы пакетов
DPKG и RPM - типы менеджеров пакетов
APT и DNF - интерфейсы над этими типами менеджеров пакетов с расширенным функционалом и упрощённой работой
dnf является улучшением над yum

RPM и YUM
rpm - Команда для работа с .rpm пакетами
Первая команда позвоялет нам установить пакет. -i - установка пакета, -v - проверка пакета, -h - сверка хешей
-e - удаление пакета из системы
-q - позволяет получить информацию о пакете из базы данных rpm-пакетов. База данных хранится в каталоге /var/lib/rpm
-V - проверяет конечный пакет с информацией из исходного пакета

В противовес rpm не разрешает самостоятельно зависимости пакетов, поэтому и используют yum.
Все доступные репозитории юма сохраняются в /etc/yum.repos.d. Туда мы можем добавить любые свои другие списки репозиториев.

yum проверяет пакеты в системе, пытается их зарезолвить, если не нашёл пакет, то предложит его установить из своих репозиториев
Если добавить флаг
-y, то дополнительные пакеты установятся без дополнительного подтверждения с помощьюy

yum repolist предоставляет список доступных репозиториев
yum provides scp предоставит нам репозитории, которые распротраняют пакет scp

yum remove httpd - удалит пакет и его зависимости
yum update telnet - обновит пакет telnet
Если просто вызывать yum update, то мы обновим все пакеты в системе.

DPKG и APT
dpkg - низкоуровневый пакет для работы с другими пакетами debian-дистрибутивов. Он так же как и rpm не умеет работать с требуемыми зависимостями для установки пакета.
-i - установка пакета
-u - обновление пакета
-r - удаление пакета
-l - список установленных пакетов
-s - отобразит статус пакета, если он установлен в систему
-V - проверка пакета

Пример ошибки из-за неразрешения зависимостей

Поэтому для того, чтобы устанавливать пакеты, используются более высокоуровневые пакеты apt и apt-get, которые используют у себя внутри dpkg
У apt, так же как и у yum используется свой прописанный список репозиториев в /etc/apt/sources.list

У apt достаточно широкий список команд.
Сразу после установки системы стоит обновить список пакетов через update, а затем и обновить сами пакеты upgrade.
edit-sources позволит быстро перейти в файл репозиториев и отредактировать его

APT и APT-GET
Изначально стоит сказать, что apt - это мощный инструмент, который хранит в себе множество различных операций над пакетами.
Первое, что бросается в глаза - это более приятный глазу вывод в консоль, который более человекочитаем.

Так же apt умеет сам искать пакеты в репозиториях. Отдельно apt-get этого не умеет, поэтому вместо него нужно использовать apt-cache.
