
Я озадачен, почему apt-get install ведет себя по-разному в зависимости от того, вызывается ли он из Ubuntu (16.04) или из Debian (образ docker stretch-slim).
В основном я выполняю:
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
То же самое из контейнера:
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
Я думал, что пакет сам решает, куда его установить (согласно [этому посту][1]), и похоже, что apt-install добавляет "x86_64-linux-gnu" в Debian
Это довольно раздражает, так как мне приходится выполнять огромную сборку на Debian, где все пути к библиотекам жестко прописаны без"/x86_64-linux-gnu"часть
Есть ли у кого-нибудь совет, как обойти эту проблему и выполнить сборку без жесткой привязки всех x86_64-linux-gnu/* к /usr/lib или переписывания make-файлов?
решение1
Это не apt
изменение путей. Пакет Ubuntu 16.04 был собран с использованием «старых» путей, пакет Debian 9 был собран с использованием путей для нескольких архитектур (см.журнал изменений для версии 8.4 пакета).
Вам вообще не нужно жестко кодировать пути, компилятор знает, где найти эти библиотеки.