あなたとgentoo、今すぐインストール

はじめまして。シス管になったらりお(@L16777216)と申します。

Pepperくん凄かったです。特に紅く輝く右目(左目だったっけ?)で射貫かれたときはゾクゾクしました。ああいう †センス† が私も欲しいです。

さて、PepperくんにはNAOqiというOSが乗っています。
NAOqiはgentoo linuxという素晴らしいLinuxディストリビューションがベースです。
他にも、googleの出したChromebookというノートPCもgentooを改造したOSを採用しています。
この記事は、そんなナウなヤングにバカウケな、今をときめくgentoo linuxについての話です。
ハードウェアのスペックとかファイルシステム(btrfs rootで入れました)とか結構おもしろい構成になっているのでそちらも紹介したいところですが、それはまた別の機会に。

以下で述べるように、gentooは他人におすすめできるディストリビューションです。
もちろん私もgentooユーザなのですが、部室でgentooをおすすめする端からArch linuxユーザが増えていくという怪現象に遭遇している私としては、 是非ともgentooユーザを増やしていきたいと考えています。

私のおじいさんがくれた初めてのOS、
それはgentoo linuxで私は4歳でした
その動作は軽くてスピーディーで、こんな素晴らしいOSを貰える私は
きっと特別な存在なのだと感じました
今では私がおじいさん、孫にあげるのはもちろんgentoo linux
なぜなら、彼もまた特別な存在だからです

そんなわけで唐突ですが、部室PCにgentooが入りました。

インストールされたgentoo

経緯

ところ(@tokoro10g)さん「gentoo入れない?」
わたし「入れます! 入れましょう!」

補足:利用頻度の低くなっていたマシンを有効活用すべく、開発環境に最適なgentoo linuxを入れることになった。

gentooとは

gentooはLinuxベースのOS(正確にはディストリビューション)です。UbuntuとかDebianとかCentOSとかArchとかみたいなやつです。
正確にはLinuxというのはカーネル(OSの中核の部分)でしかなくて、その上で動かすデスクトップとかシェルとかサーバなどのアプリケーションというのはLinuxカーネルとは別にインストールしなければなりません。
ですがUbuntuやDebianなどでは最初から様々なアプリケーションが使えるようになっています。これは、Ubuntuとかを作る人たちがあらかじめインストールしておいてくれているからです。
こうして、カーネルとそれ以外のいろいろなアプリケーションをまとめた配布物を、ディストリビューション(distribution, distro)と言います。

gentooの特徴

小さい

WindowsやMacではウィンドウやマウスポインタが使えます。いわゆるグラフィカルな環境です。
Linuxでも同じことができますが、Windowsなどと違って、GnomeやKDEなど複数の選択肢が存在します。
好きなものをインストールしたり設定することでどういう環境を使うか選べますが、大抵は開発者のおすすめがディストリビューションに初めから含まれています。
たとえばUbuntuならUnity、Debianなら(たぶん)Gnome、KNOPPIXならKDE、といったような具合です。
しかしサーバ向けの構成やArch linuxやgentoo linuxなどの一部ディストリビューションには、それがあらかじめインストールされていません。
使いたければ自分で入れます。

このメリットは、システムが小さくなることです。
負荷やセキュリティのことを考えると、「必要のないプログラムが動いていない・インストールされていない」という状況が理想的ですが、 「最初に必要最小限のものしか入れない」という手段でこれを実現したのがgentooやArchです。
すなわち、gentooは小さいのです。

何とは言いませんが、小さいのは大好きです。

柔軟

