I'm trying to create an ubuntu .deb package for the (pretty awesome) Io Language. I am not the developer of that language, so I'm not familiar with its sourcecode yet. This is my first attempt at creating a .deb file.
In order to create the .deb, I'm following these instructions:
http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html
So far I've been able to create a .deb file (io_2010.06.01-1_amd64.deb) and a changes file (io_201.06.01-1_amd64.changes). I'm using lintian to check the changes file, and it reports an issue I don't know how to resolve:
$ 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 ...
I've read the debian manual 8.8 section. I think I understand what the problem is (I need to make sure that ldconfig is invoked "somewhere", possibly on a place called "posinst") but I don't know how to resolve it (i.e. where this "posinsts" file is and how should I change it).
The current way of installing Io in Ubuntu is basically running sudo make install
and then sudo ldconfig
. Maybe the makefile should be modified so ldconfig is called from it? I don't know.
Thanks a lot.
postinst
is a maintainer script that you can add to thedebian
directory. Most straight forward packages shouldn't require the maintainer to create this file. Debhelper will automatically create it for you in the binary package. See both the New Maintainer's Guide and Debian Policy Manual's sections on maintainer scripts.