Репозитории и пакеты
Программное обеспечение дистрибутива Fedora находится в хранилище — репозитории. ПО в репозитории хранится в виде отдельных зависимых пакетов имеющих собственную версию и версию дистрибутива в котором они могут быть установлены с разрешением зависимости. Различные дистрибутивы Linux обладают собственным хранилищем пакетов программного обеспечения. Помимо основного репозитория, на различных серверах по всему миру хранятся «зеркала», т. е. копии содержания основного репозитория и пакеты обновления. Каждый пакет используется для определенной версии дистрибутива, а хранилище гарантирует совместимость всех зависимых пакетов. Что такое пакет? Пакет — это архив, в котором содержаться необходимые для работы программы компоненты: бинарные файлы программ, библиотеки и прочий контент необходимый для работы программы. Зачастую пакет программы связан с компонентами пакетов других программ. Такое состояние называется зависимостью пакетов друг от друга. Причины зависимости заключаются в том, что разработчики ПО используют/заимствуют программный код или уже имеющиеся библиотечные файлы в других разработках. Это облегчает создание приложений, избавляет разработчиков от написания повторяющихся алгоритмов и позволяет писать программы взаимодействующие в единой среде. При попытке установить пакет (используя консоль), в большинстве случаев, будет выдана информация о наличии неудовлетворенных зависимостей. (Однако, некоторые пакеты могут быть всё же установлены, если в системе все необходимые зависимости будут разрешены.)
Для работы с пакетами дистрибутив Fedora использует консольный менеджер пакетов (back-end) — RPM (рекурсивный акроним RPM Package Manager). RPM имеет недостаток — он не может разрешать зависимость в автоматическом режиме. Его цель обрабатывать пакет/пакеты (удалять, обновлять, устанавливать, проверять зависимости, предоставлять сведения о пакете и его содержимом) и обслуживать базу данных установленных в системе пакетов. Для установки программы необходимо собрать все зависимые пакеты (предварительно узнать какие из них уже установлены, а какие — нет) и только тогда программа может быть установлена вместе с зависимыми пакетами. Узнать какие зависимости имеет данный пакет можно с помощью команды:
rpm -qpR name_package
где name_package
— имя пакета.
Разумеется, такая работа с пакетами совершенно неудобна и утомительна. Чтобы автоматизировать процесс установки пакетов в дистрибутиве имеется надстройки пакетных менеджеров (front-end), которые способны производить установку пакетов и призваны решать следующие основные задачи:
- поиск пакетов в репозиториях;
- установка пакетов из репозиториев с удовлетворением зависимостей;
- обновление системы;
- удаление ненужных пакетов.
Работа с RPM и DNF в консоли
RPM и DNF являются консольными программами. Для работы с менеджерами пакетов запустите программу Konsole (эмулятор терминала среды KDE).
RPM
Для получения полной справки введите команду:
$ rpm --help
Установка пакетов производится в режиме суперпользователя (root). Если ваш аккаунт имеет администраторские полномочия, то воспользуйтесь утилитой sudo
:
$ sudo -i [sudo] пароль для username: (ввод пароля пользователя)
Если таких полномочий нет, то стандартной командой su
:
$ su Пароль: (ввод пароля суперпользователя)
Формат команд RPM:
rpm [ПАРАМЕТРЫ] [ПУТЬ К ФАЙЛУ].rpm
Некоторые наиболее часто используемые параметры команды rpm
:
-h, --hash выводить "#" по мере установки пакета -i, --install установить пакет(ы) -U, --upgrade обновить пакет(ы) -v, --verbose выводить более детальные сообщения -e, --erase удалить (деинсталлировать) пакет(ы) --force игнорировать конфликты пакетов
Параметры (иначе, ключи) можно использовать сгруппировав, например, так:
# rpm -ihv name_package
Следующей командой будут установлены все RPM-пакеты в текущей директории:
# rpm -ihv *.rpm
Приведем пример работы с rpm по установке программ, которые не входят в дистрибутив. Большинство таких программ поставляются в виде исходников, которые необходимо скомпилировать. Это сложная задача для рядового пользователя. Но множество разработчиков собирают бинарные файлы своих программ в виде rpm-пакетов. Одна из таких программ — это Edraw Max.
Перейдите на сайт программы: https://www.edrawsoft.com/download-edrawmax.html . Загрузите rpm-пакет программы и перейдите в директорию загрузки (это условно-бесплатная программа с ограниченным периодом бесплатного использования без лицензии):
# cd /home/user_name/Загрузки/
Выполните команду установки пакета:
# rpm -ihv edrawmax_10.0_x86_64.rpm
Результат и степень выполнения будет отображаться ниже:
Verifying... ################################# [100%] Подготовка... ################################# [100%] Обновление / установка... 1:edrawmax-10-0 ################################# [100%]
Программа установлена! Войдите в меню и найдите программу в разделе Office > EdrawMax
.
Скачивание программы можно поручить самому rpm. Ниже показан пример скачивания и установки по сети среды разработки IDE CodeLite (убедитесь, что эти URL действительны на странице https://downloads.codelite.org/):
# rpm --import https://repos.codelite.org/CodeLite.asc # rpm -Uvh https://repos.codelite.org/rpms-14.0/fedora/codelite-14.0-2.fc32.x86_64.rpm Загружается https://repos.codelite.org/rpms-14.0/fedora/codelite-14.0-2.fc32.x86_64.rpm Verifying... ################################# [100%] Подготовка... ################################# [100%] Обновление / установка... 1:codelite-14.0-2.fc32 ################################# [100%]
В данных примерах разрешения зависимостей не потребовалось.
rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n'
DNF
Для получения полной справки введите команду:
# dnf --help
Использование команды:
dnf [ПАРАМЕТРЫ] [КОМАНДА]
Некоторые наиболее часто используемые команды:
autoremove удалить все ненужные пакеты, первоначально установленные по зависимостям check поиск проблем в packagedb check-update проверить доступные обновления для пакетов clean удалить кэшированные данные deplist Показывать список зависимостей пакета и какие пакеты их предоставляют distro-sync обновить установленные пакеты до последних имеющихся версий downgrade Откат к предыдущей версии пакета group показать или использовать информацию о группах history отобразить (или использовать) историю транзакций info отобразить информацию о пакете или группе пакетов install установка пакета(ов) в систему list вывести список пакетов или групп пакетов reinstall переустановка пакета remove удалить пакет или пакеты из системы repolist отобразить настроенные репозитории ПО repoquery поиск пакетов по ключевому слову search поиск информации о пакете по заданной строке updateinfo показать рекомендации к пакетам upgrade обновить пакет или пакеты в системе upgrade-minimal обновление, но только «новейших» пакетов, которые исправляют проблему в вашей системе
Пример использования:
# dnf install krusader
Замечательной особенностью DNF является установка не отдельных пакетов, а целой группы пакетов специального назначения всего одной командой! Такая необходимость возникает, например, после установки дистрибутива. Для того, чтобы увидеть список доступных для установки групп, необходимо ввести следующую команду:
# dnf group listПримеры использования:
# dnf group [Параметры] [КОММАНДА] [АРГУМЕНТЫ]
DNF поддерживает следующие команды для работы с группами:
- list
- info
- remove
- install
- upgrade
- mark
-v, --verbose подробно описывать действия --version show DNF version and exit --nodocs не устанавливать документацию --skip-broken разрешить проблемы зависимостей, пропустив пакеты -h, --help показать справку по команде --allowerasing разрешить удаление установленных пакетов для разрешения зависимостей -b, --best попытаться использовать наиболее подходящие версии пакетов в транзакциях. -y, --assumeyes автоматически отвечать утвердительно на все вопросы --noautoremove запретить удаление зависимостей, которые больше не используются --nogpgcheck отключить проверку подписи gpg (если позволяет политика RPM) --color COLOR использовать ли цветовые схемы
Фронтэнд dnfdragora
dnfdragora — фронтэнд DNF, который работает с использованием GTK, ncurses и QT и является основным менеджером пакетов в дистрибутиве Fedora (устанавливается по умолчанию). Запуск приложения осуществляется через меню: Администрирование > dnfdragora.
dnfdragora — это идеальное решение для тех, кто не хочет использовать консоль для работы с пакетами. Это простое в использовании приложение, которое может вести журнал установок пакетов, включать и отключать репозитории, обновлять метаданные и осуществлять гибкий поиск пакета в базе. Нужно сказать, что разработка данного приложения продолжается и некоторые функции пока не реализованы в полной мере.
~/.config/dnfdragora.yaml
и перезапустить приложение.Помимо установки отдельных пакетов, приложение может обновлять пакетную базу и работать с группами пакетов. Чтобы установить программу необходимо определить критерии поиска и выбрать с помощью чекбокса пакеты в предложенном списке.
Не взирая на то, что в KDE существует свой «родной» установщик программ Discover
, обращаться к dnfdragora, возможно, вы будете довольно часто. Дело в том, что в Discover невозможно (во всяком случае, пока) полноценно работать с пакетной базой репозитория, так как от непосвященного пользователя скрыты некоторые пакеты, (например, пакеты со слабыми зависимостями: дополнения, локализации, плагины), а без точного знания наименования пакета найти его в пакетной базе будет весьма проблематично. Для сравнения, покажем окна dnfdragora и Discover с результатами поиска по ключевому слову «libreoffice»:
Не трудно заметить, что Discover, помимо пакетов libreoffice, показывает пакеты, которые к LibreOffice совершенно не относятся! Надеемся, что разработчики программы доработают этот недостаток в ближайшее время, а пока — dnfdragora вам в помощь :-).
Центр программ KDE Discover
Штатным установщиком программ в KDE является — Discover. Помимо недостатка упомянутого выше, программа имеет и «плюсы». Так Discover может устанавливать и обновлять не только пакеты, но и расширения как к программам, так и к Plasma (правда, не всегда эти обновления бывают успешними). Да и внешний вид программы более дружелюбен. По каждой программе, например, даны подробные сведения, а к программам из мира KDE прилагаются и скриншоты окон этих программ. Пример установки программы digiKam
:
Утилита alien
Что делать, если необходимо установить в Fedora пакет .deb
(конкурирующего менеджера из мира Debian), которого нет в дистрибутиве? Или наоборот: как в Debian установить rpm-пакет? На помощь приходит утилита alien. alien
способна преобразовывать пакет одного формата в другой, например rpm <-> deb
. Утилита работает не только с пакетами rpm и ded, но мы ограничимся только этими форматами. Рассмотрим практический пример. На сайте программы XMind
разработчики выложили для скачивания только deb-пакет.
https://www.xmind.net/download/xmind
Нам не остается ничего другого, как установить в Fedora пакет, сконвертированный из deb-пакета. Скачиваем файл пакета (~84Мб). Далее, переходим в директорию загрузки и в консоли выполняем последовательно следующие команды:
# dnf install alien # alien -r ./xmind-linux-3.4.1.201401221918_i386.deb # rpm -i xmind-3.4.1-2.i386.rpm
Первая команда установит пакет alien в Fedora Linux.
Вторая команда, собственно, запустит процесс преобразования deb -> rpm
. В результате пакет xmind-linux-3.4.1.201401221918_i386.deb будет преобразован в пакет xmind-3.4.1-2.i386.rpm.
Третья команда инсталлирует новый пакет в системе Fedora.
Некоторые параметры команд:
-d, --to-deb Generate a Debian deb package (default). -r, --to-rpm Generate a Red Hat rpm package. -i, --install Install generated package. -k, --keep-version Do not change version of generated package. --bump=number Increment package version by this number. -h, --help Display this help message.
DeltaRPM
Наше повествование будет неполным, если мы не упомянем технологию Delta, поскольку пакеты delta-rpm идут в обновлениях. По существу, Delta — это патч, внесение изменений в существующий пакет. Поскольку сумма изменений меньше (а в некоторых случаях даже значительно меньше) объема оригинального пакета — происходит существенная экономия трафика и увеличивается скорость обновления системы. При обновлении пакетов вначале определяется база Delta, затем не имеющих Delta и их зависимости, создается общий сценарий установки, руководимый пакетным менеджером. Delta-пакеты используются исключительно для обновления системы и не распространяются с дистрибутивом. Дистрибуция содержит только оригинальные пакеты. В репозитории дистрибутива они содержатся папке обновления.