apt-get install 不針對 ubuntu 或 debian 上的相同路徑

apt-get install 不針對 ubuntu 或 debian 上的相同路徑

我很困惑為什麼 apt-get install 的行為方式不同,無論是從 Ubuntu(16.04)還是從 debian(stretch-slim docker 映像)呼叫。

基本上,我執行:

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”

這很煩人,因為我必須在 debian 上執行一個巨大的構建,其中所有庫路徑都是硬編碼的,沒有“/x86_64-linux-gnu”部分

有人有關於如何解決這個問題並執行建置而不將所有 x86_64-linux-gnu/* 硬連結到 /usr/lib 或重寫 make 檔案的提示嗎?

答案1

這不會apt改變路徑。 Ubuntu 16.04 軟體包是使用「舊」路徑建構的,Debian 9 軟體包是使用多架構路徑建構的(請參閱8.4 版包裝的變更日誌)。

您根本不需要對路徑進行硬編碼,編譯器知道在哪裡可以找到這些函式庫。

相關內容