我正在开发一个 Rust 应用程序,我想为 Debian 提供软件包。我在下面有类似的配置debian/controls
Source: com.github.yourname.yourrepo
Section: x11
Priority: extra
Maintainer: Someone
Build-Depends: cargo,
debhelper (>= 9),
libgtk-3-dev,
libglib2.0-dev
Standards-Version: 3.9.3
Package: com.github.yourname.yourrepo
Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: SomeApp
Some app developed in Rust
但是当我尝试用debuild
它构建它时,它抱怨我没有cargo
.但是,如果我cargo
在终端中输入,它就会出现在系统中。我猜原因是我没有安装该cargo
软件包。如果人们已经有货物,我也不想强迫他们安装它。有没有办法强制拥有非 Debian 软件包的依赖项?
答案1
不,没有办法强制执行不是 Debian 二进制包的构建(或其他)依赖项。所有依赖、冲突等字段声明之间的关系包。
你能equivs
如果您想使用自己的包而不是打包的包,那么您可以通过创建假包来作弊cargo
,但是您将无法检查您的包是否为其他 Debian 用户正确构建。
答案2
请注意,这些Build-Depends: ...
软件包仅在构建时安装。这意味着最终用户永远不会看到该列表。
相反,Depends: ...
当最终用户执行以下操作时,您的内容会自动安装:
apt install ./<package>.deb
因此,您也可以cargo
在构建时安装该软件包。这仅有的不这样做的原因是如果构建系统无法看到包的较新版本并且需要该较新版本。在这种情况下,您必须cargo
先自己创建一个包,然后使用它特别的打包到你的构建系统中(正如 Stephen Kitt 提到的)。