公式ドキュメントに "Gentoo is all about choices." (Gentooとは選択です。) とある通り、gentooではユーザが何を入れて何を使うのか選択する自由を重視しています。
Ubuntuなどでは特定のアプリケーション群をまとめてひとつにし、さらに独自要素を加えているので、初心者でも使いやすい反面、 Ubuntuで想定されていないことをしようとすると途端に難易度が上がったりします。
Ubuntuでなくとも、システムのコアの部分に近いものは簡単には入れ替えができないことが殆どです。
しかしgentooでは、「これが入っていなければ動かせない」というようなものがカーネルくらいしかありません(そのカーネルもlinuxでさえあれば(linuxでなくてもどうにかなります)いろいろと選べます)。
(具体的には、たとえばinitにOpenRCでなくsystemdを使うとか、パッケージマネージャにデフォルトのportageでなくArchデフォルトのpacmanを使えるとか、そういうところです。)
他にも、パッケージのバージョンをかなり自由に選べます。
たとえばapacheやopensslなどのサーバ用途のプログラムには安定版を使いたいが、デスクトップ用途のプログラムでは最新版を使いたい、などのような場合にも簡単に設定できます。
すなわち、gentooは構成を柔軟にできるのです。

何とは言いませんが、やわらかいのは大好きです。

ローリングリリース

Windows XPからWindows Vistaに移行するのが大変だった/面倒が発生した、だとか、Ubuntuのバージョンを新しいのにしたら不具合が起きた、 とかで困った経験のある人も少なくないかと思います。
しかしgentooではそのような問題はありません。
gentooやArchは「ローリングリリース」という管理形態を採用しており、「OS(ディストリビューション)のバージョン」というものを重視しないからです。
これは、システムは様々なプログラムから出来ているのだから、それぞれ新バージョンが出るごとに更新すればいいし、システム全体にバージョン付けする必要は無い、という発想に基いています。
日々のアップデートによってシステムは連続的に新しくなっていき、Win7→Win8のような不連続な変化が起きないため、アップグレードによる問題というのが発生しないようになっているのです。
最初にOSを入れた時点から、システムを丸ごと入れ替えるようなことは殆ど起きず、あなたの設定も棄てられることなく蓄積されていきます。
すなわち、gentooのシステムは成長するのです。

何とは言いませんが、ローリ成長の可能性を感じさせるのは大好きです。

汎用性、最適化

UbuntuやDebianであればapt、RedHat系であればrpm、Archであればpacman等、必要なプログラムを指定するだけで、 依存パッケージのダウンロードやインストール、アンインストールの面倒を見てくれる便利なプログラムをパッケージマネージャ(PM)と言います。
昔のwindowsにはそういうものがありませんでしたが、最近だとWindowsストアを使うアプリなどが該当するでしょうか。
普通そういったPMはプログラムを実行可能な形式(バイナリ)でダウンロードしてくるので、システムにコピーして管理情報を更新すればすぐに使えます。
しかしgentooのパッケージマネージャであるportageは、基本的にプログラムのソースコードをダウンロードしてきて、自前でビルドしてバイナリ等を生成します。
ビルドには往々にして時間がかかるものですが、このやり方の何が良いかというと、CPUやシステムの設定に合わせて最適化されるので、実行が早くなったりします。
たぶん動画とかCGとかのあたりだとそれなりの差があるのではないでしょうか。
しかも、自分の環境に合わせて実行可能にするので、様々なCPUに対応しています。 あなたの使いたい環境、linuxカーネルさえ動けば大抵どこででもgentooは動きます。
(訂正: linuxでなくても動きます)
すなわち、gentooはどんな環境でも最適化された動作をできます。要は元気なんですね。

何とは言いませんが、元気なのは大好きです。まあ、おとなしいのも大好きですが。

賢い

