CentOS 8入門

目次

CentOS 8 とは

CentOSの方針転換

これまで、Fedora が先行的なパッケージを取り込み、安定したものを RHEL として有償サポート付きでリリースし、それを無償化したものが CentOS という位置づけでしたが、2021年12月31日に CentOS 8 は開発・サポートを中止、代わりに FedraRHEL の中間的な位置づけとなる CentOS Stream として生まれ変わることが発表されました。これまで、開発を CentOS で行い、本番環境を RHEL でリリースするといった、RHEL の無償版としての利用が難しくなりました。

CentOSの後継

RHELの無償版という位置づけとして代わりに登場しているものに下記があります。比較記事もいくつか見てみたのですがいずれも RHEL クローンなのでほとんど優越は無く、有償サポートを検討するなら国産の MIRACLE LINUX が有利といったところでしょうか。ただ、MIRACLE LINUX は公式の Docker(Podman) イメージが公開されていない(?)のが難点です。

AlmaLinux

Rocky Linux

MIRACLE LINUX

CentOS 7とCentOS 8の違い

CentOS 7 と CentOS 8 では下記などのバージョンが変わっています。CentOS 7 で * がついているものは、標準パッケージではなく EPEL による提供でした。

Linux Kernel	3.10	→	4.18
Python		2.7	→	3.6
PHP		5.4	→	7.2
Perl		5.16	→	5.26
Ruby		2.0	→	2.5
Node.js		6.17 *	→	10.21+
MariaDB		5.5	→	10.3
PostgreSQL	9.2	→	10.14+
Redis		3.2 *	→	5.0
git		1.8	→	2.27
gcc		4.8	→	8.3+
httpd		2.4	→	2.4
Nginx		1.16 *	→	1.14

yum から dnf への変更

パッケージ管理システムが yum から dnf に変更となりました。DaNdiFied yum (ダンディなYum) という意味だそうです。yum は Python 2 ベースでしたが、Python 3 ベースで書き直されたものが dnf です。コマンド名は変わりましたが、オプションや利用方法はあまり変わりません。yum コマンドは dnf にシンボリックリンクされているので、yum コマンドも利用できます。

CentOS7# yum -y install httpd
CentOS8# dnf -y install httpd

CentOS 8のリポジトリ

CentOS 8 はすでに EOL を迎えているため、yum や dnf コマンドでパッケージをインストールしようとすると下記の様なエラーとなることがあります。

# dnf install -y xxx
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

下記の様にリポジトリ定義ファイルの一部を変更することで、とりあえず利用できるようになります。

# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*

Python が 2 から 3 に

CentOS 7 の Python は 2.7 でしたが、CentOS 8 では、4つのバージョンの Python が存在します。platform-python は必須パッケージとしてインストールされています。必要に応じて、python2, python36, python38 を追加インストールします。

パッケージパス説明
platform-python/usr/libexec/platform-pythonシステムが使用するPython (3.6)
python2/usr/bin/python2
/usr/bin/python2.7
Python 2.7
python36/usr/bin/python3
/usr/bin/python3.6
Python 3.6 (標準)
python38/usr/bin/python3.8Python 3.8

標準では /usr/bin/python は存在しません。alternatives コマンドで、/usr/bin/python を python2 または python3(3.6) または python3.8 のシンボリックリンクとして作成することができます。

# alternatives --config python

There are 4 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python2
   3           /usr/bin/python3
   4           /usr/bin/python3.8

Enter to keep the current selection[+], or type selection number: 3

日本語を使用できるようにする

日本語が使用できない場合は下記のパッケージをインストールしてみてください。

# dnf -y install glibc-langpack-ja

コマンドの実行結果を日本語で表示するにはさらに下記の環境変数を設定します。

export LANG=ja_JP.UTF-8

iptables から nftables に

パケットフィルタ機能が iptables から nftables に変わりました。

# dnf -y install nftables
# systemctl start nftables
# nft list ruleset

NTPを設定する

CentOS 7 から NTP は ntpd ではなく chronyd に変わりました。

# dnf -y install chrony
# vi /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
(以下略)
# systemctl restart chronyd

Docker から podman に

iptablesnftables に変わった影響もあり、CentOS 8 での Docker CE はまだ安定していないようです。代わりに、Red Hat が CentOS 7.6 以降で Docker の後継として開発した Podman が利用できます。Docker とほぼ同等の機能を備えており、かつ、デーモンが不要(Dockerデーモンダウンで全コンテナがダウンすることが無い)、一般ユーザーでも利用できる、複数のコンテナを Pod として管理する機能が追加されているなどの利点を持ちます。詳細は Podman を参照してください。

TLS 1.0 と TLS 1.1 が廃止

TLS 1.0TLS 1.1 がデフォルトで廃止されました。どうしても TLS 1.0 や 1.1 を有効にしたい時は下記のコマンドを実行します。

# update-crypto-policies --show
DEFAULT
# sudo update-crypto-policies --set LEGACY
# update-crypto-policies --show
LEGACY

Cockpit

CentOS8 にログインすると下記の様なメッセージが表示されることがあります。

Activate the web console with: systemctl enable --now cockpit.socket

CentoS 8 からは cockpit というWeb管理画面機能が標準装備されていて、それを有効化しろとのメッセージです。使用する場合は systemctl で有効化。使用しない場合は削除しても問題ありません。

# 使用する場合
# systemctl enable --now cockpit.socket

# 使用しない場合
# systemctl stop cockpit.socket
# dnf -y remove cockpit