繁体   English   中英

Debian软件包(.deb):如何确定依赖?

[英]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-graphics2libsfml-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM