Я впервые упаковываю приложение для Ubuntu. У меня есть несколько зависимостей, основными из которых являются Qt и ICU. Мне просто непонятно, как развернуть эти приложения, не попав в тупик для Linux.
Например, я хотел бы использовать версию 4.7.4 Qt, потому что в этом выпуске есть некоторые исправления ошибок, которыми я хотел бы воспользоваться. Я также хотел бы развернуть свое приложение на всех поддерживаемых в настоящее время версиях Ubuntu, что возвращает меня к Lucid. Но последняя доступная версия для Lucid - 4.6.2, которая даже API-совместима с 4.7.4. Опции, как я вижу:
/opt/company/package/lib
) и установите LD_LIBRARY_PATH
перед выполнением моего приложения. Ни один из них не является отличным вариантом, и, в частности, debuild
ужасно использовать, если вы хоть немного отойдете от их ожиданий. Я не могу связать статически из-за ограничений LGPL (по крайней мере, так я их понимаю).
У меня также есть обратный вопрос. Предположим, я решил поставить зависимость от libQtCore4 (>= 4.7.4)
. Я видел достаточно регрессий между версиями Qt, поэтому есть вероятность, что 4.7.5 или 4.8.0 что-то сломают в моем приложении. Это просто то, с чем вам приходится иметь дело, или лучше всего полагаться на конкретную версию библиотеки, например libQtCore4 (= 4.7.4)
?
Если вы действительно хотите поддерживать выпуски, которые не имеют нужной версии библиотеки, просто используйте статическое связывание. Наличие разделяемой библиотеки, в которой вы являетесь единственным пользователем, побеждает назначение разделяемых библиотек, поэтому вы можете просто поместить все это в один двоичный файл. Вы даже сэкономите место, так как части библиотеки, которые вы не вызываете, будут выброшены.
Я бы посоветовал вам начать с однонаправленной сборки, которая просто перечисляет зависимости, как обычно, а затем переключиться на статическое связывание, когда вы перенесете его в более старые выпуски.