在Ubuntu / Debian上为基于Qt的应用程序安装文件的位置

时间:2010-06-22 15:59:37

标签: qt ubuntu installer debian packages

我正在寻找有关如何为Ubuntu / Debian发行版打包基于Qt的应用程序的技巧。假设应用程序(可执行文件)是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)中,但Debian Filesystem Heirarchy Standard似乎不鼓励这样做。
  • 我可以将它们放在/usr/local/lib/myapp中,但是如何确保动态链接正确的版本?如果我这样做,我需要做什么才能将此目录添加到目标系统上的LD_LIBRARY_PATH

正如您所知,我对Ubuntu系统的打包很新,所以我的方向可能完全错误。我很有兴趣听到其他人这样做,以了解他们发现的最佳效果,特别是从稳定性和易维护性的角度来看。

以下是我到目前为止所完成的一些文档:

2 个答案:

答案 0 :(得分:3)

您需要查看control部分。您不应该分发这些共享库,除非您在代码中从源代码构建它们。这些库属于您需要列出的包的Depends或Build-Depends的其他包。

你说你不熟悉Ubuntu系统的包装,你打包过什么平台?如果它只是Windows,你习惯了地狱。在Linux上更容易避免,因为可以说它需要安装某些库,并且包安装程序知道如何找到这些库。

答案 1 :(得分:0)

如果您确实希望确保您的应用程序使用您随附的库,那么只需执行许可证的静态链接即可。由于您使用的是特殊的特定版本的库,因此您并不希望任何其他应用程序使用您的库而不是程序包管理系统提供的系统库。我之前已经构建了静态版本的Qt,它有点不方便,但并不比构建通常动态链接的Qt版本更大。我没有和ICU合作,但我想这并不差。

失败了......是的,把它全部放在应用程序的目录中,整齐地远离系统的其他部分。根据我的经验,大多数执行此类操作的应用程序都没有遵循任何官方分发标准,因此用户在这方面没有非常具体的期望。