Chienomi

Linuxディストリビューションの選び方

Live With Linux::basic

この記事はLinuxカテゴリです!

本文はLinux上での話をしています

Linuxに関する疑問解消や共有は日本語Linuxers

本稿ではLinuxディストリビューション選択に関する基礎的な知識を解説する。

もしおすすめディストリビューションが知りたいがためにこのページを開いたのなら、デスクトップならばManjaro Linux Cinnamonを、サーバーならばArchlinuxを選択すること。以上。

万能の指標

Linuxディストリビューションを選択する上で重要なのは「求める最終形に到達する労力の少なさ」と「構築した最終形を維持する労力の少なさ」である。

一部には「知名度」や「玄人感」を重視する人もいるらしいが、多分そのような人はLinuxメインの生活はしていない。

構築

そもそもの話、Linuxディストリビューションを使うことはLinuxを使う上で必須のことではない。 必要なソフトウェア環境をひとつずつ手で構築してもいいのだ。

そうしないのは、それは労力がかかりすぎるからだ。 労力の削減はLinuxディストリビューションの価値そのものである。

求める最終形への到達は、最終形が明確であるかどうかによる。

明確である場合、導入するソフトウェアがパッケージとして提供されており、それらが望ましいビルドオプションを用いており、運用したい設定にしやすいことが要求である。

ソフトウェアパッケージが豊富であることはこれを助けるが、実際は必要とするものが揃っていれば良いため必須要件というわけではない。 必要のないパッケージがいくつあっても仕方ないし、たくさんのパッケージがあっても必要なパッケージがなければ意味がない。 多くのパッケージが用意されていることは必要としているパッケージが存在する確率を上げるが、数よりも方向性が重要になる場合もある。 一方で、用意されているパッケージが少ないことは「あるものの中で選ぶ」という妥協になる可能性もあり、数が多いこと自体にも意義はある。

一方明確でない場合は「試せること」が重要になるので、基本的にパッケージの豊富さは直接の価値になるし、ビルドオプションも全部入りに近いもののほうが良い。

ただし、特に明確な要求もなく、理想的な環境に近づけることに興味もないのであれば、むしろディストリビューターが理想形を提示し、それに従って出来上がる環境を使うだけという方針もある。 この場合は選択肢は狭いほうがやりやすい。

維持

リリースサイクル

そして維持である。

まずディストリビューションにはある程度のサイクルがある。 例えばUbuntuやFedoraであれば、原則として6ヶ月ごとに再インストールすることが想定されている。 アップグレードも可能だが、アップグレードに最適化されているわけではないため、基本的な考え方は6ヶ月ごとに再インストールする想定でいたほうが良い。

Debian GNU/Linuxはstableに関しては2年ごとにリリースされ、3年の保守期間がある。 2年ごとに再インストールしてもいいし、状況によっては3年まで引っ張っても良い。 サポート自体はLTSとして5年まで提供されるため、サーバーなど環境を変化させずにできるだけ長く運用したい場合は最長5年まで運用可能だ。

ArchlinuxやOpenSUSE Tumbleweedはローリングリリースであり、システム再インストールの必要性はない。 ごく稀にシステム再インストールをしたほうが楽な場合もあるが、その場合でもマイグレーション手順は提示されるので再インストールしないという選択肢は十分にありうる。

これらはそれぞれ良し悪しがある。

サイクルが短いタイプは、その期間、例えば6ヶ月スパンのものは直近6ヶ月以内という比較的新しい環境が提供される。 必然的に短いスパンでの再インストールが求められるため、システムが汚れる心配が少なく、また再構築の過程で新機能や新しい設定について習得する機会を得られるし、システム構築にも慣れることができる。 トラブルにも遭遇しやすいが、そもそも初心者は6ヶ月間クリーンな環境を保つことも容易ではないので、Linux慣れするのに悪くないとすら言える。

