2011-12-29 220 views
0

我经历了几个关于创建debian软件包的教程。这一切似乎都很简单。所有需要做的就是创建一个列出依赖关系的控制文件,并在要打包的目录上运行“dpkg”。如何debian软件包修复依赖关系的版本?

不清楚的是封装机制如何修复依赖关系。例如,假设我的可执行文件依赖于libxxx.so.23(如运行ldd所示)。当软件包安装在客户端机器上时,它会自动下载“xxx”软件包,并可能导致在客户机上创建libxxx.so.1。打包机制如何将可执行文件修复为指向libxxx.so.1而不是libxxx.so.23?

非常感谢您的帮助。

+0

我们不通过在packad目录上运行'dpkg'来构建软件包。我们在解压后的源码包中运行'debuild'(实际上'dpkg-buildpackage',但'debuild是更好的')。 – tumbleweed 2012-01-06 15:09:52

回答

0

它没有。 libxxx.so.23位于软件包libxxx23中,不是通用libxxx-dev,而dh_shlibdeps引入了对libxxx23的依赖关系。未版本化的软件包(xxx或libxxx)非常罕见,可能是一个错误。

+0

谢谢你的帮助。我仍然困惑。看看VLC媒体播放器的控制文件,我看到依赖部分没有提到特定的版本,但像libstdC++ 6(> = 4.2.1)。这是如何运作的?另外,我们知道VLC需要ffmpeg(libavcodec)。然而,它甚至不在依赖列表中。我错过了什么? – Peter 2011-12-30 16:27:19