相关疑难解决方法(0)

包装适用于Linux的专有软件

我正在进行跨平台开发,我想为Linux构建一个漂亮的,自包含的(!)包.我知道这不是通常的方式,但应用程序需要一个地方的所有数据,所以我将它安装到/ opt,就像许多其他专有软件包一样.我最终将提供deb和rpm包,但现在只有.tar.gz.用户应该在某处提取它,它应该工作.我宁愿没有安装程序.

首先是我的问题,然后是细节:

  1. 其他人如何为Linux打包专有软件?
  2. 是否有包装软件的工具,包括共享库?

现在来看一些细节:这是我的项目(为此我称之为foo)布局:

  • foo(二进制)
  • config.ini文件
  • 数据

现在在包中,将有两个额外的元素:

  • foo.sh

libs将包含项目所需的所有共享库,foo.sh是一个将LD_LIBRARY_PATH设置为包含libs的脚本.因此,用户将执行foo.sh并且程序应该启动.

我有一个shell脚本,它按以下步骤打包软件:

  1. 创建空目录并将foo.sh复制到它
  2. 调用构建过程并将install安装到新目录中
  3. 从文件系统复制共享库
  4. 将所有内容打包为.tar.gz

你觉得这怎么样?这种方法存在一些问题:

  • 我必须对所有依赖项进行两次硬编码(一次在CMake中,一次在打包脚本中)
  • 我必须两次定义版本号(一次在源代码中,一次在打包脚本中)

你怎么做呢?

编辑: 刚出现的另一个问题:您如何确定您的软件所依赖的库?我做了一个ldd foo,但是有很多.我看了一下WorldOfGoo包的外观,它们只发送了很少的库.如何假设用户系统中存在哪个库,哪个库不存在?只需将所有目标分布安装到虚拟matine中,看看需要什么?

linux packaging distribution

7
推荐指数
1
解决办法
4166
查看次数

标签 统计

distribution ×1

linux ×1

packaging ×1