ただし、再構築は手間だし、リスクもある。 特にLinuxに慣れて明確に目標とする環境があると「面倒なだけ」という感覚が強くなる。 また、「新しいバージョンのソフトウェアが使える」という特徴は6ヶ月というスパンのせいで、リリース後ある程度経つと最新ではなくなることから、常に最新版を使いたいという人には不満に感じられる場合がある。

サイクルが長いタイプは、変化させなければ便利だけれど変化させると汚れるという問題を抱えることになる。 デスクトップ利用は結構なスピードで環境が変化するので、普通に使っているだけでも環境は汚れやすい。 また、デスクトップソフトウェアは古いバージョンを使い続けることになるのはかなり辛い。5年前というと世界がまるで違うものになるため、変化しないことが必ずしも歓迎できることとは言えない。

一方、長期の安定運用を望む場合は安定運用可能なのはメリット。 ユーザー側で変更しなければある日突然動かなくなるようなリスクも低く、熟成による安定性向上も期待できる。

ローリングリリースのメリットは常に最新環境を追うことができること、そしてリセットが必要ないことが大きい。 ローリングリリース環境ではロングスパン型でも最長クラスの5年を越える運用ができる場合も多い。実際私の手元には8年同一システムで運用されているArchlinuxがある。 環境を完成させ、それをさらに育てていけるのもローリングリリースならでは。

一方、ローリングリリースは変化しつづけるということがデメリットでもある。 非ローリングリリースであればある程度の期間ごとに訪れるバージョンアップの苦労を、ローリングリリースでは細かくタイミングが分かれてやってくることになる。 そして、それは日常的なアップデートで突然に降りかかるため、時間に余裕がないタイミングで動かなくなるなんてことになりやすい。 さらにそれが最新環境で発生すると、動かなくなった原因を調べるのも一苦労ということもある。 そのため、使用しているソフトウェアに対するそれなりに深い知識を求められがちで、むやみにソフトウェアを増やすと自分の首をしめることになる。

また、ローリングリリースならではのこととして、アップグレードでゴミが生まれるという問題がある。 ソフトウェアのバージョンアップで構成が変化したり依存関係が変化したりした場合、もちろん動作に必要な新しい依存はアップグレードで一緒にインストールされるのが普通だが、それによって不要になったものは自動で消えるとは限らない。 そして、不要になったものを検知して削除するのは、意外と難しい。 不要になったものが残っていることが動作不良の原因になったりすることもあるため、放置はそれなりにリスクがあるのも問題だ。

アップデートとアップグレード

維持に関しては、当たり前だがパッケージがメンテナンスされるかどうかというのはかなり問題の中心になってくる。

一応言っておくと、UbuntuだろうがFedoraだろうがArchlinuxだろうが、メンテナンスの甘いパッケージは普通にある。 常にビルドしなければならないGentooの場合ビルドできなくなるとすぐ分かるので多少マシだが、それでもメンテナンスが甘いパッケージがないわけではない。 それはそもそもパッケージの品質が高くないというケースもあるし、あまりアップデートがされないということもある。

ただ放置されるのが大抵の場合最悪なので、基本的には人員が多いディストリビューションやパッケージメンテナンスが容易になっているディストリビューションが強い。

環境構築の要件が最新環境にあるのであれば、ちゃんと最新に維持してくれるディストリビューションが好ましいし、動作環境に確実性があって変化しないことを要件としているならば、動作検証がしっかりしていて安易に変更を加えないディストリビューションが望ましい。

自分の好ましいポイントが明確にある人にとっては、ディストリビューションが方針を変化させたりしないほうが良いし、逆に環境変化に応じて柔軟に変化してくれたほうが良いという人もいるだろう。

アップデートにも方針はある。

まず、普通は(ローリングリリースのものを除けば)アップデートではメジャーバージョンアップは行わないものだが、ウェブブラウザなど一部のソフトウェアではアップグレードせずにパッチだけ当てていくという運用が難しいというものがあったりする。 こういうものに関してもFirefox ESRなどを使って変化させないというポリシーである場合もあれば、こういうものに関してはメジャーバージョンアップもするというようなポリシーを採用している場合もある。 さらに「ものよってはバージョンアップを行う」というポリシーの場合はその境界線に匙加減が発生する。

RHELなどは新しいバージョンのパッチを移植して古いバージョンを維持することもある。

こうしたアップグレードを行うものに関してはバージョンアップで設定ファイルや挙動に変化が発生する場合にどうするかという問題もある。

コミュニティ体制

コミュニティがどのような体制で運営されているかというのは場合によっては非常に大きな影響を与える。

コミュニティ体制は非常に多種多様で、分類するのも難しい。 強いて言うなら、openSUSE, Fedora, Ubuntuのように特定企業の人が主要メンバーとなっているものと、コミュニティ中心人物によるもの、フラットなコミュニティによるもの、そして基本的に個人的な活動であるものと分けられるが、その実態は相当に多様なのであまり参考にならない。

コミュニティがどのような体制、どのような考えのもと運営されているかというのはかなり需要な指標になりうる。 ここが合わないディストリビューションは、いずれはうけ入れ難くなるものだ。

コミュニティ体制が問題につながったケースで有名なのはCentOSだろう。

企業によって運営されているディストリビューションは企業の意向が直接的に反映される。 結果的に大きな方針転換が発生しやすい傾向にある、ということは頭に留めておくといいだろう。

サーバーディストリビューション

サーバー向けディストリビューションに関しては割と複雑な話があり、「そもそもサーバー向けディストリビューションがいるのか」という話になりやすい。

まず一般的にサーバー向けのディストリビューションは、枯れた構成で長期サポートされ、変更が少ない、ということが要件として挙げられている。

しかしこの価値観は古い時代のもので、現代にはあまりそぐわない。 現代においては動作環境として新しいソフトウェアセットを必要とする場合が多く、5年10年と同じ環境を維持されることは「そんなに変化なく維持されても困る」ということになりやすく、それを補うために処理系環境のバージョン管理を別途入れたりするのだが、それは苦し紛れの話である。

加えて、近年は「イメージ化して固定する」のほうが一般的になってきているため、サーバーでLinuxディストリビューションをメンテナンスしていくことがあまりなく、その意味でもサーバー向けディストリビューションの需要は下がっている。

サーバーディストリビューションとしてはRHELが絶対で、だから互換Linuxを使う、みたいな人も多いのだが、まずRHELの価値はRed Hatによるサポートと商用製品がサポートされていることにあるため、サポートのないコミュニティディストリビューションを使い、商用製品も使わずに運用するならアドバンテージはほとんどない。

ただ、ならば選ぶ意味がないかというとそんなこともなくて、これはそもそも枯れた環境で長く維持できるディストリビューションがかなり少なく、そういう性質のディストリビューションを必要とする場合の少ない選択肢のひとつとして普通に有効だからだ。 他の選択肢としてはDebian GNU/Linux, openSUSE Leapが有力。

Ubuntu Serverはリリースからしばらくの間は不安定(未完成)であることが多いというのが難になるため、これらのディストリビューションとは性質がかなり違う。

ちなみに、「時代の変化に伴って少なくなった」みたいに聞こえるかもしれないが、昔を振り返ってもCentOSが大変に幅を効かせていたくらいで、対抗はDebianというのはまるで変わっていない。 商用製品としてはRHEL互換のRHELではないサポートがつくもの(Oracle LinuxやMiracle Linux)やSLES(Suse Linux Enterprise Server)があったけれど、それほど一般的だったわけでもない。 さらに前になると、Red Hat Linux(デスクトップ向けのもの)とかでサーバー運営されていたりした。これらは別にサーバー向けではない。 むしろ、SLESのコミュニティ版たるLeapができて選択肢は増えたくらいだ。

どうせ最新環境を想定して動かすのであれば、サーバー向けにこだわらない選択肢も全然ある。 Fedoraをサーバーに使うのも、その意味がちゃんと分かっているのであれば全然アリだ。

私もArchlinuxをサーバーに使っているが、アップデートにある程度特別な注意を払う必要がある以外は長期運用もできてとても良いと思っている。