![](/img/trans.png)
[英]How to configure Java 7 OR Java 8 dependency in Debian deb package?
[英]Debian package (.deb): how determine depends?
我有一个二进制应用程序,我想从中创建一个Debian软件包(* .deb)。 在DEBIAN /控制文件中,我需要添加依赖项。 为了找到依赖关系,我执行以下命令:
> 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
最后,我创建了软件包并安装了它。 在安装过程中,出现以下错误:
绿色城市取决于libsfml-graphics; 但是:未安装软件包libsfml-graphics。 绿色城市取决于libsfml系统; 但是:未安装软件包libsfml-system。 绿色城市取决于libsfml-window; 但是:未安装软件包libsfml-window。
信息:软件包libsfml-graphics / system / window2.3很好地安装在我的Linux上。 那么,确定依赖名称的规则是什么? 我尝试了很多可能性,但都无济于事:(
先感谢您。
该库的Debian软件包的名称后面附加了库的主要版本号。 例如 libsfml-graphics2
, libsfml-system2
等 。
尽管这是Debian软件包命名的一种常见模式,但经常会有例外。 编写控制文件时,应始终查找软件包的确切名称(在系统的软件包列表中,或在https://packages.debian.org/上 )。 不要以为包名将始终与文件名匹配。
根据Debian控制文件的语法 ,您需要在“ Depends”部分中提供软件包名称 。
您可以使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.