AlmaLinux OS 9.5 Review
はじめに
2024年11月18日(現地時間)にAlmaLinuxが新しい安定版リリースとなる9.5を公開しました。
公式サイト :https://almalinux.org/
RHEL9.5が12日にリリースされたことで、RHEL系列のOracleLinuxやRockyLinuxも今週中ぐらいにはアップデートされそうですね。
AlmaLinuxOS 9.5のコードネームはTeal Serval(青緑色のサーバル)です。AlmaLinuxでは色+動物(猫科)を使うので、こういった感じのコードネームがつきます。発表では、9.4と比較してパフォーマンスやセキュリティ、Webアプリケーションのサポートが向上したということです。
今回の記事は実際にインストールしてみて、使用感などレビューしていきたいと思います。
AlmaLinuxOSとは
※個人的に、CentOSからCentOS streamに変わった際に出てきたOSってイメージでした。
商用LinuxディストリビューションであるCloudLinuxOSを開発しているCloudLinuxは、現行バージョンのRHELとのバイナリ互換性を目標に、コミュニティにより維持されたCentOSの精神的後継としてAlmaLinuxを開発した。(Wikipediaより)
まとめると
- 2021年にCentOSがCentOS Streamに移行することを発表した際に誕生
- RHELとのバイナリ互換性を維持
- 企業での本番環境での使用を想定
このことから、AlmaLinuxはCentOSのような、「無料でRHELと同等の安定性を得られるサーバーOS」として、ウェブサーバーやデータベースサーバーで使用される目的で開発されていることがわかります。
9.5の変更点
リリースノートを私が読んで、重要だなと思ったところを書き出しました。
9.4から9.5へのアップデートで注目すべき点がいくつかあります。
1つ目はコンパイラのアップデートです。最新の言語機能とツールへのアクセスが出来るようになります。
- GCC Toolset 14
- LLVM Toolset 18.1.8
- Rust Toolset 1.79.0
- Go Toolset 1.22
- GCC 11.5
2つ目に、セキュリティの強化です。最新の暗号化標準への対応やより細かいセキュリティ制御が可能になります。
- OpenSSL 3.2.2へのアップグレード
- 証明書圧縮拡張(RFC 8879)のサポート
- TLS 1.3でBrainpoolカーブのサポート追加
- SELinuxポリシーの改善
- crypto-policiesのJavaアルゴリズム選択制御の拡張
最後に、新パッケージの追加です。.NET9.0やBIND、Nodejsの最新版が新しく追加されます。
- .NET 9.0
- BIND 9.18
- Node.js 22
ISOファイルのダウンロード
今回、私はミラーサイトからダウンロードしました。
標準的なLinuxディストリビューションは大体2~5GB、大きくても7GBぐらいだと思っていたのですが、ダウンロードしてみると容量が約11GBありました。最小版なら約2GBで済むのですが、エンタープライズ向けLinuxは容量がこれぐらいになるんですね…とりあえず今回は11GBの方をダウンロードして使ってみたいと思います。
インストールプロセス
AlmaLinux9.5の最小要件は以下の通りです。
- RAM: 最低1.5GB
- ディスク容量: 最低10GB – 推奨20GB
※GUI環境を使用する場合は、より多くのRAMとディスク容量が必要になります。サーバー用途の最小構成(2GB)の場合は、上記の要件より少ないスペックでも動作可能です。また、仮想環境での使用を考慮する場合は、ホストマシンのリソースに余裕を持たせることをお勧めします
USBメモリにDVDイメージをいれて、私のノートPCにインストールしてみました。インストーラー自体は使いやすく、パーティションなどの切り分けやその他オプションも充実していたように感じました。
初期セットアップ時に日本語で表示されたりと、日本語対応がしっかりしているイメージでした。
ユーザーをインストール時に作成していなかったのですが、初期セットアップ時にも再び作るように促されました。
同時にパスワードも設定、グーグルアカウントなどその他アカウント連携なども聞かれました。
セットアップが終わり、デスクトップ環境が開くとGnomeでした。RHELでも標準がGnomeだからでしょうか。
個人的にいいなと思ったのが右上の入力切替で日本語入力(Anthy)をすぐに選べるところです。
人によって、OSによって日本語入力をさせる方法が違うLinuxディストリビューションで、この設定はいいなと思いました。
Gnomeのおかげもあってか、従来のビジネス向けLinuxのイメージとは違う親しみやすい感じになっていると思います。
アップデート確認
実際に9.4から9.5の変更がされているのか確認していきます。
以下のコマンドを入力することで、実際にバージョンがアップデートされたか確認できると思います。
個人的に気になっていたのはPodmanのバージョンだったのですが、最新の5.2.2がインストールされていました。リリースノートには何も言及がなかったのですが、開発方針の違いからでしょうか・・?
# OSのバージョン確認(9.5)
$ cat /etc/almalinux-release
AlmaLinux release 9.5 (Teal Serval)
# Opensslのバージョン確認(3.2.2)
$ openssl version
OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024)
#Apacheの確認(2.4.62)
httpd -v
Server version: Apache/2.4.62 (AlmaLinux)
Server built: Au 3 2024 00:00:00
#podmanの確認(最新は5.2.2)
podman -v
podman version 5.2.2
#nodeの確認(v22)
node --version
v16.20.2
通常のインストールでは、そのOSのバージョンで固定されたパッケージしか出来ません。nodeのバージョンを22に上げるためには以下の手順が必要です。
# 利用可能なNode.jsのストリームを確認
$ dnf module list nodejs
AlmaLinux 9 - AppStream
Name Stream Profiles Summary
nodejs 18 common [d], development, minimal, s2i Javascript runtime
nodejs 20 common [d], development, minimal, s2i Javascript runtime
nodejs 22 common [d], development, minimal, s2i Javascript runtime
$ sudo dnf module reset nodejs # 既存のストリームをリセット #必要なら
$ sudo dnf module enable nodejs:22
$ sudo dnf install nodejs
#または
$ sudo dnf update nodejs
$ node --version
v22.4.1
このようにRedHat系はAppstreamsを使うことで同じパッケージの複数バージョンを並行して使用することができます。競合を避けながら必要なバージョンを使用できるのはRedHat系の強みだと思います。
RedHat系のLinuxディストリビューションですので、dnfによるパッケージ管理が容易なのも強みだと思います。
#dotnetの場合(9.0.0)
$ dnf list dotnet*
メタデータの期限切れの最終確認:02:29:55 前の 2024年11月19日 13時24分25秒 に実施しました。
インストール済みパッケージ
dotnet-host.x86_64 9.0.0-preview.7.24405.7-0.2.el9 @appstrea m
利用可能なパッケージ
dotnet-apphost-pack-6.0.x86_64 6.0.36-1.el9_5 appstream
dotnet-apphost-pack-7.0.x86_64 7.0.19-1.el9_4 appstream
dotnet-apphost-pack-8.0.x86_64 8.0.11-1.el9_5 appstream
dotnet-apphost-pack-9.0.x86_64 9.0.0-preview.7.24405.7-0.2.el9 appstream
dotnet-runtime-6.0.x86_64 6.0.36-1.el9_5 appstream
dotnet-hostfxr-7.0.x86_64 7.0.19-1.el9_4 appstream
dotnet-hostfxr-8.0.x86_64 8.0.11-1.el9_5 appstream
dotnet-hostfxr-9.0.x86_64 9.0.0-preview.7.24405.7-0.2.el9 appstream
dotnet-runtime-6.0.x86_64 6.0.36-1.el9_5 appstream
dotnet-runtime-7.0.x86_64 7.0.19-1.el9_4 appstream
dotnet-runtime-8.0.x86_64 8.0.11-1.el9_5 appstream
dotnet-runtime-9.0.x86_64 9.0.0-preview.7.24405.7-0.2.el9 appstream
最後に、SeLinuxポリシーがアップデートされているか確認します。
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
感想とまとめ
RedHat系はあまり使ったことがなかったので、エンタープライズ向けLinuxの容量にはじめは驚きましたが実際に使ってみると、その利点が良く理解できました。特にパッケージ管理の柔軟性は印象的でした。nodeやdotnetなど、複数のバージョンを簡単に切り替えられる仕組みは、開発環境として非常に使いやすいと思います。
また、GUIでの日本語対応の充実ぶりや、セキュリティ面での改善など、サーバー用途だけでなく、デスクトップ環境としても十分な完成度を感じました。
しかし、単純なSSHサーバーとして使用することが目的なら最小版(2GB)でいいんじゃないかなと思います。不要なパッケージが多いことはそれだけ攻撃対象となる箇所も増えるので、サーバーとして使うことを目的とするのであれば必要最小限のパッケージとリソースでまずは構成して、必要なものを追加していく形が適切だと思います。※あくまで個人的な感想です。
ただ、今回のAlmaLinuxOS 9.5では、コンパイラの更新やOpenSSLの強化など、現代のニーズに応える改善が数多く行われており、CentOSの後継として進化しているという風に感じました。
RedHat系のAppstreamsの利点は、特に開発環境での後方互換性の維持に威力を発揮します。
例えば、古いグラボを使用する場合、特定の古いバージョンのGCCが必要になることがあります。他のディストリビューション(例:SUSE)では、この場合に古いGCCを手動でインストールする必要があり、依存関係の解決が複雑になりがちです。Appstreamsでは、以下のように簡単に切り替えが可能となっています。
# 利用可能なGCCのバージョンを確認
$ dnf module list gcc-toolset
# 特定バージョンの有効化
$ sudo dnf module enable gcc-toolset:<version>
# インストール
$ sudo dnf install gcc-toolset
興味がある方は一度使ってみてください。
おわり
追記: