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」を追加するようです。
すべてのライブラリパスがハードコードされており、パスがないDebianで大規模なビルドを実行する必要があるため、これは面倒です。"/x86_64-Linux-gnu"部分
すべてのx86_64-linux-gnu/*を/usr/libにハードリンクしたり、makeファイルを書き換えることなく、この問題を解決してビルドを実行する方法についてのヒントがある人はいますか?
答え1
パスは変更されませんapt
。 Ubuntu 16.04パッケージは「レガシー」パスを使用して構築され、Debian 9パッケージは複数のアーキテクチャパスを使用して構築されます(参照)バージョン 8.4 パッケージングの変更ログ)。
パスをハードコードする必要はありません。コンパイラはこれらのライブラリを見つける場所を知っています。