Можете ли вы помочь мне с моей проблемой зависимости программного обеспечения?


12

Это канонический вопрос о зависимостях компиляции и управлении пакетами.

У меня есть вопрос относительно компиляции портов / программного обеспечения или установки RPM на моем * nix сервере. Когда я пытаюсь это сделать, я получаю много сообщений об отсутствующих зависимостях.

Может ли сообщество Server Fault помочь, пожалуйста?

Ответы:


10

Добро пожаловать в сбой сервера. В общем, этот тип вопроса здесь не по теме. Ожидается, что большинство системных администраторов уже сталкивалось с этой проблемой, прежде чем стать системным администратором, работая с собственными рабочими станциями. Однако системные администраторы, работающие в Windows, возможно, не сталкивались с этим, поэтому вот несколько вещей, которые следует учитывать:

Почему бы не использовать менеджер пакетов для установки программного обеспечения на ваш сервер?

Менеджеры пакетов, такие как yumили aptобрабатывают эти зависимости для вас. Кроме того, они также могут быть использованы для управления обновлениями программного обеспечения на вашем сервере. В большинстве разновидностей * nix по умолчанию установлен менеджер пакетов, особенно на VPS, которые поставляются с предустановленной ОС. Если вы действительно новичок в этом, используйте один из них в своей производственной системе и сохраните приключения при компиляции или установке новейших RPM для вашей тестовой среды.

Но я должен использовать более современный пакет, чем тот, который доступен в моем менеджере пакетов!

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

Пакет, который мне нужен, недоступен в каких-либо репозиториях или менеджерах пакетов

В этом случае вам, вероятно , нужно выяснить зависимости (или поглотить их и использовать более стабильную / общую версию программного обеспечения). Вы, вероятно, должны сделать следующее в тестовой среде и внимательно следить за тем, что вы делаете:

  • Обязательно прочитайте документацию по устанавливаемому программному обеспечению - в нем, вероятно, будет указан список того, что вам нужно установить в первую очередь, но не то, что требуется для этого программного обеспечения.
  • Используйте менеджер пакетов для установки необходимых компонентов - в большинстве случаев они будут доступны.
  • После этого попробуйте установить.
  • Если вы по-прежнему видите сообщения об отсутствующих зависимостях, запишите их все и попробуйте установить как можно больше с помощью диспетчера пакетов.
  • Если зависимость не найдена, вы должны считать ее подзадачей и обрабатывать ее рекурсивно (найти архив с исходным кодом, найти зависимости, установить).
  • Это итеративный процесс.

У меня все еще есть проблемы!

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

Конкретный совет для основных систем управления пакетами

Управление пакетами RPM (RHEL / Fedora и клоны) и DEB (Debian / Ubuntu и клоны)

  • yum whatprovides filename - отличный способ найти пакет, который предоставляет определенный файл или библиотеку в системе типов RHEL.
  • Не используйте ./configure && make && make installвслепую, если это вообще возможно! Именно по этой причине было разработано управление пакетами, чтобы предотвратить неуклюжий и неуправляемый беспорядок, возникающий в результате неразрешимой установки многих конфликтующих файлов.
  • Многие библиотеки разделены на две части: двоичные (например, общие объекты) и разработки (заголовки). Таким образом, вам понадобятся оба libfooи libfoo-devel(или -dev) пакеты.
  • Подумайте об использовании fpm( https://github.com/jordansissel/fpm ) для преобразования тарболлов в чистые RPM и DEB.
  • Если вы катите свои собственные пакеты, вы являетесь лицом, ответственным за их обновления, тестирование и обслуживание. Если у вас нет инфраструктуры для этого, вы определенно стремитесь к слишком высокому уровню.

Поиск зависимостей по имени файла для RPM

http://rpmfind.net - это хорошее место для поиска имен пакетов, если вы знаете имя файла, на который жалуется процедура установки. Совмещать и смешивать пакеты из разных дистрибутивов не рекомендуется.


Я думаю, что было бы полезно предоставить раздел, в котором обсуждается вопрос библиотечных зависимостей, который может быть немного сложнее решить - но у меня меньше опыта в этом - кто-нибудь хочет внести свой вклад?
Данксд

Элементы, которые я бы настоятельно рекомендовал, включали бы подробности о RPM-пакетах src и о том, как поддерживать собственный локальный репозиторий. Сборка файлов deb или rpm должна быть частью любого инструментария, который должен соответствовать требованиям оригинального пакета.
Тим Бригам

Возможно, стоит расширить это, чтобы затронуть тему стеков приложений и их подводных камней. Вопрос «более актуальный пакет» напомнил мне о недавнем .
Андрей Б

Это вики сообщества, так что не стесняйтесь добавлять вещи или, конечно же, давать свой собственный ответ :-)
dunxd
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.