How do you make a package?
I have three solutions for you:
dh_make
. This is the way most official debian archives are put together. If you're having problems following along with the official guides, it's not because they aren't well written (they are), it's just a complicated process and so I'm not sure that a video tutorial will help too much more. You really just need to put in the effort and don't be dismayed if it takes a couple of weeks. dh_make
generates a skeleton debian/*
directory. Fill out your debian/copyright
, debian/control
, debian/rules
, debian/{post|pre}{inst|rm}
, etc. Then use dpkg-buildpackage
to make the package. If you have questions about a specific error, we can help answer that, but I can't write a guide in this answer that would be any clearer than official documentation.
dpkg-deb
: This one is A LOT easier. After building your project just do make install DESTDIR=/tmp/path
. Put a DEBIAN
directory in that same path with the same DEBIAN/control
, any maintainer scripts, copyright, etc. The main difference is that you don't need a rules
file because the package is already built. Then run dpkg-deb -b
.
cpack
: If you already use cmake
as a build system, then you just need to set a few CPACK_*
variables and some CPACK_DEB_*
variables, then after running cmake .. && cmake --build .
, just run cpack
.
Is there an IDE that makes it easier to make packages?
No. Your target platform (i.e. Debian) shouldn't dictate your IDE. Use the IDE that is most suited for your platform. Most of my packaging work is done in the terminal.
What programming languages do I have to learn to make this?
If you are going with solution 1 above, then you should know make
so you can write a rules file.
Are there any tutorials online?
If you're using solution 1, then your best friend is the Debian New Maintainer's guide. You have a link to chapter 6, but I think chapters 2-5 are more fundamental to both solution 1 and solution 2.
If you still have problems packaging, ask a more specific question and specify:
- How you are packaging.
- What you are building and your build system (e.g. python library, java-maven, C library, C++ application, using cmake, autoconf, pybuild, etc)
- What you are having problems with.