作者freesamael (烧卖)
看板LinuxDev
标题Re: [问题] 想请问一下在不同Distribution开发程式 …
时间Fri Apr 18 00:53:37 2008
※ 引述《ccbruce (今、そこに いる仆)》之铭言:
: 首先是我们的开发平台,因为未来我们的程式应该有很大的机会部署到uBuntu上,但是我
: 觉得debian的社群比较大,资源比较丰富,所以说服了主管采用debian作为开发平台。但
: 是现在我不禁怀疑我这个作法是不是错的...
: 虽然同样是Linux,不过不同Distribution上的library版本、目录配置都不同。那麽,有
: 没有可能发生这样的一件事呢?比如说我的程式里用了libc6 2.7,在debian下一切正常
: ,而在ubuntu上虽然也有libc6 2.7,却无法执行的情况呢?
系统的 library path 对 user program 而言并没有那麽重要,使用者其实可以透过
ldconfig 告诉 dynamic linker 要去哪里找 library。档名比较重要,要一致。
比如说需要 libc.so.6,那 target 平台也必须有相同名称的 library。
: 接着,就是安装时的检查问题,假设我们用deb来管理我们的程式,那麽在ubuntu上,检
: 查相依性的control档是不是得要重写呢?
一般来说,debian 跟 ubuntu 打包出来的 debian package 是可以互通的。比较要注意
的是相依套件版本的问题。同样是 libc6,在 ubuntu 7.10 上是 libc6-2.6.1,在
debian 4.0 上是 libc6-2.3.6。所以在 ubuntu 7.10 上打包的套件拿到 debian 4.0 上
会遇到一大堆套件不够新的错误而不能安装。
所以尽量不要用非稳定版的版本(debian sid, testing 或尚未正式释出的
ubuntu 测试版)来打包套件。不然会因为他们用的套件太新,稳定版都不能装。
: 另外,如果我们用tarball来发行我们的程式,
: 又要如何检查相依性呢?
有原始码的话,请多利用 autotool(autoconf+automake)。这样使用者就能透过常见的
./configure, make, make install 三步曲安装软体。
: 最後,我觉得虽然核心相同、程式相同,可是各个Distribution却因为各自的套件管理和
: 结构不同,最後还是造成各自不相容。有没有文章或书在探讨这方面的问题的呢?
目前的情况就是各自为政,LSB 很努力想做一个标准化的 API 解决这个问题,
不过这得花费许多年,短期之内是看不到良好解决方案的。
目前要做的话,最 general 的方法就是用 autotool 让使用者自己编译安装。
--
Licensed under CC2.5(TW) by-sa, Samael Wang.
http://creativecommons.org/licenses/by-sa/2.5/tw/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.82.153
※ 编辑: freesamael 来自: 220.135.82.153 (04/18 00:54)
1F:推 dozer:推 04/18 00:55
※ 编辑: freesamael 来自: 220.135.82.153 (04/18 01:10)