7

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?

3 Answers 3

5

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/
3
  • 3
    Note: this is "old school" debhelper. Since debhelper has migrated to dh $@ and the new targets like override_dh_auto_build-indep Aug 17, 2015 at 6:19
  • @FranklinPiat is correct Aug 18, 2015 at 23:59
  • 5
    That blog post you linked to basically says, "don't use dpkg -b, instead spend the next 4 hours studying debian.org/doc/manuals/maint-guide" Where's the helloworld version? Oct 25, 2017 at 4:34
9

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.

2
  • 1
    This is slightly wrong. Using ".svn/*" the ".svn" folder is going to be included, still. You should just use ".svn". Also if you need to exclude multiple folders (say "tmp" as well) write one line per exclusion. May 26, 2019 at 4:34
  • Note that you can have multiple tar-ignore lines in the options file if you want to ignore multiple files/folders Feb 22 at 11:22
5

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.