少し時間が経ってしまいましたが、昨年末レッドハット社(Red Hat)が支援するコミュニティー The Fedora Projectは、2018年 10月30日 Fedora の最新版 Fedora 29 (Twenty Nine)をリリースしました。
Fedora は、約半年周期(Fedora28 は 5月1日リリース)でリリースされるディストリビューションです。 Fedoraは最新の技術、ソフトウェアのバージョンを積極的に取り込む事で知られ、 ここで検証された技術は Red Hat Enterprise Linux(RHEL) や RHELクローンの CentOS に取り込まれます。
ちなみに 10月28日 IBMがレッドハットを340億ドル(約3兆8000億円)で買収することで 合意したことを発表して話題になりました。 現状 Fedora, CentOS に関してのアナウンスは無いので現状維持で プロジェクトが運営されていくのではないかというのが大方の予想です。
Fedora には、Workstation、Server、Atomic の3つのエディションが存在します。 Workstation は、GNOME Shell を採用したノート PC やデスクトップ向け、 Serverはサーバ向けのインストール用 ISO イメージが配布されています。 Atomic は、Cloud や VirtualBoxなどの仮想マシン上で稼働することを 想定したディスクイメージのみが下記URLで配布されています。
アーキテクチャーは、x86_64、ARM-hfp ARM AArch64、をサポートしています。 かつては、MIPS、PowerPC64、など多くのアーキテクチャーも 非サポートとして有志によりパッケージが公開されていましたが、現状活動は休止しているようです。
なお、Fedora のアップデートパッケージが提供されている期間は、2つ先のバージョン(Fedora29の場合、Fedora 31)が リリースされてから一ヶ月後(予定 2019年12頃)となっています。 あくまで最新の技術、パッケージバージョンを試す為のディストリビューションなので、 長期運用用には使用しないでください。
Fedora 29 のアップデート内容は以下の通りです。
https://fedoraproject.org/wiki/Releases/29/ChangeSet
・Binutils が 2.31 へアップデート
・CJK(Chinese, Japanese, and Korean) のデフォルトフォントを Google Noto へ変更 ※
・PPC64 アーキテクチャーのサポート終了 ※
・Fedora Scientific VagrantBox を ISO として提供
・glibc が 2.28 へアップデート
・OS が複数インストールされてない場合、grub メニューが非表示
・IBus が 1.5.19 へアップデート
・Fedora のOS情報が /usr/lib/os-release へ記載されるようになった。
・モジュラーレポジトリが全てのエディションで利用可に ※
・python2 パッケージは、python-unversioned-command というパッケージ名に変更
・NSS(Network Security Services) は、p11-kit モジュールをデフォルトでロード
・Node.js が 10.12.0 へアップデート
・Perl モジュールの参照先を search.cpan.org から metacpan.org へ変更 ※
・Python が 3.7 へアップデート
・gcc, gcc-c++ を BuildRoot(build, buildsys-build グループ) から除外 ※
・Ruby on Rails が 5.2 へアップデート
・Atomic Workstation を Fedora Silverblue に名称変更
・tzdata (世界各地域の標準時データ)を ‘vanguard’ フォーマットに移行
・i686 アーキテクチャーの SSE2(ストリーミングSIMD拡張命令2)サポート
・ARMv7 と aarch64 での ZRAM(メモリ圧縮) サポート ※
・Golang が 1.11 へアップデート
・Perl が 5.28 へアップデート
・python3 がデフォルトに ※
・Cloud のイメージが毎月アップデートされることに ※
・GTK+ バージョンの wireshark が廃止に
・基本的な FPGA をサポート
・GnuTLS の暗号ライブラリで TLS 1.3 がデフォルトに
・Liberation フォントを 2.00.3 へアップデート
・リソース統計ツール Dstat と パーフォーマンス分析ツール Performance Co-Pilot を統合
・MySQL(community-mysqlパッケージ) が 8 へアップデート
(デフォルトは mariadb 10.3.10)
・Python の バイトコンパイルの振る舞いを変更
・OpenLDAP の MozNSS コンパチビリティレイヤーを廃止
・ローカルストレージ管理 Stratis Storage 1.0 を実装
・ Erlang パッケージのインストール先ディレクトリを変更(%{_libdir}/erlang/lib)
・Haskell を Stackage LTS 11 へアップデート
・パッケージグループで python2 に依存していたものを python3 へ変更
・多言語音声合成システム festival 2.5 へアップデート
・ ~/.local/bin と ~/bin が 環境変数 PATH の先頭にデフォルト定義 ※
・今後 Fedora のメイン長期サポート版となる java-11-openjdk を提供 ※
・サポートされている全ての Kubernetes モジュールを提供
・OpenShift Origin が 3.11 へアップデート (3.9 からのアップデートは不可)
・GTK-3 への移行が完了した Xfce を 4.13 へアップデート
Fedora 29 が採用する主なソフトウェアのバージョン
カーネル
kernel 4.18.16
Cライブラリ
glibc 2.28
libgcc 8.2.1
ディスクトップ環境
wayland 1.16.0
gnome-shell 3.30.1
KDE Plasma 5.13.5
libreoffice 6.1.2.1
gtk 3.24.1
qt 4.8.7
プログラミング言語
perl 5.28.0
Python 3.7.1
php 7.2.11
ruby 2.5.1
rubygem-rails 5.2.1
nodejs 10.12.0
golang 1.11
データベース
postgresql 10.5
mariadb 10.3.10
Webサーバ
httpd 2.4.34
nginx 1.12.1
ネットワークサーバ
samba 4.9.1
bind 9.11.4
dovecot 2.3.3
postfix 3.3.1
Fedora 29 は、28 から見た目の大きな変更はありませんが、GNOME Shell 3.30 より デスクトップ環境全体においてリソースの使用をできるだけ抑えるようになりました。 著者が起動直後に free コマンドを実行したところ、メモリの使用量が 28 より 20%少なくなっていました。その他、Flatpakが自動的に更新できるようになったり、 リモート接続がアクティブなときにシステムメニューにインジケータが表示されたりと、 軽微なアップデートがなされています。
ファイルマネージャのパスの部分が変更されています。またウィンドウのサイズ変更の動作がスムーズになりました。
GNOME Shell 3.30 リリースノート
https://help.gnome.org/misc/release-notes/3.30/
著者が気になったところでは、ARM, X86_64 へのサポートが強化されて、マイナーアーキテクチャの提供終了。 Cloud のイメージが毎月アップデートリリースされるという事で Cloud への移行がますます進んでいることを感じさせられた。 プログラミング系では、Python2 から Python3 への完全移行、gcc, gcc-c++ が BuildRootから除外、 言語の多様化により開発環境といっても開発者によっては、gcc が必須ではなくなってきている為のようです。
そして最大のニュースは、Fedora 26 より進められていたシステムのモジュール化(モジュラリティ)だろう。 Fedora 28 まで、本機能はサーバエディションだけに提供されていていたが、29 より全エディションへの提供が始まりました。
Fedora 28 まで、本機能はサーバエディションだけに提供されていていたが、29 より全エディションへの提供が始まりました。
本稿では、今後広く普及していくと思われるモジュラリティ(Modularity)について少し解説したいと思います。
Fedora は、半年で新しいディストリビューションがリリースされます。 一般ユーザーや開発者は、常に新しいバージョンのソフトウェアを試せるので嬉しいかもしれませんが、 サーバ管理者や、サードパーティのソフトを利用している場合、 システムをアップデートしても、特定のソフトウェアのバージョンだけはアップデートしたくない場合もあります。 これを解決するのがモジュラリティ(Modularity) です。
https://docs.fedoraproject.org/en-US/modularity/
モジュラリティとは、独立したライフサイクルで追加バージョンのソフトウェアを提供する Modular(もしくは AppStream)と呼ばれるレポジトリのことを言います。
例えば、Fedora 28 で nodejs 8 を利用していたけれど、Fedora 29 では nodejs は 10 にアップデートされている。 Fedora 28 をシステムアップデートして Fedora 29 にしたいけど、nodejs は 8 を使い続けたいといったときに モジュラリティを利用することにより解決できます。
要するにモジュラリティを利用すればシステムをアップデートしても、同じバージョンのアプリケーションを使い続けることが出来るのです。
モジュールのリストは、以下のコマンドで取得します。リストを見ると MySQL 5.7 or MariaDB 10.1 、 MongoDB の 3.4 or 3.6、 Node.js 8 or 10、perl 5.24 or 5.26 など選択可能なのが分かります。
$ dnf module list
mariadb 10.1 client, server, default MariaDB Module
mongodb 3.4 client, server, default MongoDB Module
mongodb 3.6 client, server, default MongoDB Module
mysql 5.7 client, server, default MySQL Module
ninja master default Small build system with a focus on speed
nodejs 10 development, minimal, default Javascript runtime
nodejs 8 development, minimal, default [d] Javascript runtime
perl 5.24 minimal, default Practical Extraction and Report Language
perl 5.26 minimal, default Practical Extraction and Report Language
:
例えば Fedora 29 で MongoDB を通常インストールすると 4.0 がインストールされます。(レポジトリは fedora)
$ sudo dnf install mongodb
:
============================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリ サイズ
============================================================================================================================================================================
インストール:
mongodb x86_64 4.0.1-1.fc29 fedora 12 M
:
$ rpm -q mongodb
mongodb-4.0.1-1.fc29.x86_64
一度 MongoDB を削除して今度はモジュラリティを利用してみようと思います。
$ sudo dnf remove mongodb
MongoDB の 3.4 モジュールを利用する事を宣言してモジュールリストをもう一度参照するとリストの mongodb 3.4 に [e] が追加され有効(enable)になったことが分かります。
$ sudo dnf module enable mongodb:3.4
$ sudo dnf module list
:
mongodb 3.4 [e] client, server, default MongoDB Module
mongodb 3.6 client, server, default MongoDB Module
:
再度、MongoDB をインストールすると参照先のレポジトリがfedora-modularに変更され MongoDB 3.4 がインストールされます。
$ sudo dnf install mongodb
:
============================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリ サイズ
============================================================================================================================================================================
インストール:
mongodb x86_64 3.4.11-3.module_1829+95924ba0 fedora-modular 23 M
:
$ rpm -q mongodb
mongodb-3.4.11-3.module_1829+95924ba0.x86_64
やはり MongoDB 3.4 ではなく 3.6 を使いたいのであれば、module enable と実行しなおせば参照先のリポジトリが変更されて、3.6 がインストールされるようになります。
$ sudo dnf remove mongodb
$ sudo dnf module enable mongodb:3.6
$ sudo dnf install mongodb
$ rpm -q mongodb
mongodb-3.6.4-2.module_1831+e8c1cdcd.x86_64
モジュラリティの利用をやめて、標準レポジトリの 4.0 に戻したい場合は、モジュールを disable 無効にすれば標準リポジトリを参照するようになります。
$ sudo dnf module disable mongodb:3.6
現状、標準リポジトリに含まれないバージョンのソフトウェアを利用したい場合、 自分でビルドしてインストールするか、他のリポジトリを利用してインストールするしかない。 手順もソフトウェアによって異なるので、Fedora が公式に提供しているリポジトリから 簡単にインストールするソフトウェアのバージョンを選択できるのは大変ありがたい。 個人的には、サイト環境によって php のバージョンを変更しているのでリストに php がまだ無いのが残念だが、
今後モジュールのリストがどれだけ増えていくのが注目していきたい。
なお、Fedora プロジェクトでは、IoTに特化した Fedora IoT エディションの リリースに向けた準備が進められており。次期バージョンの Fedora 30 で Fedora IoT エディションが登場するかもしれない。