Package with complex dependencies -- where to start, where to end?
I'm working on my first application that will target (among other things) Debian-based distributions. The application works fine and I am now working on installing / distributing.
I have read the Debian New Maintainers' Guide, the parts of the Debian Policy Manual that seemed relevant, and gone through the Ubuntu packaging guide. I have successfully built some sample .deb packages but just don't know where to start on my own. (In other words, if I just need to RTFM, please let me know where in the FM I need to go, cause I'm not seeing it!) Here are my questions:
- The application will have very limited appeal -- it is implementing a specific workflow for our organization, whose users are spread out across the world. Most of the documentation I am reading assumes you are putting something into a standard Debian repository. Is that right, or should I set up some kind of local repository on our web server?
- I have a dependency on Qt version 4.7.0+ (libqt4-core, libqt4-gui, libgt4-xml, etc.). The versions I need are in the experimental distribution. Making it work on an earlier version is not an option. There is at least one bug fix that, for performance reasons, will render our application useless pre-4.7. And we are taking advantage of some new APIs in 4.7 as well. How do I include this dependency? Is there something that says, "it's OK to use the experimental distribution for this one?" Or do I build it and package it myself, perhaps with a prefixed name (myapp-libqt4-core?) Also, we are building Qt from source with some configuration options (such as -plugin-sql-sqlite). Are those guaranteed to be in the "official" library once it becomes stable? How can one tell? Or do I just drop my own version of the binary library which I know will work into some private folder and be done with it? If so, what folder would that be? /usr/???/myapp, /opt/???/myapp
- I also have a dependency on the ICU library, version 4.6. This is not even in the experimental distribution. So, the same questions apply. How to I include this dependency?
- A high percentage (~50%) of our users will have to install from a CD; they will not have an internet connection at the time of install. It looks like once the packages are set up, I can use APTonCD and then provide instructions on making our CD a valid software source. Is that correct?
As you can tell, I'm new to this form of software distribution. Our software is available on Windows (using Windows Installer, installing the dependencies in the application folder) and Mac (as a app bundle, with dependencies within the bundle), but I'm just not clear what the best practices are for Debian.
Thank you for your help!