This file has instructions on how to build a fuse package with changes which is based on the upstream fuse-2.9.0 package. We needed to modify fuse to change the default behavior of setting nosuid an nodev on mounts. The tools used to build a debian package want very much to use the upstream package as the source material, and have all modifications to the original package be scripted. This means all changes to the original source are included as patches which are applied as the package is built. Here are the steps needed to produce a custom package: 1) On a PB VM, apt-get install these packages: build-essential devscripts debhelper quilt 2) Make a temp directory and download the original upstream tarball (fuse_2.9.0.orig.tar.gz) 3) Extract the tarball. 4) Copy the debian directory from this repo into the fuse-2.9.0 directory At this point you should have temp/fuse_2.9.0.orig.tar.gz /fuse-2.9.0/debian /fuse-2.9.0/ This is enough to build a deb package, but presumably we want to modify something. That means we well need to create a patch. The way to do this is to use quilt, which is a patch management util. First, things go much smoother if we setup quilt to find the debian/patches. Add the following to ~/.quiltrc for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then export QUILT_PATCHES=debian/patches break fi done Now we should be able to use quilt to see the existing patches pb@pennybacker-fusion:~$ cd temp/fuse-2.9.0 pb@pennybacker-fusion:~/temp/fuse-2.9.0$ quilt series 04-nosuidnodev.patch 01-initscript.patch 02-kfreebsd.patch 03-examples.patch To start work on a new patch, do 'quilt new .patch'. You should be able to see the new patch in the quilt series. Now add the file(s) you intend to modify. Quilt saves a copy of them so it can produce a diff later. For example: quilt add util/fusermount.c quilt diff quilt refresh The next thing to do is update the changelog. This is done with the dch command. Don't edit the changelog manually because the packaging tools are very picky. dch --local +ntap+ "Your coment here" This will result in a set of packages with version 2.9.0-2+deb7u1+ntap+1, and when they are installed: pb@pennybacker-fusion:~$ dpkg --list | grep fuse ii fuse 2.9.0-2+deb7u1+ntap+1 amd64 Filesystem in Userspace ii libfuse-dev 2.9.0-2+deb7u1+ntap+1 amd64 Filesystem in Userspace (development) ii libfuse2:amd64 2.9.0-2+deb7u1+ntap+1 amd64 Filesystem in Userspace (library) The dch command will auto-increment the version number (+ntap+2, etc) Mow we are ready to build the packages with the following comand: debuild -us -uc This results (hopefully) in a set of debian packages located in the parent directory, or at the same level as the orig tarball.