Debian – apt-get install does not target the same path on ubuntu or debian

aptdebianUbuntu

I am puzzled about why apt-get install does not behave the same way according whether it is invoked from an Ubuntu (16.04) or from a debian (stretch-slim docker image).

Basically, I perform a :

root@ubuntu $ apt-get install libfcgi-dev 
...
root@ubuntu $ dpkg -L  libfcgi-dev 
/.
/usr
/usr/lib
/usr/lib/libfcgi++.a
/usr/lib/libfcgi.a
/usr/share
/usr/share/doc
/usr/share/doc/libfcgi-dev
/usr/share/doc/libfcgi-dev/copyright
/usr/include
/usr/include/fastcgi.h
/usr/include/fcgi_config.h
/usr/include/fcgios.h
/usr/include/fcgio.h
/usr/include/fcgiapp.h
/usr/include/fcgi_stdio.h
/usr/include/fcgimisc.h
/usr/lib/libfcgi.so
/usr/lib/libfcgi++.so
/usr/share/doc/libfcgi-dev/changelog.Debian.gz

The same from the container :

root@container $ apt-get install libfcgi-dev 
...
root@container $ dpkg -L  libfcgi-dev 
/.
/usr
/usr/include
/usr/include/fastcgi.h
/usr/include/fcgi_config.h
/usr/include/fcgi_stdio.h
/usr/include/fcgiapp.h
/usr/include/fcgimisc.h
/usr/include/fcgio.h
/usr/include/fcgios.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libfcgi++.a
/usr/lib/x86_64-linux-gnu/libfcgi.a
/usr/share
/usr/share/doc
/usr/share/doc/libfcgi-dev
/usr/share/doc/libfcgi-dev/changelog.Debian.amd64.gz
/usr/share/doc/libfcgi-dev/changelog.Debian.gz
/usr/share/doc/libfcgi-dev/copyright
/usr/lib/x86_64-linux-gnu/libfcgi++.so
/usr/lib/x86_64-linux-gnu/libfcgi.so

I thought the package was the one deciding where it was going to be installed (according to [this post][1]), and it looks like apt-install does add "x86_64-linux-gnu" under debian

It's quite annoying since I have to perform a huge build on debian where all librairies paths are hardcoded without the "/x86_64-linux-gnu" part

Anyone has a tip on how I can workaround this and perform the build without hardlinking all x86_64-linux-gnu/* to /usr/lib or rewriting the make files ?

Best Answer

This isn’t apt changing the paths. The Ubuntu 16.04 package was built using “old” paths, the Debian 9 package was built with multi-arch paths (see the changelog for version 8.4 of the packaging).

You shouldn’t need to hard-code the paths at all, the compiler knows where to find these libraries.

Related Question