В основанных на Debian системах программные файлы, библиотеки исходный код упаковывается и распространяется как .deb файлы. Установка .deb файлов может быть сделана с помощью инструмента командной строки под названием dpkg. Тем не менее, типичный .deb пакет имеет зависимости (или обязательные пакеты), которые нужно предустановить для того, чтобы была возможность установить этот .deb пакет, и dpkg не может разрешить эти зависимости.
Например, если вы пробуете установить пакет под названием webmin используя dpkg на свежую Ubuntu, dpkg потерпит неудачу или проблем с зависимостями.
$ sudo dpkg -i webmin_1.620_all.deb dpkg: dependency problems prevent configuration of webmin: webmin depends on libnet-ssleay-perl; however: Package libnet-ssleay-perl is not installed. webmin depends on libauthen-pam-perl; however: Package libauthen-pam-perl is not installed. webmin depends on apt-show-versions; however: Package apt-show-versions is not installed. dpkg: error processing webmin (—install): dependency problems — leaving unconfigured Processing triggers for ureadahead . Errors were encountered while processing: webmin
Когда дело доходит до зависимостей .deb файлов, инструмент Linux под названием gdebi — это благословение. С gdebi вы можете установить .deb файлы с автоматическим решением неудовлетворённых зависимостей.
Программа снятия алкогольной и/или наркотической зависимости
Утилита gdebi имеет два компонента gdebi для инструмента командной строки и gdebi-gtk с графическим интерфейсом. В зависимости от того, вы на настольном компьютере Linux или на «безголовом» сервере, вы можете установить только инструментом командной строки или полной графической версией.
Установка .deb файла с зависимостями на безголовый сервер
Для установки gdebi в консоли на Debian, Ubuntu или Linux Mint, проделайте следующее.
$ sudo apt-get install gdebi-core
Сейчас просто запустите gdebi с целевым .deb файлом для установки и обработки зависимостей. Любые обязательные пакеты будут установлены автоматически.
$ sudo gdebi webmin_1.620_all.deb
Установка .deb файла с зависимостями в среде рабочего стола
Вы можете также использовать консольный инструмент gdebi на в среде рабочего стола, или вы можете попробовать gdebi с графическим интерфейсом. Для этого установить gdebi как показано. GTK его интерфейса также будут установлены.
$ sudo apt-get install gdebi
Затем наберите эту команду для установки .deb файла.
$ sudo gdebi-gtk webmin_1.620_all.deb
Вы увидите графический интерфейс установщика пакетов, как показано на скриншоте ниже.
Если есть какие-либо зависимости, статус в окне покажет вам эти зависимости и вы сможете проверить их кликнув на «Детали» как показано ниже.
Наконец, просто нажмите «Установить пакет» для процесса установки .deb.
Связанные статьи:
- Мы скоро начнём (50%)
- Как установить Kingsoft Office на Linux (50%)
- Как переименовать группу файлов (50%)
- Как узнать, какой дистрибутив и версия Linux запущена? (50%)
- Что такое виртуальный компьютер, для чего он нужен и как с лёгкостью попробовать новые операционные системы (50%)
- Как использовать echo вместе с sudo (RANDOM — 50%)
Источник: zalinux.ru
Автоустановка всех зависимостей при установке программ из исходников в Linux. Сборка пакетов DEB
Управление пакетами в ОС Linuх
В далекие времена установка программного обеспечения под операционные системы семейства Линукс могла серьезно напугать начинающих пользователей этих ОС. Загрузка исходников, борьба с зависимостями, которая зачастую превращалась в нетривиальный квест, ручная правка конфигов и другие “прелести” установка приложений того времени сейчас покажутся глубоким анахронизмом.
Сейчас любой уважающий себя дистрибутив Линукс имеет в своем составе возможность установки программного обеспечения с помощью менеджеров пакетов.
Системы управления пакетами (которые также иногда «менеджер пакетов» или «пакетный менеджер») — это набор программного обеспечения, позволяющего управлять процессом установки, удаления, настройки и обновления различных компонентов ПО.
В этой статье мы рассмотрим основные менеджеры пакетов, которые используются в различных дистрибутивах Линукс.
Какие пакеты бывают
Различные дистрибутивы ОС Linux имеют свои форматы пакетов. Вот основные форматы:
- .deb – Debian и производные (Ubuntu, Mint и т.д.)
- .rpm – Red Hat и производные (CentOS, Fedora и т.д.), OpenSUSE
- .apk – Android
- .ebuild – Gentoo
Каждый формат имеет свои преимущества и недостатки. Так rpm совместим с различными дистрибутивами Linux и обеспечивает более быструю установку и обновление пакетов, но при этом установка и обновление зависимостей может занимать значительное время при установке большого количества пакетов и имеет более сложную систему идентификации версий пакетов, что может привести к проблемам при обновлении или установке.
А deb имеет более простую систему идентификации версий пакетов, что упрощает работу с ними, благодаря чему управление зависимостями происходит быстрее и более эффективно. Но при этом поддерживает ограниченное число дистрибутивов Linux, что может создать проблемы при переходе на другую операционную систему и может потребовать дополнительной настройки для работы с некоторыми пакетами (например, в случае несовместимости с определенной версией ядра).
Из чего состоит пакет
Прежде, чем начать рассмотрение принципов работы с пакетами, поговорим о том, что содержат в себе пакеты. Пакет, как правило, содержит само приложение, в откомпилированном виде, то есть, по сути в виде бинарного файла.
Также в пакете указывается метаинформация, то есть информация о другой информации, используемая инструментами управления пакетами.
Метаинформация представляет собой составленное по определённым правилам описание, которое содержит имя пакета, номер версии и сборки, сведения о разработчике и его мастер-сайте, список файлов, их положение в файловой иерархии, список зависимостей. Также, здесь могу присутствовать установочные и настроечные сценарии, необходимые для развертывания приложения.
Помимо установочных сценариев, пакет также содержит набор действий, выполняемых после установки (например, пост-инсталляционную конфигурацию). Также пакет содержит сценарий, выполняемый в случае удаления пакета.
Посмотрим пример структуры пакетов для Debian. Зависимости определены в поле Dependents в заголовке пакета. Это список условий, которые должны быть выполнены для корректной работы пакета. Данная информация используется такими инструментами, как apt, для установки необходимых библиотек, утилит, драйверов и т.д. в соответствующих версиях, удовлетворяющих зависимостям устанавливаемого пакета. Для каждой зависимости можно ограничить диапазон версий, удовлетворяющих этому условию. Другими словами, если нам нужен пакет libc6 в версии, равной или превышающей “2.15” ( “libc6 (>= 2.15)”), то операторы сравнения версий следующие:
=: greater than or equal to; >>: greater than.
При этом, стоит отметить, что не все пакеты содержат программы, некоторые содержат шрифты, изображения, темы и т.д.
Зависимости и конфликты
Сейчас сложно представить приложение, не использующее в том или ином виде сторонние библиотеки и другие зависимости. То есть любая, сколько-нибудь сложная программа зависит от пакетов, поставляющих библиотеки. При этом возможна ситуация, когда пакет конфликтует с уже установленным в системе. Наиболее распространенные причины этого заключаются в том, что оба пакета включают файл с одинаковым именем и путем, или предоставляют одну и ту же службу на одном и том же сетевом порту, или препятствуют работе друг друга.
Здесь возможны различные варианты реагирования, в общем случае пакетный менеджер откажется устанавливать пакет, если он вызывает конфликт с уже установленным пакетом. Однако возможна ситуация, когда в новом пакете явно указано, что он “заменит” установленный пакет, и в этом случае менеджер предпочтет заменить старый пакет новым. А вот менеджер apt всегда следует вашим инструкциям: если вы решите установить новый пакет, он автоматически предложит удалить пакет, который создает проблему.
Также, в случае конфликта возможен следующий вариант реагирования: пакетный менеджер просигнализирует о том, что установка пакета “сломает” другой пакет (или определенные его версии) и далее уже пользователь должен решать, что делать в подобной ситуации. При этом различные менеджеры по-разному отреагируют на такую ситуацию. Так, dpkg откажется устанавливать пакет, который нарушает работу уже установленного пакета. А вот apt попытается решить проблему, обновив пакет, который был бы нарушен, до более новой версии (предполагается, что она исправлена и, таким образом, снова совместима).
Такого рода ситуация может возникнуть в случае обновлений без обратной совместимости: это тот случай, когда новая сигнализирует о том, что установка пакета “сломает” другой пакет (или определенные его версии).
Некоторые форматы пакетов можно конвертировать. Так, например пакеты .deb можно конвертировать в другие форматы с помощью утилиты alien. В качестве примера преобразуем deb пакет в rpm.
Для этого сначала установим утилиту alien:
sudo apt-get install alien
Далее выполним конвертацию пакета Teamviewer из deb в rpm. Общий формат работы с alien будет следующий:
Для нашего примера с teamviewer:
sudo alien —to-rpm teamviewer_amd64.deb
Основные операции с пакетами
Установка пакетов во всех менеджерах производится схожим образом. Необходимо сначала скачать пакет (.deb, .rpm . ), далее установить пакет вручную, используя команду данного дистрибутива (dpkg, rpm и т.д.). Например, для dpkg это будет dpkg –i firefox-19.0.deb, а для apt apt-get install firefox.
При этом, все зависимости разрешаются и устанавливаются автоматически.
Обновление списков пакетов и самих пакетов для apt выполняется следующим образом:
Обновление репозитория. Загружает только список пакетов, а не сами пакеты.
Загрузка более новых версий локально установленных пакетов.
И для удаления пакетов в apt используется следующая команда:
apt-get remove [ —purge ] package
Если «—purge» указан, удаляет и конфигурационные файлы.
Где искать пакеты
Для поиска пакетов под различные дистрибутивы можно конечно воспользоваться поисковиками, но лучше использовать проверенные ресурсы, чтобы не столкнуться с сомнительным содержимым. Так, пакеты для Ubuntu можно поискать на следующем ресурсе:
А для RPM можно посмотреть здесь:
Заключение
В этой статье мы рассмотрели основные моменты, связанные с работой с различными пакетами и пакетными менеджерами. А про стандартные потоки ввода/вывода мои коллеги из OTUS расскажут на бесплатном уроке специализации Administrator Linux.
- Блог компании OTUS
- Настройка Linux
Источник: habr.com
Что такое зависимости пакетов в Linux?
Возможно, вы слышали о зависимостях пакетов в Linux и задавались вопросом, что это такое. Зависимости могут показаться запутанными, но в Linux есть инструменты, которые гарантируют, что каждая устанавливаемая вами программа имеет все необходимые компоненты.
Давайте разберемся с зависимостями Linux и их влиянием на управление пакетами в Linux.
Программы для Linux состоят из блоков программного обеспечения
Зависимости Linux — это просто вещи, которые необходимы программе для запуска. Это связано с тем, что разработчики Linux склонны писать программы модульным способом. Это «философии Unix» создания программ из более мелких компонентов.
Зависимости обычно являются разделяемыми библиотеками. Они могут быть для таких вещей, как доступ к базам данных, использование сетевых протоколов или рисование графических элементов на экране. Хотя проприетарные программы также используют общие библиотеки, это проще сделать в мире Linux, поскольку они обычно имеют открытый исходный код.
Зависимости также могут быть полными программами. Распространенным шаблоном в мире Linux является создание внешнего интерфейса с графическим интерфейсом для существующей программы командной строки.
Использование разделяемых библиотек упрощает разработку, поскольку разработчикам не нужно придумывать новые способы работы каждый раз, когда они хотят создать новое приложение.
Как менеджеры пакетов упрощают установку программного обеспечения Linux
Вы можете загрузить исходный код с веб-сайта программы с открытым исходным кодом и попытаться скомпилировать его самостоятельно, но вы часто будете видеть ошибку, указывающую на то, что чего-то не хватает. Это связано с тем, что эти проекты не включают в свою программу никаких зависимостей. Они предполагают, что вы либо уже установили их, либо готовы это сделать.
Это прекрасно работало в эпоху оригинальной Unix, которая работала на мини-компьютерах и мэйнфреймах с выделенным административным персоналом, но когда Linux стала популярной на ПК, по-старому было трудно управлять одиноким пользователям, у которых, возможно, не было большого количества ресурсов. Опыт Unix.
- Как установить Adobe Photoshop в Linux
- Как установить и настроить Azure CLI в Ubuntu
- Запуск Davinci Resolve на открытом драйвере AMD
Дистрибутивы Linux начали включать инструменты управления пакетами, которые отслеживали зависимости, загружали их через Интернет, устанавливали и обновляли при выходе новых версий.
Flatpak и Snap — это последние попытки управлять зависимостями, поставляя их вместе с приложением. Таким образом, зависимости и приложение могут быть лучше синхронизированы. Разработчики имеют больший контроль над тем, как приложение будет вести себя, когда оно попадет к пользователю.
Как увидеть зависимости пакетов в Linux
Веб-сайты пакетов дистрибутивов Linux могут отображать любые зависимости пакетов. Вы также можете увидеть, какие зависимости имеет пакет, используя менеджеры пакетов.
В Debian или Ubuntu используйте APT:
apt show [packagename]
В Arch используйте pacman с параметром -Si. Раздел «Depends on» покажет зависимости.
pacman -Si [packagename]
В дистрибутивах Linux семейства Red Hat используйте DNF:
dnf deplist [packagename]
Теперь вы знаете о зависимостях пакетов Linux
Зависимости в Linux не сложны, они показывают, как программы для Linux строятся из более мелких компонентов. Менеджеры пакетов упрощают установку программного обеспечения, отслеживая пакеты.
Также можно увидеть, какие зависимости имеет пакет. Это также причина, по которой вам следует обновлять диспетчер пакетов при установке новых программ.
Источник: komyounity.com