I have a hobby project that is written in C# using MonoDevelop. I’ve been trying for some time now to get my head around linux packaging, but I keep coming away feeling frustrated and overwhelmed.
My program consists of:
- A library project (“Generator”) that does stuff with the data created by my program.
- An ui (“Interface”) project using Gtk#. This project has two subdirectories: “glade” (xml files that gtk uses to build widgets) and “book” (data used by my program).
- A utility project (“Utils”) used by both the library and interface projects.
- A main project (“MyProgramName”) that just starts the interface.
What (I think) I want to do is really very simple (I think):
- Compile my application
- Copy the .exe and .dll files (to /usr/local/bin?)
- Copy the “book” directory (to /usr/local/bin?)
- Copy the “glade” directory (to /usr/local/bin?)
Oh, and I want to do this as a .deb package. I think if I can get the tarball working, a .deb package shouldn’t be too much trouble, but that’s what I want to do eventually.
I’m still not really sure how to do this. I’ve used MonoDevelop to create a Tarball. When I install the tarball (using ./configure, make, sudo checkinstall), it seems to install the executable code (and even create a command to run the program), but forgets about the “book” and “glade” directories.
How would I go about doing this? Sorry if this is a basic/broad question. I’ve been googling around about this, and I can’t seem to find anything that doesn’t assume I know the basics of packaging (even if it claims it doesn’t assume this).
Debian packages are like tar files – they contain a copy of the file system. To create a Debian package…
dpkg --build.I would start by learning GNU’s autotools: autoconf and automake. They make it very easy to install the program in a build directory. You mentioned
./configure. So I assume ythis project already has some of the structure. From the description, it sounds like the project might need…Putting it all together, the following commands result in a package file named project.deb.