Ubuntu(16.04)에서 호출하든 debian(stretch-slim docker 이미지)에서 호출하든 apt-get install이 다르게 작동하는 이유가 혼란스럽습니다.
기본적으로 다음을 실행합니다.
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이 debian 아래에 "x86_64-linux-gnu"를 추가하는 것처럼 보입니다.
모든 라이브러리 경로가 하드코딩되어 있고 경로가 없는 데비안에서 대규모 빌드를 수행해야 하기 때문에 이는 짜증나는 일입니다."/x86_64-리눅스-gnu"부분
모든 x86_64-linux-gnu/*를 /usr/lib에 하드 링크하거나 make 파일을 다시 작성하지 않고 이 문제를 해결하고 빌드를 수행하는 방법에 대한 팁이 있는 사람이 있습니까?
답변1
경로는 변경 되지 않습니다 apt
. Ubuntu 16.04 패키지는 "레거시" 경로를 사용하여 빌드되고 Debian 9 패키지는 다중 아키텍처 경로를 사용하여 빌드됩니다(참조버전 8.4 패키징에 대한 변경 로그).
경로를 하드코딩할 필요가 전혀 없습니다. 컴파일러는 이러한 라이브러리를 찾을 위치를 알고 있습니다.