Question

This is again one these nice Debian packaging problems.

I have an app that installs to /opt (the install location is actually irrelevant, the same problem occurs with /usr):

OPT=1 ./configure && make && make install

I took a working Debian packaging from my other app, that used CMake, but the configuring, build and installation were similar. I modified the rules file a bit to build my new app:

build: build-stamp
build-stamp:
    dh_testdir

    # Add here commands to compile the package.
    OPT=1 ./configure && $(MAKE) -j$(shell cat /proc/cpuinfo | grep processor | wc -l)
    touch build-stamp

I left the installation part untouched:

install: build
    dh_testdir
    dh_testroot
    dh_prep
    dh_installdirs

    # Add here commands to install the package into debian/<packagename>
    DESTDIR=`pwd`/debian/`dh_listpackages` $(MAKE) install

Now, the problem is that when I try to build the package, it tries to install to the real /opt and crashes:

mkdir: cannot create directory ‘/opt/snm’: Permission denied
make[1]: *** [install_target] Error 1
make: *** [install] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1361:
dpkg-buildpackage -rfakeroot -D -us -uc -i -b failed

I just can't figure out why my packaging doesn't work with my new app. Or alternatively, why it DID work with the other app :)

Was it helpful?

Solution

It seems that my install step was just ignoring the DESTDIR given by the Debian rules file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top