質問: 以下のようにバイナリやライブラリが入る場所が沢山あります。 これらの用途の使い分けを簡単にで構いませんので教えてください。 とくに、optがよくわかっていないです。 また、これらの場所以外にバイナリやライブラリが入る可能性はありますか?(自分でprefixのディレクトリを指定した場合は別として) /usr/bin /usr/sbin /usr/lib /usr/include /usr/libexec /usr/local /usr/local/bin /usr/local/lib /usr/local/include /usr/local/opt /opt/local/bin /opt/local/lib
回答: `man hier` 読みましょう。FHSという標準についての解説があります。 と言いたいところなのですが、あまり分かりやすいとは言えませんね。 また、現状にそぐわなくなっている部分もあります。 大雑把に以下のように覚えておくとよいかと。 **~/bin/** : 実行ファイルが入る。 **~/lib/** : ライブラリが入る。 **~/libexec/** : 他のプログラムから間接的に実行され、直接実行されることはない実行ファイルが入る。ただし、`~/share/サブディレクトリ/` に入ったり、`~/lib/サブディレクトリ/` に入ったりする例も多く、出番は少なめ。 **~/include/** : ~ を使った開発を行うためのヘッダー群が入る。 **/usr/~** 大抵のディストリビューションにおいて、システムの起動や最低限の運用に必要なものを除く大部分のプログラム・ライブラリが収められる。 ただし、設定ファイルについては `/usr/etc` ではなく `/etc/` になっている場合が多し。 という解説で十分だったが、近年では、起動に必要な udev や systemd も `/usr/` 以下を使い出しているため、上記の「システムの起動や最低限の運用に必要なものを除く」という注釈も外れつつある。 `/` 直下との棲み分けはどうなるんだか。 **/usr/local/~** こちらは野良ビルドしたプログラム・ライブラリが置かれることが多い。 autotools を使って、デフォルトのままビルドすると大抵こちらに入る。 **/usr/locl/opt** **/opt/local** これらはあまり聞きません。ただ、類似例として、プロプラ系や、バイナリ配布のものは、 `/opt/ソフト名や開発元名/~` 以下に入れることが多いです。