我正在尝试为(非常棒)创建一个 ubuntu .deb 包Io 语言。我不是该语言的开发者,所以我不熟悉它的源代码还没有。这是我第一次尝试创建 .deb 文件。
为了创建 .deb,我遵循以下说明:
http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html
到目前为止,我已经能够创建一个 .deb 文件 (io_2010.06.01-1_amd64.deb) 和一个变更文件 (io_201.06.01-1_amd64.changes)。我正在使用 lintian 检查变更文件,它报告了一个我不知道如何解决的问题:
$ lintian -Ivi io_2010.06.01-1_amd64.changes
... (lots of messages)
I: io: no-symbols-control-file usr/lib/libiovmall.so
I: io: no-symbols-control-file usr/lib/libgarbagecollector.so
I: io: no-symbols-control-file usr/lib/libbasekit.so
E: io: postinst-must-call-ldconfig usr/lib/libiovmall.so
N:
N: The package installs shared libraries in a directory controlled by the
N: dynamic library loader. Therefore, the package must call "ldconfig" in
N: its postinst script.
N:
N: Refer to Debian Policy Manual section 8.1.1 (ldconfig) for details.
N:
N: Severity: serious, Certainty: certain
N:
N: Removing /tmp/OYuNShEHYz ...
我读过debian 手册 8.8 部分。我想我明白问题是什么(我需要确保 ldconfig 在“某处”被调用,可能是在名为“posinst”的地方),但我不知道如何解决它(即这个“posinsts”文件在哪里以及我应该如何更改它)。
目前在 Ubuntu 中安装 Io 的方式基本上是运行sudo make install
然后sudo ldconfig
。也许应该修改 makefile 以便从中调用 ldconfig?我不知道。
多谢。
答案1
postinst
是一个维护者脚本,你可以将其添加到debian
。大多数直接软件包不需要维护者创建此文件。Debhelper 会在二进制软件包中自动为您创建它。请参阅新维护者指南和Debian 政策手册关于维护者脚本的部分。