ソフトを自分でビルドしたら、置き場所に迷った
/usr と /opt と /usr/local、何が違うん?
【疑問】自分で入れたソフトはどこに置くん?/etc・/var・/usr・/opt・/tmp の役割(FHS)【LPICレベル1】
前提のおさらい。cp・mv・mkdir などでファイルとディレクトリを扱い、ls -ld でディレクトリそのものの情報を見る
>>1
置き場所の決まりは FHS(Filesystem Hierarchy Standard)。いまの版は 3.0 で、man の hier(7) にも同じ考え方で一覧がある
>>3
よく問われるもの(hier(7) の説明から)/etc そのマシンの設定ファイル/var サイズが変わるファイル(ログ、スプール)。/var/log ログ、/var/spool 順番待ちのファイル、/var/lib プログラムの状態、/var/cache キャッシュ/tmp 一時ファイル。予告なく消されることがある(定期のジョブや起動時など)/var/tmp 期間を決めずに置く一時ファイル
>>3
続き/home 一般ユーザーのホーム、/root root のホーム/boot ブートローダとカーネルなど起動に必要なもの/dev デバイスファイル、/proc と /sys はカーネルの情報を見せる仮想のファイルシステム/run 起動してからのシステムの情報(以前の /var/run)/srv このシステムが提供するサービスのデータ/media USB メモリなどリムーバブルメディアのマウントポイント、/mnt 一時的にマウントする場所
>>1
本題の置き場所/usr パッケージで入るプログラム(/usr/bin、/usr/lib、アーキテクチャに依らない /usr/share)/usr/local そのマシンで自分で入れたもの(/usr/local/bin など)/opt 追加のソフトウェアをパッケージごとにまとめて置く
>>6
じゃあ自分でビルドしたら /usr/local、ベンダーの一式なら /opt か
>>7
そう。/usr はパッケージ管理の持ち物やから、手で置くと更新で上書きされたり衝突したりする
>>5
/bin と /usr/bin は?
>>9
hier(7) では /bin は「シングルユーザーモードや起動・修復に必要なプログラム」、/sbin はそのうち主に管理者が使うもの。ただ最近のディストリビューションは /bin を /usr/bin へのシンボリックリンクにしてまとめてる(usr の統合)
この Debian でも ls -ld /bin は /bin -> usr/bin、/sbin と /lib も同じやった
>>10
古い資料の「/bin と /usr/bin は別」をそのまま信じたらあかんのか
>>11
試験では役割の違いとして問われる。実機ではディストリビューションと版によって違う、と分けて覚える
>>4
/tmp と /var/tmp の権限は?
>>13
どっちも drwxrwxrwt。誰でも書けるけど、最後の t(スティッキービット)で他人のファイルは消せない
>>6
設定は /etc、変わるものは /var、自分で入れたら /usr/local か /opt。これで迷わんわ
管理人のひとこと
- FHS(いまは 3.0)が置き場所の決まり。hier(7) にも一覧がある。/etc 設定、/var 変わるファイル(/var/log・/var/spool・/var/lib・/var/cache)、/tmp 予告なく消されうる一時ファイル、/var/tmp 期間を決めずに置く一時ファイル。
- /home と /root はホーム、/boot は起動に必要なもの、/dev はデバイス、/proc と /sys はカーネルの情報、/run は起動後の情報、/srv はサービスのデータ、/media はリムーバブルメディア、/mnt は一時的なマウント。
- /usr はパッケージのプログラム、/usr/local はそのマシンで自分で入れたもの、/opt は追加のソフトウェアをまとめて置く場所。
- /bin・/sbin は起動や修復に必要なコマンドの場所だが、usr を統合したディストリビューション(この Debian など)では /usr/bin などへのシンボリックリンク。