概要
- これまでMacで開発等をしているが、Linuxについて調べた内容を発信していなかった
- これまで調べた内容を補足する形でもう一度自分の頭での理解を文章に落とし込んでまとめてみる
実行した例をリンクしている - 学習の補完として実例を確認し、抽象的な説明に対する具体例として理解の助けになると思う
- 学習しつつまとめているので不足点や解釈違い等ありましたらマサカリお願いします!!
1. Linuxとは
- 世界で最も普及している、オープンソースのオペレーティングシステムのこと
- UNIX系OSの一種
- プログラムが公開されており誰でも自由に入手や使用、改変、再配布することが可能
- GPLというライセンスに基づいて無償配布されている
- サーバーOSとしての利用が多い
※Linuxカーネルについて
LinuxOSのカーネル1であるLinuxカーネルもLinuxと呼称される場合がある
1.1. なぜLinuxがサーバーOSとしての利用が多いのか
ここで、上記のLinuxの特徴としての「サーバーOSとしての利用が多い」ことについて疑問に感じた(何となくはわかるが言語化できない)
以下が主な理由として挙げられている(他もあると思いますが)
- 料金面
サーバーを構築するときに設定するOSが有料か無料かというところで選ばれる
当たり前といえば当たり前のような理由
- セキュリティ
意外なようではあるが、セキュリティに関して世界中の人々がメンテできるOSSであるLinuxは
セキュリティに対するバグフィックスも常に行われるので、安全に利用することができる
- シェルスクリプト
定型的な作業をスクリプトで実行することが可能(他OSでも同じことはできると思うが)
- ホットなコミュニティの恩恵
OSSであるがゆえに常に様々な情報共有がなされ、それを参照することができるので設定等に困ったときやわからないことがあるときに解決しやすい
1.2. 補足なぜWebエンジニアは開発用の端末をMacにするのか
私の意見としては以下理由によりMacを使う方がメリットがあると思っている
- macOSはPOSIX2に準拠したUNIX
- LinuxもPOSIXにおおむね準拠している(IEEEから公式認証を受けてはいない)3
- POSIXではのOS間ではコマンドやプロセス環境、ファイル、ディレクトリなどが規格として定められている
- POSIX規格準拠のOS間でのコマンドなどは共通しているため、ファイル操作他理解が統一できる
最近ではWindowsにもWSLという機能のおかげでLinuxライクに開発できるみたいだが、少なくとも自分のころのWSLは使いにくく挫折した
参照
1.3. Linuxディストリビューション
1.3.1. Linuxディストリビューションについて
- LinuxディストリビューションはLinuxカーネルとその他ソフトウェア群を1つにまとめ、利用者が容易にインストール・利用できるようにしたもの
Linuxカーネル(共通) + それ以外のディストリビューション別パッケージ のようなイメージ
- ディストリビューションの選択基準は利用目的やパッケージシステム、コンパイラ等様々ある
- また、Linuxディストリビューションにも商用(企業が開発し、商用サポート等も受けれられる)とコミュニティ主導のものがある
1.3.2. 主流Linuxディストリビューション派閥
Linuxディストリビューションの中でも流派が存在し、そこから枝分かれするようにしてディストリビューションが存在する
そんなLinuxディストリビューションの源流の代表的な3つは以下
1.3.2.1. RedHat系
- RedHat社が開発しているディストリビューションであるRHEL(RedHat Enterprise Linux)と機能的に互換性のあるLinuxディストリビューションの総称
- 上記のディストリビューションは有償だが、派生ディストリビューションは無償のものも多い
- 代表的なRedHat系ディストリビューションは
CentOS
とFedora
CentOSによるサーバー構築については以下を参考
CentOSサーバー構築マニュアル.com
1.3.2.2. Debian系
- コミュニティベースのディストリビューション
- パッケージマネージャはAPT
- 代表的なディストリビューションは
Ubuntu
やLinux mint
1.3.2.3. Slackware系
- 数あるLinuxディストリビューションの中でも特に歴史の長いものの一つ
- パッケージ管理にSlackpkgというツールが使用できる(openSUSEというディストリビューション以外)
2. Linuxの基本
2.1. Linuxの仕組み
- Linuxカーネルに対して**シェル4**と呼ばれるソフトウェアを使用してやり取りをする
- Linuxではこのシェルも複数選択することができるようになっている(zsh,bash等)
2.2. ユーザー管理について
2.2.1. Linuxの利用
- Linuxは1つのコンピュータを複数のユーザーで使用できるように設計されている
- Linuxを利用するには、対象のLinuxに対してログインを行う必要がある
- ユーザー名とパスワードを入力することでログインができる(設定に関しては別途参照)
※「1つのコンピュータを複数のユーザーで使用できるように設計されている」とは
- 昔は今のように1人に1台PCが割り当てられるのが当たり前ではなかった
- 複数人に一台のコンピュータを利用するために、このような設計になっている
- 参照
2.2.2. Linuxにおけるユーザーとは
- 特定のLinuxにログインできる利用者のこと
- 分類として一般ユーザーとrootユーザーがある
2.2.3. 一般ユーザーとrootユーザーの違い
- rootはシステム管理などのためにほとんどすべての操作権限を有している
- 基本的にシステム管理の作業などにしてもrootユーザーでの操作はセキュリティ上推奨されない
- rootユーザーの情報を盗み取られたら、該当のLinuxにおける操作権限を奪われたといっても過言ではないため
2.2.4. sudoについて
- システム管理的な作業を行うときも、一時的に権限を付与するsudo(Superviser Do)というコマンドを使用して実行する
- sudoコマンドは、限られたユーザーしか利用することができない
※限られたユーザーとは
/etc/sudoers5ファイルに設定されているユーザーのこと
2.2.5. ユーザーとグループ
-
上記のsudoコマンド他、Linuxはディレクトリやファイルごとにパーミッションという権限設定ができる
-
この権限について、個人単位、またはグループ単位に設定ができる
-
ユーザーをグループで管理することで、管理を効率的に行うことができる
-
ログイン中のユーザー情報については
~/etc/passwd
ファイルに格納されている -
グループ情報については
~/etc/group
ファイルに格納されている
2.2.6. How To
- ユーザーを追加する
- ユーザーをグループに追加する
- ユーザーをsudoersに追加する
- ユーザー情報を変更する
- ユーザーのグループ情報を変更する
詳細はこちら
2.3. ディレクトリ構成
- Linuxディストリビューションの多くはFHS(Filesystem Hierarchy Standard)6という規格に準拠している
/
├ /bin
├ /boot
├ /dev
├ /etc
├ /home
├ /lib
├ /mnt
├ /media
├ /opt
├ /proc
├ /root
├ /sbin
├ /tmp
├ /srv
├ /usr
| ├ /usr/bin/
| ├ /usr/include/
| ├ /usr/lib/
| ├ /usr/sbin/
| ├ /usr/share/
| ├ /usr/src/
| └ /usr/local/
└ /var
├ /var/lock/
├ /var/log/
├ /var/mail/
├ /var/run/
├ /var/spool/
├ /var/spool/mail/
└ /var/tmp/
2.3.0. /
ルートディレクトリ
2.3.1. /bin
システム管理上の基本コマンドが格納されている(cp,chmod等)
FHSによって定められたシングルユーザを含めたどのユーザでも使えるコマンドだけが入る
ここに自分で任意にコマンドを追加することはない
参考:Linuxの/bin、/usr/bin、$HOME/binのそれぞれの役割
2.3.2. /boot
ブートに必要なファイル
ブートログやカーネルイメージ(Linuxカーネルを格納して圧縮したファイル)が保存されている
2.3.3. /dev
デバイスファイルが配置されている
ハードウェアにアクセスする実際のドライバ (Linux カーネルの一部) へのインターフェースとなる
参考:Linux のデバイス
※/dev/nullについて
UNIXやUnix系オペレーティングシステム (OS) におけるスペシャルファイルの1つ
書き込まれたデータを全て捨て(writeシステムコールは成功する)、読み出してもどんなプロセスに対してもデータを返さない(EOFを返す)
- 使用例
- 標準出力/標準エラー出力を抑止する目的で使うことがある
$ echo "Hello" > /dev/null
- ファイルの中身を強制的に空にしたい場合にも使うことがある
$ cat /dev/null > file1.txt
2.3.4. /etc
設定ファイルを置くディレクトリ
システム、アプリケーション等様々な設定ファイルがあるので数が膨大になる
/etc/hosts
7や/etc/services
8がサブディレクトリにある
2.3.5. /home
一般ユーザーのホームディレクトリ
ユーザーを追加すると、このディレクトリ直下にユーザー名のディレクトリが追加される
2.3.6. /lib
標準的なライブラリを設置するディレクトリ
/usr/lib
ファイルもあるがこれも切り分け方は上記の/bin
と同じ
参考:Linux - Library
2.3.7. /mnt
ファイルシステムの一時的なマウント9ポイント用ディレクトリ
2.3.8. /media
リムーバブルメディア10のマウントポイント(floppy、CD、DVDなど)
2.3.9. /opt
パッケージ管理ツール以外でインストールしたディレクトリ構造になっているアプリケーションの格納先に適している
基本的に/usr/local
の構成に従わないパッケージの配置に使用する
- 各サイト等により説明がまちまち(パッケージ管理ツール以外のインストール先とかパッケージ管理ツールのインストール先とか)
- Wikipedia/FHSにはそのような規定はない
2.3.10. /proc
プロセスのIDの付いたディレクトリが配置されている
プロセス独自の情報を格納することからプロセスディレクトリと呼ばれる
普通のファイルシステムと違い、ハードディスクやSSDなどのストレージ上ではなく、メモリの中に作られるファイルシステム
参考:/procディレクトリのファイル
2.3.11. /root
rootユーザーのホームディレクトリ
あまり情報が転がっていないので編集したりする場所ではなさそう
2.3.12. /sbin
システム管理者用のコマンドが配置されている
新規でコマンドを追加することはない
当初は起動に必要なため作成されたディレクトリであったが、現在では上記のような用途になっている
参考:/sbin
2.3.13. /tmp
ファイルなどを一時的に保管するディレクトリ
システムの再起動でディレクトリ内のファイルはすべて削除される
基本的にはプログラムのためのディレクトリで、ユーザが利用するディレクトリとは考えられていない
※/tmp
と/var/tmp
の違い
一時ファイルを補完するディレクトリは/tmp
以外に/var/tmp
が存在する
/tmp
は再起動で削除され、/var/tmp
は再起動でも削除されない
それ以外でも基本的に/var/tmp
のほうが保管期間が長いらしい
参考:/tmpと/var/tmpの仁義無き戦い
2.3.14. /srv
システムに提供されたサイト固有のデータ
2.3.15. /usr
各ユーザーが共通して利用するプログラムやライブラリなどが置かれるディレクトリ
各ユーザー単位のディレクトリではない点に注意する
尚、/usr
ディレクトリはサブディレクトリも重要な点が多い
2.3.15.1. /usr/bin
一般ユーザーが共通で使用するコマンドが格納される場所
ユーザー単位でインストールするコマンドはここには格納されない(/usr/local/bin
等に格納される)
2.3.15.2. /usr/include
C言語用ヘッダーファイルの保存場所
参考:C言語におけるinclude文とgcc -Iオプションの関係
2.3.15.3. /usr/lib
/lib
とほとんど同じ立ち位置
2.3.15.4. /usr/sbin
管理者用コマンドが配置されている
/sbin
はroot以外は通常はパスが通っていないのでデフォルトでは使用できない
2.3.15.5. /usr/share
アーキテクチャに依存しないファイルが置かれる
具体的にはマニュアル(man)やロケール設定ファイル(locale)等が置かれる
参考:「/usr/share」ディレクトリ
2.3.15.6. /usr/src
プログラムのソースコードが置かれる
インターネットなどから入手したソフトウェアをソースコードからコンパイルする場合、このディレクトリに配置することが慣例になっている
2.3.15.7. /usr/local
システム管理者が自分でアプリケーションをインストールする場所として利用するディレクトリ
サブディレクトリはbin、games、include、lib、man、sbin、share、srcが必須となっている
各サブディレクトリの用途は、/usrや/にある同名のディレクトリに準ずる
参考:/usr/local/の使い方まとめ
2.3.16. /var
常に変化するファイルを格納するディレクトリ
ログや一時ファイル等の格納など、各種用途に使われる
尚、/var
ディレクトリはサブディレクトリも重要な点が多い
2.3.16.1 /var/lock
排他制御を行う場合に利用する
ファイル書き込みの際にこのディレクトリにファイルを新規で作成し、他のプロセスで同じファイルに書き込み処理をするときはこのディレクトリに同様のファイルが存在しないか確認する
イジることはほとんどないが、システムの異常終了で書き込みファイルがディレクトリに残ったままになったりするとエラーになったりすることが考えられる
参考:/var/lock
2.3.16.2. /var/log
システム、メール、インターネットのアクセスログなど、あらゆるログが保存される
ログ調査をする際に確認するディレクトリになる
参考:Linux - /var/log/messages
参考2:必読!ログファイルとディレクトリ
...ログに関しては別途調べてまとめる必要がありそう
2.3.16.3. /var/mail
メール関連の動的ファイルを管理する
通常/var/spool/mail
へのシンボルリンク
/var/spool/mail
にはデフォルトではシステムからのメールが届く
mail
コマンドを管理者権限で実行することでメールを閲覧することができる
参考:var/spool/mail
2.3.16.4. /var/run
システムを起動した後の情報が格納されるディレクトリ
主に実行中のプロセスに関する情報が格納されたpidファイルが存在する
参考:「/var/run」ディレクトリ
※pidファイルについて
該当するプロセスのプロセスIDなどの情報が記述されている
プロセスIDが記述されているので、このファイルはプロセスの制御(再起動や停止など)、プロセス同士の連携などに利用される
対応するプロセスが起動中にはPIDファイルが存在し、終了後には削除される
プロセスが起動する際に対応するPIDファイルが存在するとプロセスが起動中とみなされてエラーになってしまうので、そういう時には対応するPIDファイルを削除する必要がある
参考:pidファイルに関して
2.3.16.5. /var/spool
スプールファイル(実行ファイル・データの一時的な保存)を保存する
処理待ちが発生する際に、直接データを送るのではなく、スプールにデータを仮置きし、そこからデータを順次送ることでユーザーはほかの作業を行うことができる
参考:「/var/spool」ディレクトリ
2.3.16.6. /var/spool/mail
互換のために残された、かつてのユーザーのメールボックス
2.3.16.7. /var/tmp/
システム関連の一時ファイルを保存する
再起動後もデータは保持される
cron11によって削除の期間が設定されている
2.3.17. How To
How To の範囲が膨大すぎるので割愛する
各自調べながらその都度2.3.x.y
に対応させていく
2.4. パーミッション
2.4.1 パーミッションとは
ファイルやディレクトリに対して許可属性を設定することができる
この許可属性のことをパーミッションという
許可属性には
- 読み込み(read)
- 書き込み(write)
- 実行(execute)
があり、
- 所有者(ファイル作成者)
- グループ
- その他のユーザー
という単位でコントロールすることができる
2.4.2. なぜパーミッションを設定するのか
セキュリティの観点からパーミッションを適切に設定することは非常に重要である
システム管理者はユーザーに対して必要最小限の権限のみを持たせることで、不必要な変更をできないようにし、また外部からのアクセスも防止することができる
2.4.3. パーミッションの見方
適当なファイルのパーミッションを確認する
ls -l
で確認できる
※ -lオプション
lsコマンドで指定のディレクトリのファイルを確認する際にその詳細も確認できるオプション
参考:lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】
$ touch sample.txt
$ ls -l sample.txt
> -rw-r--r-- 1 Islanders-Treasure users 0 6月 29 15:00 sample.txt
2.4.3.1. それぞれの記号の意味
ls -l
で出力される内容の各行の列単位は以下のフォーマットで記載される
- 先頭桁
ファイルの種類を表す
- 2-4桁
ファイルの所有者のパーミッションを表す
- 5-7桁
グループに対するパーミッションを表す
- 8-10
その他に対するパーミッションを表す
- Islanders-Treasure
所有者名を表す
- users
グループ名を表す
- 0
ファイルサイズ(byte)
- 6月 29 15:00
タイムススタンプ
更新日時が表記される
- sample.txt
ファイル名
以下にファイルの種類やパーミッションの種類を示す
2.4.3.1.1. ファイルの種類
- d
ディレクトリを表す記号
- l
リンクファイルを表す記号
- 「-」
指定なしということを表す記号
2.4.3.1.2. 実行権限
- r
読み込み許可を表す記号
ファイルが開けるかどうかの権限
- w
書き込み許可を表す記号
r
と組み合わせて使用する
所有者には書き込みと読み込みの両方の権限が割り当てられる事が多い
- x
ファイルの実行権限を表す記号
ディレクトリは実行権限がないと開くことができない
2.4.4. パーミッションの変更方法
- 具体例
下記の2つは同じパーミッションの設定を行っている
$ chmod 755 sample.txt #数値での指定
$ chmod a+wx,u+r sample.txt #記号での指定
2.4.4.1. 数値で指定する
1桁3ビットの3桁で指定する
それぞれの桁のパーミッションは以下
- 1桁 所有者
- 2桁 グループ
- 3桁 その他のユーザー
3ビットを2進数記法で表現する
1ビット目 実行権限
2ビット目 書込権限
3ビット目 読込権限
具体的には以下
数値 | 権限 |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
よって
$ chmod 755 sample.txt
は、
sample.txtというファイルに対して
所有者に対してすべての権限を付与
グループとそれ以外に対して実行権限と読込権限を付与する
ことになる
2.4.4.2. 記号で指定する
- 記述フォーマット
[権限の範囲][権限の追加、削除の指定][付与する権限]
- 権限の範囲の記号
記号 | 意味 |
---|---|
u | 所有者の権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | すべての権限 |
- 権限の追加、削除の指定の記号
記号 | 意味 |
---|---|
+ | 後に記述した権限を付加 |
- | 後に記述した権限を削除 |
= | 後に記述した権限にする |
- 付与する権限の記号
記号 | 意味 |
---|---|
r | 読込権限 |
w | 書込権限 |
x | 実行権限 |
s | セットID |
t | スティッキービット |
※セットIDとは
他人が実行する際に、設定したIDで実行することができる機能
SGID(Set Group ID)やSUID(Set User ID)などがある
参考:【 chmod 】 ファイルやディレクトリのアクセス権を変更する
- SGID
他人が実行する際、設定してあるグループの権限で実行する
- SUID
他人が実行する際、設定してある所有者の権限で実行する
- 確認方法
パーミッションの実行権限のフラグに「s」が立っていれば他人はその権限で実行できる
具体例
$ ls -l
> -rwxrwsr-x 1 foo foogroup 154 Nov 08 12:30 sample
上記では他人はfoogroupというグループの権限で実行できることになる
2.4.x How To
- パーミッションを確認する
任意のフォルダで適当にファイルを作成してls -l
で確認する
$ touch sample.txt
$ ls -l
> -rw-r--r-- 1 username staff 0 6 30 21:31 sample.txt
- パーミッションを変更する
上記で作成したファイルの実行権限を変更する
$ chmod 755 sample.txt
$ ls -l
> -rwxr-xr-x 1 username staff 0 6 30 21:31 sample.txt
- セットユーザーIDを付加する
セットグループIDを付加する
2.5. プロセスとジョブ
2.5.1. プロセスとは 参考
Linux上で動作中のプログラムのこと
プログラムは、実行されるときに任意のID(PID)を設定し、プロセス固有のメモリ空間を確保して読み込まれ、CPUによって上から順に実行される
例えば、ls
コマンドをシェルで実行すると、ls
のプロセスを生成し、そのプロセスがコマンドを実行することになる
プロセスを実際に覗いてみる
ps
コマンドを実行すると端末で稼働しているプロセスが表示される
※別端末で動作するプロセスの詳細も確認するには
a
オプションとu
オプションを付加することで確認する
a
オプションで別端末のプロセス情報を表示し、u
オプションでユーザー名などの情報も併せて表示する
[wip] ps -auコマンドの実行結果を載せる
以下でps -au
コマンドの列で解説する必要のある項目を解説する
2.5.1.1. TTY
端末番号を表示する列
プロセスが動作している端末のこと
telnetやsshによるログインは仮想端末(presudo terminal)として「pts/番号」で表示される
2.5.1.2. PID
プロセス単位で振られる固有の番号のこと
OSやほかのプロセスから指定して何らかの命令を与えるときの識別子として利用される
参考:プロセスID(PID)
2.5.2. 親プロセスと子プロセス
プロセスには親プロセスと子プロセスというのがある
プロセスは、処理の過程で別のプロセスを作成することがある
プロセスに作成されたプロセス
を子プロセスと呼び、子プロセスを生成したプロセス
を親プロセスと呼ぶ
子プロセスは生成された時点で一意なPIDと親プロセスを指し示すPPID(Parent Process ID)に親プロセスのPIDが設定される
CentOSの場合、最初に動くプロセスはsystemd
というPID=1のシステム管理用デーモンプロセスである
このプロセスからほかのプロセスは生成されることになる
よって、一見親プロセスのないように見えるプロセスはPPID=1が親プロセスとなる
※親プロセスが終了すると
子プロセスはPPID=1を親プロセスとして生き残ることになる
親プロセスが終了したら単純に子プロセスも終了するわけではないことに注意する
- 親プロセスと子プロセスの関係を確認する
$ ps af #端末上のプロセスを階層表示する f(--forest):ツリー上で確認する
[wip]実行結果を表示する
- プロセスと一緒にPPIDも確認する
$ ps aux #
[wip]実行結果を表示する
2.5.3. プロセス管理
プロセスはその内部実装まで調べたらすごく深い話になる
とりあえずリンクだけ用意して後で調べるようにする。。。
参考:プロセス管理とスケジューリング
2.6. リダイレクトとパイプライン
2.6.1. リダイレクト
元の意味はプログラムが処理するデータの向け先を変更するという意味で使用される
Linuxでは標準出力12や標準入力13の向き先を変更するという意味で使用する
2.6.1.1. リダイレクトの使用シーン
標準出力を任意のファイルに出力するときなどに使用する
具体的にはPATH
を通すときにも使用するので、頻繁に使用することになる
2.6.1.2. 標準出力のリダイレクト
>
で標準出力をファイルにつなぐことになる
>
ではファイル内を上書きするので、他に内容があっても消されてしまう点に注意
$ echo Hello World > sample.txt
$ cat sample.txt
> Hello World
また、>>
で追記をすることができる
$ cat sample.txt
> Hello World
$ echo Bye World >> sample.txt
4 cat sample.txt
> Hello World
> Bye World
2.6.1.3. 標準エラー出力のリダイレクト
標準エラー出力をリダイレクトするにはファイルディスクリプタを指定して向き先を指定する必要がある
$ cat sample1.txt > sample.txt
> #エラー
$ cat sample1.txt 2> sample.txt #fd=2(標準エラー出力)を指定する
2.6.1.4 ファイルディスクリプタ(fd)
すべてのプロセスに備わっているファイル書き込み用の通信チャネルのこと
以下のfd=0~2はプロセス生成時に作成され、汎用ファイルディスクリプタは必要に応じてプロセスが作成する
- 標準入力(fd=0)
- 標準出力(fd=1)
- 標準エラー出力(fd=2)
- 汎用(fd=3~)
参考:標準入力/出力とパイプ,リダイレクト,file descriptorの仕組み ~squidで枯渇時の対処例~
2.6.1.5. 標準入力のリダイレクト
イメージしづらいが、標準入力に対してファイルを当てるイメージ
以下は標準入力の内容をgrepコマンドで、リダイレクトしたファイルの中を検索するという内容
$ grep 'He' < sample.txt
> Hello
2.6.2. パイプライン
あるプロセスの出力を別のプロセスの標準入力とつなげる仕組みをパイプという
例えば、あるファイルの中身を出力し、それをgrepコマンドで検索するために標準入力として受ける場合は以下
コマンドの出力を入力として受けとって処理することはたくさんあるので理解すること
$ cat sample.txt | grep Hello
> Hello
2.7. パッケージ管理
プログラム本体、ライブラリや設定ファイル等を1まとめにしたものをパッケージという
Linuxでは、パッケージを個別にインストールすることもできる
だが、パッケージはそれ単体で動くということはまれで、たいていはほかのパッケージに依存している
これをマンパワーで解決することはきついので、パッケージ管理システムというものを通常は使用する
機能については他のシステムのパッケージマネージャーと同類になる
ディストリビューションによってデフォルトのパッケージマネージャーが異なる
以降の説明ではCentOS
のパッケージマネージャー前提で説明を行う
2.7.1. RPM
RedHat系ディストリビューションでデフォルトのパッケージマネージャー
2.7.2. yum
RPMの上位互換のパッケージマネージャー
RPMとやることは同じだが使い勝手が良いためこちらが好まれることも多い
2.8. シェルスクリプト
シェルスクリプトまとめ
ボリュームが多いので、別でまとめてもいいかも
2.9. ログ管理
まとめ
- よくわからんけど2章の中にセクションを追加して2章のボリュームがめちゃ多くなってしまった