Где установить файлы для приложения на Qt в Ubuntu / Debian - PullRequest
2 голосов
/ 22 июня 2010

Я ищу советы по упаковке моего приложения на Qt для дистрибутивов Ubuntu / Debian. Допустим, приложение (исполняемое) - myapp. Запустив objdump -p myapp | grep NEEDED, я вижу, что он имеет следующие зависимости:

libicuuc.so.44
libicui18n.so.44
libicudata.so.44
libQtGui.so.4
libQtCore.so.4
libpthread.so.0
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6

Я просмотрел несколько онлайн-документов (перечисленных в конце этого вопроса), но все еще неясен на , куда устанавливать фактические файлы .

Стандарт иерархии файловой системы Debian предлагает (я думаю) установить myapp в /usr/local/bin, но я не уверен насчет ICU и библиотек Qt. Важно, чтобы использовалась точная версия некоторых из этих библиотек. (У них есть проекты API-интерфейсов, которые используются, которые могут сломаться в будущих версиях.)

  • Я хочу избежать «ада совместно используемых библиотек», чтобы я склонялся к тому, чтобы поместить их в каталог приложения (/usr/local/bin), но стандарт Heirarchy в файловой системе Debian, похоже, препятствует этому.
  • Я мог бы поместить их в /usr/local/lib/myapp, но тогда как мне убедиться, что правильная версия связана динамически? И если я сделаю это, что мне нужно сделать, чтобы добавить этот каталог в LD_LIBRARY_PATH в целевой системе?

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

Вот некоторые документы, которые я прошел до сих пор:

Ответы [ 2 ]

3 голосов
/ 22 июня 2010

Вам нужно взглянуть на раздел control. Вам не следует распространять эти общие библиотеки, если вы не строите их из исходного кода в своем коде. Эти библиотеки принадлежат к другим пакетам, которые вам нужно указать как Depends или Build-Depends для вашего пакета.

Вы говорите, что вы новичок в упаковке в системах Ubuntu, для каких платформ вы упакованы? Если бы это была только Windows, вы привыкли к dll ад. В Linux этого гораздо легче избежать, поскольку вы можете сказать, что для этого требуются определенные библиотеки, и установщик пакета знает, как найти эти библиотеки.

0 голосов
/ 25 сентября 2010

Если вы действительно хотите убедиться, что ваше приложение использует библиотеки, с которыми вы его поставляете, возможно, имеет смысл просто статическое связывание лицензии, позволяющее это. Поскольку вы используете специальную специальную версию библиотек, вам не нужно, чтобы другие приложения использовали ваши библиотеки вместо системных библиотек, предоставляемых системой управления пакетами. Ранее я создавал статическую версию Qt, и это несколько неудобно, но не намного больше, чем создание обычной динамически связанной версии Qt. Я не работал с ICU, но я думаю, что это не хуже.

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

...