views:

136

answers:

2

I am trying to create a Debian package for a Java application.

In my package there is a .jar file which is executable, a script which will run this jar file and a .so file for fmod. I've read this tutorial.

In the control file there is a 'Depends' field which basically describes the packages that need to be installed in order to install my application. My question is, how do I find which packages are required for my application? I followed the instructions in the tutorial for one of the .so files, and got this:

$ dpkg -S libfmodex64-4.28.09.so 
dpkg: *libfmodex64-4.28.09.so* not found.

Also, my application requires Java 1.5 to be installed in order for it to run. How do I specify this in my debian package?

+1  A: 

I strongly recommend building your package from source within the Debian packaging infrastructure. Everything will be pretty much automatically taken care of if you use the Ant class in CDBS.

If you do insist on assembling a binary .deb only, equivs is much less hackish than the method described by your document.

ephemient
Hello ephemient,Thanks for the response. This is exactly what I need. I actually need to later on integrate everything in to ant.. So is there a good tutorial for integrating Ant with CDBS..Thanks
AJ
A: 

You'll want to get the canonical name for your library:

apt-cache search libname

Take care to note the nomenclature at the end of the package. You don't want to specify a specific version in the control file, just the earliest version of the library that is suitable for your application.

You would then use canonical_libname >= major.minor , which lets the system decide if you have (or can update to) the version of the library that can support your application. If you carve this in time, i.e. specifying the full version of your current library, you'll break in the future.

For instance, if you specify libfoo-1.2.34 and future versions of Debian ship libfoo-2.3.45, your package won't install, because it thinks you have an incompatible version of libfoo.

Tim Post
`apt-cache`, not `apt cache`.
ephemient
@ephemient - Thanks, fixed it.
Tim Post