How can I ignore files/directories when building debian packages?
I have made some debian packages to ease deployment of configurations on new servers and want to put them in SVN source control. The problem is that SVN creates a .svn directory for each subdirectory in the source tree, so I can't build packages on the source tree 'dpkg-deb --build ' because the '.svn' directories will be included in the resulting package. So far when I want to build a package I have to export the directory to a different place and build from there.
Is there a quick way to making 'dpkg-deb --build' ignore the .svn directories?
Solution 1:
My understanding is that you should not be building a debian package with dpkg-deb --build
in the first place. If you use dpkg-buildpackage
instead, you won't have to worry about .svn directories being included in your package.
See: http://raphaelhertzog.com/2010/12/17/do-not-build-a-debian-package-with-dpkg-b/
There may be a better method, but here's one I haven't thoroughly tested:
Use dh_make
to create a skeleton debian package. Put your files in the directory above the debian
directory.
edit the resulting dirs
file, and put the paths you are going to move files into, eg:
/opt/mypackage
/usr/local/bin
Then in your rules
file, remove the $(MAKE) code and set your install: build section to something like this:
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Copy files into staging area
rsync --exclude .svn -a mypackage/ debian/tmp/opt/mypackage/
Solution 2:
To exclude files to be put in the source Debian package, you should create the file:
debian/source/options
and enter the options you want to pass to dpkg-source, in your case:
tar-ignore = ".svn/"
See the man page for dpkg-source.
Solution 3:
It's worth documenting here that if you're going to use dpkg-buildpackage
that it has a -i
switch to ignore things. i.e., use -i .svn
to ignore the .svn directory.