Мой вопрос: как я могу проверить, какая версия библиотеки установлена, не используя для этого менеджер пакетов?
Во-первых, обратите внимание, что обычный и принятый механизмобрабатывать это в Linux именно для того, чтобы диспетчер пакетов проверил это - это одна из основных причин, по которой они были изобретены.
Другой распространенный вариант - это проверить ваш скрипт configure
или Makefile
при сборке изsource.
Если вы хотите предоставить предварительно скомпилированные двоичные файлы, но не используете менеджер пакетов, я считаю, что лучший механизм - это проверить, есть ли в библиотеке какой-то внутренний механизм для извлечения своей версии во время выполнения.К сожалению, это специфично для каждой библиотеки, с которой вы ссылаетесь.
GStreamer, к счастью, имеет это:
void gst_version(guint *major, guint *minor, guint *micro, guint *nano);
Gets the version number of the GStreamer library.
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstVersion.html
Вы можете просто вызвать эту функцию при запуске, ивыручите, если версия не в порядке.
Тем не менее, я бы настоятельно рекомендовал вам не использовать менеджер пакетов.Это действительно самый безболезненный механизм, который позволяет справиться с этим, а также позволяет легко устанавливать его пользователям (если вы предоставляете репозиторий).