Autotoolsを使用するほとんどのパッケージは、ユーザーレベルのユーティリティであるか、少なくとも完全に下回るのに十分なレベル/usr
、または完全に下回るのに十分な低さ/usr
です。
、に/bin
いくつかのファイルをインストールする必要があるパッケージを書いています。これは、従来これらの場所の下に配置されていたいくつかの既存のバイナリを置き換えます。/sbin
/usr/bin
/usr/sbin
また、にPAMモジュールをインストールする必要があります/lib/security
(明らか/usr/lib/security
に機能しません)。
ここで問題は次のとおりです。デフォルトのconfigureのプレフィックスは。のよう/usr/local
です。そのデフォルトを自分で制御できますconfigure.ac
。そして、少なくともGentooLinuxのデフォルトはです--prefix=/usr
。これは、私が設定したデフォルトを上書きするため、問題になりますconfigure.ac
。
他の同様のパッケージがこの問題をどのように処理しているかを簡単に調べました。これが私の発見です:
- bash-4.1はにインストールされているよう
/usr/bin
で、ディストリビューションビルドスクリプトはbashバイナリをに移動します/bin
- Linux-PAMにはハックがあり、
configure.ac
プレフィックスがの場合、そのファイルの一部に/usr
使用/sbin
されます。/lib
また、デフォルトのプレフィックスをに設定します/usr
。ユーザーが別のを渡すとどうなるかわかりません--prefix
。 shadow-utils
プレフィックスが。の場合に設定さexec_prefix
れます。次に、を参照し、を指すように宣言されているため、を参照します。""
/usr
bin_PROGRAMS
/bin
ubindir
${prefix}/bin
ubin_PROGRAMS
/usr/bin
私の質問は次のとおりです。
- 他のディストリビューションのデフォルトは
--prefix
何ですか?私はそれが常にあると合理的に仮定できます/usr
か?現時点では、Linuxについてのみ懸念しており、BSDについては懸念していません。 - 上記のソリューションのどれが最もクリーンだと思われますか?より良い解決策がありますか?
- 上記の解決策の潜在的な問題は何ですか?それらの問題に対するいくつかの解決策はありますか?
- すべてをインストールして
/bin
互換性のあるシンボリックリンクを作成しても問題ありません。問題が簡単になりますか? - 私の要件をより適切に処理する低レベルのシステムユーティリティに受け入れられる他の一般的なビルドシステムはありますか?
私がやろうとしていることの説明を気軽に求めてください。交換するものとの互換性を維持したい場合、バイナリAとBを1つずつ出荷していた場合は/sbin
、/usr/bin
それらの場所に交換を配置するか、少なくともシンボリックリンクを設定する必要があると思います。PAMモジュールのインストール場所も固定されています。
私は明らかに有用な答えに賛成するつもりです。私は「受け入れられた答え」です。私は主に「何をすべきか」というアドバイス、問題の最もクリーンな解決策、そして該当する場合はオプションと欠点、長所と短所の議論を探しています。