我有一个二进制应用程序,我想从它创建一个Debian包(* .deb)。在DEBIAN / control文件中,我需要添加依赖项。 为了找到依赖项,我执行以下命令:
> objdump -p greenCity | grep NEEDED
NEEDED libsfml-graphics.so.2.3
NEEDED libsfml-system.so.2.3
NEEDED libsfml-window.so.2.3
NEEDED libgcc_s.so.1
NEEDED libc.so.6
这里是控制文件内容:
Package: greencity
Version: 1.0
Architecture: amd64
Depends: libsfml-graphics, libsfml-system, libsfml-window
Maintainer: x x <x@x.com>
Section: base
Priority: optional
Homepage:
Description: xxx
最后,我创建了包并安装它。在安装过程中,我收到以下错误:
greencity取决于libsfml-graphics;但是:包装 未安装libsfml-graphics。绿色城市取决于 libsfml系统;但是:未安装包libsfml-system。 greencity依赖于libsfml-window;但是:包libsfml-window 没有安装。
信息:我的Linux上安装了libsfml-graphics / system / window2.3软件包。 那么,确定依赖名称的规则是什么?我尝试了很多可能性,但没有一个可行:(
提前谢谢。
答案 0 :(得分:1)
此库的Debian软件包的名称附加了库的主要版本号; 例如 libsfml-graphics2
,libsfml-system2
,等。
虽然这是Debian软件包命名的常见模式,但通常有例外。在编写控制文件时,您应该始终查找软件包的确切名称(在系统的软件包列表中,或在https://packages.debian.org/上);不要假设包名称始终与文件名匹配。
答案 1 :(得分:1)
根据syntax of Debian control file,您需要在“取决于”部分中提供包名称。
您可以使用dpkg-query
命令轻松找到它。例如,您需要libgcc_s.so.1
出席。然后检查哪个包提供它
$ dpkg-query -S 'libgcc_s.so.1'
libgcc1:i386: /lib/i386-linux-gnu/libgcc_s.so.1
lib32gcc1: /usr/lib32/libgcc_s.so.1
libgcc1:amd64: /lib/x86_64-linux-gnu/libgcc_s.so.1
现在你可以写
了Depends: libgcc1