最近、Linux サーバ (RHEL) を構築する機会があったのですが、今までほとんど触る機会がなく知らないことばかりでしたので、今更ながら Linux について調べたことをまとめてみました。
認識誤り等あれば、ぜひコメントや編集リクエストにてご指摘願います。
2017.07.22 Slackware について修正しました。
Linux とは
OS の一種で、UNIX を参考にしてリーナス・トーバルズより開発されました。
OSS であることより、無料でインストール出来るのが特徴です。
なお、厳密に言うと Linux OS とは一般的には OS の中核であるカーネル のことを指しています。
Windows では OS 機能の一部として配布されている GUI や__Webブラウザ__などの機能は、Linux では__ディストリビューション__に含めて配布されています。
ディストリビューション
Linux の配布パッケージセットであるディストリビューションには主に以下が含まれています。
- Linux カーネル (OS)
- シェル
- デーモン
- GUI
- クライアントソフトウェア
- サーバソフトウェア
ディストリビューションに含まれる個々のソフトウェアは__パッケージ化__されており、__パッケージ管理システム__により管理されています。
パッケージ管理システムの詳細については後述します。
ディストリビューションの種類
OSS 故に色々とカスタマイズされた数多くのディストリビューションが存在します。
大きく分けると Debian、Red Hat Linux、Slackware の 3 つに別れ、その他のディストリビューションの多くはこれら 3 種の派生系がほとんどとのことです。
主要 3 種
-
Debian
- 自由な改変と再配布を目的とする GNU GPL のソフトウェアで構成。
- 商用向けの__有償サポートはなし__。
- 基本的には、GPL 以外のライセンスのソフトウェアはインストールできない。
-
RHEL (Red Hat Enterprise Linux)
- __商用向けの有償サポート__があり、大規模システムのサーバとしての利用が多い。
- 日本市場での商用 Linux シェアは約 85 % を占める。
-
Slackware
- Linux 史上最古。__シンプルで堅実な作り__になっており、__高い安定性__がある。
- パッケージ管理システムの機能(後述)である__パッケージ間の依存情報の管理__が__ユーザマニュアル__。
- ただし全パッケージをインストールするのが基本であり、公式パッケージの依存関係は解決される。
Linux の仕組みを深く理解するには、シンプルかつ自分で依存性の解決をしなければならない Slackware は良い教材になりそうですね。
派生系
Debian 系
-
Ubuntu
- Debian の派生だが、__GPL 以外__のライセンスのソフトウェアでもインストール可能。
- Canonical 社による__有償サポートもある__(電話、メールのみ)。
- GUI が充実。
Red Hat 系
-
CentOS
- RHEL から商用向けの要素を取り除いている。
- __RHEL との完全互換__を目指し、バイナリが異なるなどを除き、ほとんどの機能が RHEL と同じ。
- 安定性重視。
-
Fedora
- CentOS と同じく商用向けの要素を取り除いている。
- RHEL の__バージョンアップ時の検証用__。
- 最新技術の取り込みが早い。(Fedora → RHEL → CentOS の順)
-
Scientific Linux
- 同じく商用向けの要素を取り除いている。
- 欧州原子核共同研究所などが開発に関わっており__研究機関や大学施設で利用される__ことが多い。
- 上記故か、__独自開発__されたパッケージが充実。
パッケージ管理システム
主な機能
ディストリビューションに含まれる個々の__ソフトウェアの実行ファイル・設定ファイルやライブラリ__を__リポジトリ管理__します。
主な機能としては、以下の 4 つが挙げられます。
-
パッケージリポジトリの読込・検索
-
パッケージのインストール・更新・削除
-
パッケージ間の依存情報の管理
-
競合機能の優先使用設定管理
パッケージ管理システム比較( Wikipedia より)
ディストリビューション | ベース | 有償サポート | パッケージ管理システム | パッケージ形式 |
---|---|---|---|---|
Debian | - | 無 | APT | deb |
RHEL | - | 有 | RPM, Yum | RPM |
Slackware | - | 無 | pkgtool、slackpkg、sbopkg等 | txz |
Ubuntu | Debian | 有 | APT | deb |
CentOS | RHEL | 無 | RPM, Yum | RPM |
Fedora | RHEL | 無 | DNF, Yum | RPM |
Scientific Linux | RHEL | 無 | APT, Yum | RPM |
Linux では、ディストリビューションに含まれる各ソフトウェアを使用するためには__個別にリポジトリからインストール__する必要があります。
インストール方法は各ディストリビューションが採用しているパッケージ管理システムごとに異なります。(どれも基本はコマンド 1 行)
各パッケージ管理システムの特徴
RHEL しか触ったことがないためインストールの手軽さなどは比較できませんが、一般的に言われる各システムの特徴をまとめます。
Red Hat 系
-
RPM
- __ローカル__及び HTTP や FTP を通じた__ネットワーク__からのパッケージ管理に対応。
- 依存性の情報は保持しているものの、依存性の解決は行わない。
- __パッケージ個々のカスタマイズ時__に RPM コマンドを使用。
-
Yum
- RPM を統合管理するマネージャのことで、依存性の解決を行う。
- 基本的には Yum コマンドを利用してインストールを行う。
- RHEL 7.x / CentOS 7.x のデフォルトである __Python 2 のみ__に対応。
-
DNF(Dandified Yum)
- Yum の後継。
- Yum が Python 2 にしか対応していないのに対し、Python 3 にも対応。
- 既に Python 3 がデフォルトとなっている Fedora では DNF が使用される。
Debian 系
-
APT
- RPM + Yum の機能をもち、依存性の解決も行う。
Slackware 系
-
pkgtool
- Slackware の__標準__で、__ローカル__リポジトリのみに対応。
- バージョン管理や__依存性の解決は対応していない__。
-
slackpkg
- バージョン 12.2 より公式パッケージとして採用。
標準ではインストールされていないため、公式パッケージからインストールする必要あり。 - __Slackware の標準のパッケージ__のみオンラインに対応。
- バージョン管理は行うが__依存性の解決には対応していない__。
- バージョン 12.2 より公式パッケージとして採用。
-
sbopkg
- slackpkg と同じく標準ではないため個別にインストールする必要がある。
- __Slackware のサードパーティ__である SlackBuilds.org のオンラインパッケージに対応。
- ご多分に漏れず、依存性の解決には対応していない。
Red Hat 系 である Scientific Linux では Debian 系と Red Hat 系 双方のパッケージ管理システムを採用しているようですね。
研究機関向けの独自開発が進んでいる所以でしょうか。。。