ソースコードからビルドするというPMの性質上、「不要な機能はそもそも最初から含めない」ということすら可能です。
たとえば音楽プレイヤーについて考えてみるとします。
音楽ファイルには様々な形式があるわけですが、その中にはWavPackとかいう、普通の人は聞いたこともないような形式もあるわけです。
WavPackのファイルなんて見たことも聞いたこともないし絶対聞かねえよ! という人は、portageの設定でwavpackフラグを無効にすることで、 一部のアプリケーションでは本来は対応している場合でさえwavpackを対応を無効にできたりします。
これによってインストールされるパッケージ数は少なくなり、実行ファイルサイズは小さくなり、動作も高速になることが期待できます。
他の例としては、CD/DVDのサポートとかでしょうか。
普通はCDやDVDに対応していてほしいものですが、最近のノートPCにはDVDドライブの付いていないものもあり、 外付けDVDドライブ等を持っていない人々にとってCDサポートというのは不要な機能でしょう。
gentooならば、cdrフラグやdvd,dvdrフラグを無効にすることでそういった機能の存在しないバージョンで初めから無駄のないプログラムを作れます。

ここでは音楽ファイルとCD/DVDドライブを例に挙げましたが、実際のところ世の中には私達の知らない機能や、 有名ではあるけど場合によっては要らない機能(bluetoothとか無線とか)が数えきれないほどあるわけです。
逆に、特定の機能を有効にしたい場合だけ必要になるような補助プログラムなどもあります。
(極端な例ですが、デフォルトで無効になっている機能を有効化したい、というときgentooは他のディストリビューションに比べて非常に楽です。
参考: squid,dnsmasq,openresolv on gentooで幸せになろう)
portageは一度設定してしまえば、あとはビルドの度にそういった無駄な機能を削ぎ落とし、必要な機能はわざわざ指定せずとも自動で入れてくれます。
すなわち、gentooは賢いのです。

何とは言いませんが、賢いのは大好きです。

開発環境

アプリケーションをビルドする際に取得したソースコードは、次回以降のダウンロードを省略するためにローカルに保存されます。
また、自分でのプログラム開発に必要なファイル群(C言語のヘッダファイルなど)も、システムが必要としているため自動でインストールされます。
これはプログラミングしたい人にとっては大きなメリットです。
何か便利なライブラリを使っていたとして「あれ? この関数の挙動どうなってんだ?」「こんな機能どうやって実現してるんだ?」と思ったらすぐにソースコードを参照できるのです。 ブラウザを開く必要さえありばせん。
たとえばUbuntuなどバイナリしか利用しないディストリビューション(というかPM)では、ヘッダファイルなどビルド時に用いるファイルはデフォルトでインストールされないことが多く、 場合によってはhogeというパッケージだけでは足りず hoge-dev とか hoge-devel といったような別のものが必要になったりします。
(例: tmuxの導入方法 - SE街道まっしぐら)
gentooでは、初めから関連ファイルが入るので、こういう余計な手間が発生しません。
すなわち、gentooは開発者に優しい環境なのです。

何とは言いませんが、優しいのは好きです。

まとめ

何とは言いませんが、小さくて、やわらかくて、ロr成長の可能性を感じさせて、元気で、賢くて、優しいのは大好きです。
あとはジト目してくれれば最高なのですが、まあ今のままでも十分素晴らしいことには違いありません。 何とは言いませんが。



gentooのことですよ?



参考

補足

上で「linuxカーネルさえ動けば」と書きましたが、実はlinuxでなくても動きます。
簡単に言うと、あなたのUbuntuやMacが朝起きたらgentooになっている可能性もあります。

後半portage(パッケージマネージャ)の話になってきていることからもわかるように、gentooの †強さ† の結構な割合をportageが占めています。
ということは逆に、UbuntuやBSDやMacなどgentoo以外の環境でも、portageを使うことができれば、その強さを手に入れられるということでもあります。
そのためのプロジェクトにGentoo PrefixやGentoo/*BSDなどがあります。

では結局gentooとはportageのある環境のことなのかと思うかもしれませんが、必ずしもそうでもありません。
Gentooとは選択ですから、もちろんパッケージマネージャもportage以外が選択できます。
つまりportageが無くてlinuxでもないようなgentooもあり得るということです。
配布物をまとめたディストリビューションとして公開されていながら、実際にはその殆どが入れ替えでき対応環境も広いgentooは、 メタディストリビューションとも呼ばれます。
本当にgentooとは一体何なのか……