なかなか収束しない新型コロナにロシアのウクライナ侵攻、それらに伴なう世界経済の混乱と物価の上昇等々、気が滅入( めい ) るニュースばかりの日々が続く中でも季節は着実に歩みを進め、新緑を過ぎ、そろそろ田植えの時期になってきました。家の近くの苗代( なわしろ ) には田植えを待つ苗箱が並び、代掻( しろか ) きが終った水田は鏡のような水面を光らせています。
ここ数年、筆者がとりまとめ役をしているPlamo Linuxの新バージョンは田植えで忙しくなる前にリリースすることにしており、今年も先月末に約1年ぶりとなるPlamo Linux 7.4をリリースしました。
もっとも最近では、get_pkginfoコマンドで更新したパッケージを随時入手できますし、今回もPlamo-7シリーズの「メンテナンス・リリース」ということもあって、特記すべき変更や何か目新しい機能が加わった、ということはないものの、この1年ほどの間におよそ半数のパッケージが更新されると共に、パッケージ管理ツールもzstdに対応するなど、着実に進歩は続いています。
一方、この記事は新規インストールしたPlamo-7.4上で書いていますが、Firefoxで情報収集しつつ、MateデスクトップにEmacsエディタ、日本語入力はSKK、と、十年以上前から変わらない、指に馴染( なじ ) んだツールを使い続けています。
このように「変わりつつも変わらない」ことがPlamo Linuxの特徴のひとつ、という気がしているので、今回はそのあたりを考えてみることにします。
Plamo Linux 7.4の特徴
前節では、Plamo Linux 7.4(Plamo-7.4)はPlamo-7シリーズのメンテナンス・リリースで特に目立った特徴はない、と述べたものの、それだけではちょっと寂しい(苦笑)ので、主要なパッケージやいくつか追加した機能について紹介しましょう。
4月末のリリースに合わせて付属のREADMEファイルを更新し、その際、記載した主要なパッケージのバージョン情報は以下のとおりです。
kernel : linux-5.15.35
GCC : 11.3.0
LLVM : 13.0.1
Emacs : 28.1
Mesa3d : 21.3.7
Xfce : 4.16
Mate : 1.26
ICU : 70.1
Firefox: 99.0
LibreOffice : 7.2.6
ffmpeg : 4.3.3
Python : 3.9.12
Glibc2 : 2.33
リリース後1ヵ月ほど経っているので、FTP上ではすでに更新されたパッケージもあるものの、多くのパッケージが2022年4月時点でほぼ最新かそれに準じたバージョンに更新できました。
一方、いくつか古いバージョンのまま留めているパッケージもあるので少し説明しておきましょう。Linuxカーネルは5.18 が最新版(mainline)で5.17系 が安定版(stable)なものの、「 安定版」の寿命は案外短かいので、デフォルトでインストールするカーネルはLTS (Long Term Support)版を採用することにしており、Plamo-7.4では最新のLTSである5.15系 を採用しています。
Pythonは2021年10月に3.10.0が公開され、開発は3.10系 に移行したものの、関連するモジュール類を/usr/lib/python3.9/のようなマイナーバージョンまで含めたディレクトリに保存するため、移行するには3.9用のパッケージを全て作り直すと共に、3.9用のスクリプトが3.10で正しく動くかも確認する必要があるので、Python-3.10系の採用は先送りにし、Plamo-7.4は3.9系 で行くことにしました。
動画や音声を扱うソフトウェアの多くが利用しているFFmpegも、4.4系 やメジャーバージョンが更新された5.0系 が公開されているものの、共有ライブラリやAPIの互換性の問題があるため、もうしばらくは4.3系 に留め、FFmpegを利用しているソフトウェアが5.0対応を済ませてから更新することにしました。
FFmpegはバージョンアップごとにAPI/ABIが変更され、ライブラリの依存関係を調整するのが面倒でしたが、5.0系は古くなったAPIを廃止し新しい形式に統一した、とのことなので、今後はバージョン間の互換性問題も改善することを期待しています。
半年ごとにバージョンアップするGlibc2の最新版は2.35 まで進んでいるものの、2021年8月に公開された2.34 で内部構造が大きく変更され、libpthreadやlibdlと言った補助ライブラリの機能がlibc本体に取り込まるようになりました。Glibc2の開発者たちは「互換性に問題はない」と言っているものの、しばらく様子を見た方がいいだろう、ということでこの変更前のバージョンである2.33 に留めています。
その他、READMEファイルには取りあげなかったパッケージについて紹介すると、Xorg-serverは21.1.3 に更新し、それに合わせてX関連のライブラリやドライバも最新版に更新、あるいは再ビルドしています。
Xorg-serverの前のバージョンは1.20.10で、1から急に21まで飛ぶのか、と思ったものの、今後も変わりそうにないメジャーバージョン(1)を略し、マイナーバージョン(20)をメジャーバージョンに昇格させた結果のようです。
合わせて、Xwayland (xwayland-21.1.4)やWeston (weston-10.0.0)も追加し、Xに代わる新しいウィンドウシステムであるWayland も利用可能にしてみました。
システム起動用のgrubも2.06 に更新し、新メンテナの阿部さん作の"Powered by Plamo Linux"な背景画像を利用するようにしています。ついでにインストーラの背景画像には、起動メディアを手動指定する必要がある場合の情報を書き込んでみました。
Plamo-7.4のインストーラ起動画面
これらパッケージを管理するためのパッケージツールもpkgtools8 に更新し、最近よく使われている圧縮ツールzstd にも対応しました。zstd形式で圧縮したパッケージの拡張子はtzst にしています。
zstdは圧縮率を1から19までの範囲(数字が大きいほど圧縮率が高い)で調整できます。どれくらいが適切かとあれこれ試した結果、パッケージ作成用コマンド(/sbin/makepkg)の設定は"10"としています。この場合、圧縮後のサイズはxzに比べて2~3割増しになるものの、圧縮にかかる時間はxzの半分以下で済むので、特に大きなパッケージを作成する際には便利です。
一方、tzst形式に変更してパッケージサイズがすこしずつ大きくなった結果、それらをまとめたisoイメージのサイズがDVDの容量を越えてしまうようになりました。そのため、従来は1枚目のDVDイメージ(plamo-7.4_x86_64-dvd_01.iso )に含んでいたLibreOffice用パッケージを2枚目のDVDイメージ(plamo-7.4_x86_64-dvd_02.iso )に移動し、WINE用の32ビット環境を含むcontrib以下はDVD用のisoイメージには含めないようにしました。また、contrib以下も含む「全部込み」のUSB用イメージ(plamo-7.4_x86_64-usb.iso )は8.8GBほどになり、Plamo-7.3までは収まっていた8GBのUSBメモリに入らなくなりました。今までのUSBメモリを使い回せなくなるのは少し悩んだものの、最近では16GBのUSBメモリも1000円以下で買えるようなので、ヘタな小細工を弄( ろう ) する必要もないか、と判断しました。
findを使ってPlamo-7.4に含まれているパッケージを概観すると、総パッケージ数1009 のうち7.3公開後の1年間に更新されたパッケージは408 、更新されたパッケージのうち新しいtzst形式のものが328、従来のtxz形式のものが80、という結果になりました。
互換性重視で進めてきたPlamo-7.xのシリーズはこのPlamo-7.4で終了とし、次は今回紹介したような「やや互換性に難あり」なパッケージ類を更新して、過去のしがらみを整理したPlamo-8.xシリーズの開発に移る予定です。
ソフトウェアと「赤の女王仮説」
Plamo Linuxではメンテナ不足もあって、新しいソフトウェアを採用する際も、変更の激しい「開発版」ではなく、ある程度落ち着いた「安定版」を選んでいます。それでも1年ほどの間に約4割のパッケージが更新されるというのは、FOSS(Free/Open Source Software)の活動がそれだけ活発なことを意味しているのでしょう。
もっとも「安定版」を選んでいることもあり、更新の多くはバグ対応、特にセキュリティ関連のバグ(セキュリティ・ホール)対応が目立ちます。例えば、1.20から21.1へバージョンが跳躍したXorg-serverでは、何年も潜んだままだった拡張機能(X extensions)回りのバッファオーバーラン(out of bounds access)が見つかったことによるバージョンアップでした。
Xのような長い歴史を持つ「枯れた」ソフトウェアにもこのようなセキュリティホールが見つかる背景には、ソースコード解析技術が進化し、従来はチェックできなかった問題を発見できるようになったと共に、それらセキュリティホールを探し回っているクラッカー(cracker)連中の暗躍があるようです。
以前、何かのCMで「変わらないために変わり続ける 」という印象的なフレーズを耳にした記憶があります。その意味は、環境が常に変わり続ける中で同じであり続けるためには、むしろ周囲に合わせて変わり続けなければならない、ということでしょう。
最近、このフレーズには元ネタがあることを知りました。それはルイス・キャロル作の「鏡の国のアリス」にある赤の女王の「ここでは同じ場所に留まるためには全力で走らないといけないのじゃ (“ Now, here, you see,it takes all the running you can do, to keep in the same place.") 」という言葉とそれを元にした「赤の女王仮説 」という生物進化の考え方です。
進化論における「赤の女王仮説」とは、生物種は捕食者と被食者のように常に他種と競争関係におり、この生存競争に生き残っていくには、上記赤の女王の言葉のように持続的に進化し続けるしかない、というものです。
最近ではソフトウェアの世界でも同じような状況が生じており、鵜の目鷹の目で新しいセキュリティホールを探し続けるクラッカーに対し、新しい攻撃方法の餌食にならないように「枯れた」ソフトウェアでもコードをチェックし、必要ならば修正しなければなりません。また、それらソフトウェアを集積したディストリビューションでも同様に、更新されたバージョンを採用し続けない限り、攻撃に対して脆弱になってしまいます。
外交交渉によるデタントが可能だった冷戦時代の軍拡競争とは異なり、「 赤の女王仮説」では競争者間に交渉は存在せず、走ることを止めた種やソフトウェアは絶滅するしかありません。そう考えると、ディストリビューションの開発やメンテナンスというのは、ゴールの無い長距離走のようなものです。しかしながら指に馴染んだソフトウェアを使い続けるためにも、時代と共に変わりゆく回りの景色を楽しみつつ、肩肘を張らずにメンテナの方々と走り続けていこうと考えています。