Установка ПО
Есть несколько основных вариантов установки пакетов в линуксе:
- Установка из исходников. Самостоятельная сборка и установка пакета в линукс без надобности в рутправах.
- Установка из пакетов. Устанавливаются заранее собранные пакеты (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
.