8622


以下のようにバイナリやライブラリが入る場所が沢山あります。  
これらの用途の使い分けを簡単にで構いませんので教えてください。  
とくに、optがよくわかっていないです。

また、これらの場所以外にバイナリやライブラリが入る可能性はありますか？  
(自分でprefixのディレクトリを指定した場合は別として)

[code]

    /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
    
[/code]


CC BY-SA 4.0
2015-03-31T14:51:41.243
8619
2020-08-02T07:57:06.943
2020-08-02T07:57:06.943
3060
9072
question
linux filesystems
Linuxのディレクトリ構造について、用途や使い分け方を知りたい


最近のLinuxは [Filesystem Hierarchy Standard
(wikipediaより)](http://ja.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)
に則っています。細かく定義されていますので、そちらを参照するのが良いでしょう。

> これらの場所以外にバイナリやライブラリが入る可能性はありますか？

ディストリのパッケージマネージャーを使ってる限りは、まず無いと考えてよいでしょう。しかし例外としての可能性までは否定できません。


CC BY-SA 3.0
2015-03-31T15:58:56.967
8620
2015-03-31T15:58:56.967
208
8619
answer


`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/ソフト名や開発元名/～` 以下に入れることが多いです。


CC BY-SA 3.0
2015-03-31T16:01:00.223
8622
2015-03-31T16:01:00.223
7831
8619
answer