【问题标题】:How to properly set installed-size for deb package?如何正确设置 deb 包的安装大小?
【发布时间】:2013-08-18 22:30:36
【问题描述】:

我正在开发 debian 软件包,但在 DEBIAN/control 下正确定义“Installed-Size”时遇到了麻烦。
我创建了一个脚本,它不断检查 svn 存储库的新修订,如果发现一些更改,则使用 du -s 命令计算代码的大小(不包括 DEBIAN 文件夹),然后将此值放置到“已安装-尺寸'。

DEBIAN/控制文件如下:

Package: myfirstdebpackage
Version: 1.0
Architecture: all
Maintainer: me
Installed-Size: 16664
Depends: python (>=2.7), python-appindicator, python-numpy, python-suds
Section: extras
Priority: optional
Homepage: www.example.com
Description: My first deb package

应用程序的文件夹结构:

myfirstdebpackage/DEBIAN
myfirstdebpackage/usr/bin/myfirstdebpackage/<files>

第一次安装顺利(通过 apt 存储库),但在创建新版本并尝试更新包后,我收到“大小不匹配”或“哈希和不匹配”错误。

怎么了?

【问题讨论】:

    标签: linux debian apt deb dpkg


    【解决方案1】:

    我不希望您手动更改该值。相反,在包的根目录中运行debuilddevscripts 包的一部分)。将在该根的父目录中创建一个二进制包,并且当然会自动为您填写该字段。

    【讨论】:

    • 我已从控制文件中删除了“Installed-Size”字段,并且已成功创建包。然而问题依然存在。也许我的 apt 存储库有问题?每当我创建一个新的 deb 包时,我都会将其复制到存储库('binary' 文件夹),然后执行 'dpkg-scanpackages binary /dev/null | gzip -9c > 二进制/Packages.gz' 命令...
    • 不要手动运行dpkg-scanpackages。而是使用 reprepro 之类的辅助工具:serverfault.com/a/224635
    【解决方案2】:

    我假设您正在生成具有相同版本但每次内容不同的二进制包。不要那样做。这会混淆 apt 和许多其他工具,它们期望并假设每个 pkgname-version-arch 元组都表示一个唯一且不同的包。

    关于 Installed-Size,dpkg-gencontrol 会自动为您生成它,但我假设您是手动创建 DEBIAN/control 文件。我不建议这样做,因为这意味着更多的手动工作更容易出错。

    【讨论】:

    • 为什么投反对票?设置 Installed-Size 的正确方法是使用 dpkg-gencontrol。它可以手工生成,但这是相当不正统的。为此,您需要使用相同的算法,该算法不再是 debian-policy 中记录的算法,而是bugs.debian.org/793499 中引用的算法。当然,这与问题后面提到的错误无关,这与元索引与源和二进制包不同步有关,但这不是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2014-03-22
    相关资源
    最近更新 更多