[lug] deb source packaging
Ben
bluey at iguanaworks.net
Mon Jul 13 09:09:35 MDT 2009
Anyone have experience making deb source packages? Here's my problem:
I'm creating a package that compiles a library that links against
python. This means that the binary version of the package depends on
both the architecture (i386, amd64) and the python version (python2.6
python2.5). What is the right way to package this? Right now I've got
one source package that has 2 binary packages in:
main
main-python
The problem is that main-python depends on the version of python it was
compiled against and while it has the right dependencies (dpkg knows it
needs, say, python-2.5), it isn't good if I want to distribute binaries
against multiple versions of python since they have the same filename.
(Since in the debian / ubuntu world, python versions keep changing, and
are different on different distros. So I thought I would split it up
into two binary packages in my source package:
main
main-python2.5
main-python2.6
(where main-python2.X provides main-python)
Now this mostly works except that many systems have multiple python
versions installed, but only one default version (what /usr/bin/python
points to). Now if I have python2.5 and python2.6 installed but
python2.5 is my default, how can I make sure when I run apt-get (the
above packages are in a repository) it grabs main-python2.5? If I don't
then they install python2.6, but when they call programs with
/usr/bin/python it won't work because they need to call
/usr/bin/python2.6. This confusion also applies to when grabbing and
compiling from source with apt-get -b source main.
Ideally, I'd like either two packages:
main
main-{pyversions -d}
where name of the second depends on the default python version. I've
read that deb doesn't support variables in package names though. Or
main
main-python2.5
depends on python2.5 being default
main-python2.6
depends on python 2.6 being default
but I don't see how to make a dependency like this since the default
version isn't apparent from what packages are installed. I've tried
looking at variable substitution, but I don't see how to do something like
Install if `pyversion -d` =="python2.5" so again source would only
package against the version of python that is default.
Is there a better ('right') way to do this?
Thanks,
Ben
More information about the LUG
mailing list