1

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

Недавний пример - MathGL, который, когда я впервые попытался установить его, сказал, что в нем отсутствуют некоторые зависимости, но не указал явно, что мне нужно apt-get install libmgl-dev . Это просто общеизвестно? Я не видел упоминаний о libmgl-dev ни в одном из их файлов README или INSTALL или на их веб-сайте. Я даже сделал grep для всего каталога в поисках упоминания libmgl-dev , и ничего не нашел. После долгих поисков в Google мне удалось найти его в каком-то сообщении на форуме, в котором было сказано, что это необходимо.

Должно быть что-то не так с моей методологией. При установке чего-нибудь, есть ли стандартный способ определить, какие зависимости мне нужны в первую очередь? Большое спасибо!

2 ответа2

1
  1. Если команда разработчиков работает отлично и / или профессионально ./configure скажет вам, чего не хватает, к сожалению, такой вид программирования является исключением, а не правилом.

  2. при запуске make a (я забыл точное сообщение об ошибке) будет отображаться определенный тип пропущенного сообщения об ошибке.

  3. Расположение зависимостей зависит от языка. Может быть, у кого-то есть способ получше, но вот как я это делаю. В языке программирования C есть операторы < filename.h >, которые указывают заголовочные файлы. Если вы ищете в заголовочных файлах текущие папки и не можете найти его, есть вероятность, что он является частью другой библиотеки. В зависимости от дистрибутива стандартные файлы заголовков находятся в разных местах. В OpenSuSE / usr / include содержатся все файлы заголовков для программ, в которых уже установлен -dev . Если его нет в любом месте, скорее всего, вам не хватает библиотеки, которую нужно установить.

В Perl это использование Something::subfunction ; это указывает, что это вызывает и внешний модуль / библиотека.

В php есть индикаторы include, include_once, require и require_once .

Другие языки имеют разные методы.

0

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

Для произвольного примера предположим, что вы хотите скомпилировать Gnumeric, приложение для работы с электронными таблицами. Вы скачиваете исходный код и смотрите в файле README, в котором есть раздел

Requirements
------------

You need:               Debian package name
    glib        >= 2.28.0   libglib2.0-dev
    gtk+        >= 3.2.0    libgtk3.0-dev
    libgsf      >= 1.14.24  libgsf-1-dev
    libgoffice  >= 0.10.1   libgoffice-0-8-dev
    gnome-xml       >= 2.4.12   libxml2-dev
    pango       >= 1.24.0   libpango1.0-dev
    NOTE: gnome-xml is also known as libxml

Optionally:
    python      >= 2.0      python-dev
    pygobject   >= 3.0.0    python-gi-dev

    The GDA plugin, for accessing databases
    gda     >= 1.3.0    libgda2-dev
    libgnomedb  >= 1.3.0    libgnomedb2-dev

Currently disabled:
    guile       >= 1.5  (no maintainer)

Runtime suggestions:
    'yelp' for help

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

$sudo apt-get install libglib2.0-dev

установить первую зависимость.

Однако второй столбец "имя пакета debian" встречается не так часто в большинстве программных пакетов. Вместо этого у них будет только первый столбец "glib" и, возможно, номер версии. Вы можете подтвердить именованную зависимость "glib" с именем пакета debian (или ubuntu и т.д.) "Libglib2.0-dev". Обычно некоторые поисковые запросы в Интернете или на форумах помогут вам найти название пакета.

Имея некоторый опыт, вы заметите шаблоны в именах пакетов, которые вам нужны. Как правило, библиотеки упакованы с именами libXXXX, и, как правило, они разделены на компоненты времени выполнения (libXXX) и файлы разработки, необходимые для компиляции вашей программы (libXXX-dev). Кроме того, если вы не можете найти нужный пакет с помощью простого веб-поиска, посмотрите на конкретное сообщение об ошибке, которое вы получаете, когда пытаетесь скомпилировать. Если, например, отсутствует файл "glib.h", вы можете использовать поиск пакетов вашего дистрибутива, чтобы найти пакеты, содержащие этот файл, или, в более общем случае, вы всегда можете просто искать эти сообщения об ошибках в Интернете, чтобы найти других людей с такой же проблемой ,

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .