解き放たれしソフトウェア

GNU/LinuxなどFLOSSについて書いてみるつもり

Gentooの優れているところ

GNU/Linuxディストリビューションは、数えきれないかというほどに沢山あります。その(ムダとも言えるくらいの)多さはDistroWatchをみてもわかります。

そのなかで、なぜGentoo(派生を含む。以下同じ)なのか、なぜGentooでないといけないのか、何が優れているのか。それが明らかにならなければ、Gentooを選びませんよね。

実際に多くの人は、ユーザの多いディストリビューションや、評判の良いディストリビューションを選びます。ですから、Debian系(UbuntuLinux Mintなどを含む)やRedHat系(FedoraCentOSRHELなど)を選ぶ人が圧倒的に多いのでしょう。

つまり、GNU/Linuxの最大の弱点は、そのディストリビューション(OS)と製作元に信頼がおけるのか? という点なのです。 実際に例えばマイクロソフトなんかは、「Linuxなんてわけのわからないものをインストール可能なコンピュータを造るな」と思っているのでしょうし。

DebianだろうがFedoraだろうが、Archでさえもやはり、バイナリの(ビルド済みの)ソフトウェアを配布しています。 その元になったソースは公開されていますし、リバースエンジニアリング(逆アセンブルなど)も許されているでしょう。けれどもそこまでして解析する人は多くはないですよね。

そうしたデメリットは、インストールが簡単だとか、ソフトウェアを簡単にすぐ追加インストール可能だとかいう利便性と引き換えなのですよね。 ですから例えばUbuntuやMintを選ぶ人って、たくさんあるソフトウェアから選び放題インストールし放題というパラダイスに魅力を感ずる人が多いと思うのですよ。 例えばFedoraにしても、新しもの好きの人が最先端を試したくて選ぶことが少なくないでしょう。

そのためには結局は、ディストリビューションの製作元に全幅の信頼をおかねば使えないということです。

この点は、WindowsでもMacでも同様でしょう。MicrosoftApple に全幅の信頼をおかないとそのOSは使えません。

しかしGNU/Linuxは、多くはコミュニティ型や中小零細の製作で、MicrosoftAppleのような巨大上場企業ではありません。 だから「どこの馬の骨ともわからない」と思われかねないし、そんなのを信頼するのかという問題が起こるわけです。 (けれどもちろん、世間的には「信用のある」扱いをされているMicrosoftAppleも、本当に大丈夫なんて保証は無いですよね。)

Gentoo は隠さない

それに対してGentooは、原則としてソフトウェアのソースコードからコンパイルします。 (一部を除き)バイナリで配布はしないわけです。

そうするとGentooにおいては、各ソフトウェアの製作元それぞれについて、あなたが信頼するかどうか、ということに集約されるわけです。 胡散臭いソフトウェアはインストールしないわけです、当然ですが(笑)。

Gentoo自体を信用するかどうかという点については強いて言えば、ebuildファイルを読めばいいわけですし、そのebuildファイルそのものでビルドしてインストールするのですから、嘘はありません。 たとえて言えば、RedHatを、ソースパッケージからSPECファイルでビルドしてインストールするのと似たようなものです。

ビルドしてインストールする作業過程も、デフォルトでは、表示されます。 何をコンパイルしているかとか、何をインストールしたとか、表示されます。 すべて丸裸で、隠し立てはありません

この点でGentooと同じものといえば、 Linux From Scratch くらいしか思いつきません。

Gentoo は不要なソフトウェアを強制しない

Gentoo の特徴に USEフラグというものがあります。 フラグのオン・オフで、インストールするソフトウェアの機能の有効無効を選べます

その結果として、無用な dependency のインストールを避けられます

それに比べると、DebianFedoraや、Archにしても、大変なことになっているわけです。 ソフトウェアのバイナリは特定の設定でビルドされていて、その設定に基づく必須のdependencyは有無を言わさずインストールされます。 他方で、追加可能なdependencyは、インストールしてもしなくてもいいわけですから、そのシステムは決して一枚岩で組み上がるわけではなく、継ぎ接ぎと歯抜けでできていることになります。

実際に、継ぎ接ぎと歯抜けなんです。 例えば、デフォルトではコンパイラGCC)もインストールされていなかったりしますから。 デフォルトでは完成品の、いわばエキスだけを切り離して配布しています。 動作自体に必要のないものは意図的にインストールしないと入らないわけです。 だから、-dev のつく名称のパッケージが分けて配布されているのですね。

それは裏を返せば、 Gentoo は「エキス」以外もインストールするのでディスク消費がかえって増える、それも事実です。

Gentooコンパイラの設定を決められる

ビルド済みのバイナリを配布するディストリビューションでは、そのバイナリをビルドする設定は決め打ちです。 自分のハードウェアに合わせて変えたり、好みで変えたりすることは、不可能です。

具体的に言えば、自分のCPUに合わせたり(-march=native)、最適化の度合いを選んだり(-O2 にするか -O3 にするかとか)するなどが、Gentoo なら可能です。

Gentoo はパッケージが豊富

Gentooは、ビルドしてインストールするという設計思想ですから、Gentooで製作するパッケージの本体は単に ebuild ファイル(スクリプト)だけです。 そのような事情もあるので、パッケージ数が多いのです。

また、バイナリで配布しているディストリビューションでは、特定の設定でビルドしているもの同士ですから、各パッケージの整合性をテストしないといけません。 それに対してGentooでは、手元でビルドするので、動くような設定でビルドするはずです。 だから、とにかくビルド、インストールするebuildファイルを書けばよく、整合性テスト作業の負担が少ないわけですので、パッケージ数が多いのです。

具体例としては例えば、バイナリディストリビューションでは、GCCのバージョンを上げたら、全バイナリをビルドしなおして動作確認をするという膨大な作業が起こるでしょう。 それはGCCだけの話ではなくて、ライブラリのGLIBCだとかについてもそうですね。 また、Pythonを、2から3に上げるとか、2(2.7)を廃止するとかいうことでも、例えばUbuntuではすったもんだの大騒ぎになっています。

UbuntuやArchなどでは、パッケージの少ない問題を解決する方法として、ユーザによるリポジトリを公開しています。

しかし、UbuntuのPPAなんかは「どこの馬の骨ともわからない」バイナリをインストールすることになりかねません。

ArchのAURは、ソースコードからビルドしますが、その代償として、ArchのコンセプトであるKISS(徹底的な単純さ)を犠牲にしています。(Arch は pacman でさくさく管理していける簡単さが特徴なのに、AUR(yaourt)を使うとこんがらがりますよね。)

Gentoo はバージョンアップ対応が早い

それと、Gentooでは、特に人気のあるソフトウェアなんかは、バージョンアップへの追随が早いです。 その点は Fedora でも同じかもしれません。 しかし、Debianのstableや、UbuntuのLTSなんか入れた日にはもう、バージョン飼い殺しみたいなもんです。

他方で、 Gentoo のパッケージ数は大変に多いので、メンテナに余裕とやる気がないと、いつまで経っても古いまま放置ということも多いのも事実です。 その点は Arch の AUR も同じですね。

Gentoo は奥が深く、探求意欲を失わせない

おそらく、Debian系やRedHat系などを使っているとそのうち惰性になり、飽きます。 ただの「おもちゃ」でしかなくなることも少なくありません。 結局は用意されている箱庭から出ない人が多いのだと思います。

Gentooは奥が深くて面倒くさいですが、GNU/Linuxシステム自体への探求意欲を駆り立てられたり、あるいはプログラミングへの関心を駆り立てられたりします。 それに対して例えばUbuntuだとかは、なるべくはGUIで、DEで完結するようにつくられていますから、シェルでの操作に対して好意的な態度はもちにくいです。

Gentooでは、自分でリポジトリをつくってebuildファイルを書いて好きなソフトウェアをインストールするということも、ごく普通です。 そしてそうした過程で、(特にbashの)プログラミング能力がついたり、ソフトウェアのソースコードを読む機会が増えたり、テキストデータの加工作業のために基礎的なCLIのコマンドを駆使することも増えます。 そうしているうちに、GNU/Linux技術者(ハッカー)としての能力がおのずとついてきます。

それは裏を返せば、余裕とやる気がある人でないと Gentoo は向いていないのかもしれませんが。

だからGentooユーザは比較的少ないのでしょうし。特に日本人、せっかちで忙しい人が多いから、情報工学が本業でないとGentooは面倒くさいものでしかないのでしょうね。(実際に、日本社会って貧困で、生活費稼ぐのに必死ですし。) そうして多くの人は、WindowsだとかMacだとかの出来合いもので済ませる。Ubuntuとかをインストールする人には「タダだから」「遅いパソコンでも動くから」と言う人がいるわけです(某誌もそういう人を量産しているわけですし……)。

発想や生き方の問題なのかもしれません。


この投稿は

qiita.com

4日の記事です。

今日の記事は手抜きです。