数字で比べる Arch と Gentoo

よく Arch と Gentoo は並べられることが多い。「初心者向けではない」といった文句で両者が使われるのをよく見る。そういう文章を読むとまるで兄弟みたいだけど、実態は違うのではないか?

そこで、様々な数字を使って比較をしてみます。まず、数字で分かるのは優劣ではなく、あくまで両者の性質が違っているということです。ディストリビューションは所詮色々なソフトウェアの寄せ集めというだけで、どれかが特別に優れているとかは全くないと思います。ただ、人によって好みが別れるだけです。

そして、筆者は Gentoo を使ったことがない (そして Arch 一筋) ので、Gentoo に関する記述は基本的に伝聞で眉唾であること、そして、一応分かりやすく数字を出しているが、単純に比較できない数字もあることに注意してください。

年齢

Arch: 13歳 vs. Gentoo: 13歳 (先代の Enoch も入れると16歳)

開発年数は同じです。どちらも2002年の3月に最初のバージョンがリリースされました。Arch が3月11日で Gentoo が3月31日なので、わずか20日分だけ Arch が年長となります。

誕生してからの知名度については、上の Google トレンドでわかるように最初は Gentoo が圧倒的に有名でした。段々と Gentoo が落ちていって、2011年のあたりで入れ替わっています。

人気度

Arch: 739 vs. Gentoo: 271

DistroWatch の各ディストリビューションのページのアクセス数による値です。Arch が倍以上多くの人に注目されている計算になります。

他に、定量的なディストリビューションの人気度を計算していたサイトとして DistroRank があります。こちらは大分前にサイトが消えており、かなり古いデータになりますが、検索エンジンの検索結果などの数字からランクを算出していました。

パッケージの数

Arch: 13634 vs. Gentoo: 18746

パッケージ数は Gentoo の方が5万ほど多くなっています。最初に単純に比較できない数字があると書きましたが、パッケージ数がまさにそれです。パッケージの数え方というのはディストリビューションによって大きく変わってきてしまいます。Gentoo では USE フラグによって実際のパッケージの中身を変幻自在にできる一方、Arch では普通、中身を変えるときは別のパッケージを作ります。

非公式なリポジトリとして Arch には AUR が、Gentoo には Overlay がありますが、Arch の AUR は半公式的存在で Arch のサーバー上でホストされているのに対し Overlay はそうではありません。ただし、Gentoo は Overlay を管理するツールが公式リポジトリに入っています。

どちらも Git ベースです。AUR は最近 AUR4 に移行して、メンテナのいないパッケージは削除され半数以上にパッケージが減っています (つまり今 AUR にあるパッケージは基本的にメンテナがいる)。Gentoo は公式リポジトリが新しく CVS から Git に移行して、GitHub でもホストされるようになりました。

パッケージマネージャのコマンド数

Arch: 61 vs. Gentoo: 111

Gentoo はパッケージマネージャが一つではありません。Portage 以外に Paludis と Pkgcore が存在します。その時点で、いわゆる Arch の "KISS" と Gentoo の "choice" の違いが分かる気がしますが 4、数字は Portage のものです。

pacman にはメインコマンドの pacman 以外に makepkg などが存在し、Portage には emerge 以外に repoman などが存在します。総じて、Portage は pacman よりも複雑ですが様々なことができ、逆に pacman は Portage よりも簡素ですが出来ることは限られるでしょう。

対応アーキテクチャ

Arch: 2 vs. Gentoo: 12

Arch は i686 と x86_64 しか対応していません。しかもエイプリルフールでしたが i686 の対応をやめるというアナウンスもありました。Arch Linux ARM はコミュニティによる移植です。i586 や PowerPC、MIPS などのアーキテクチャへの移植もありましたが、開発中止しています。

対して、Gentoo は公式であらゆるアーキテクチャをサポートしています。対応しているのは amd64, i486, Alpha, ARM, HPPA, IA64, PowerPC, PowerPC, S/390, sh, SPARC, MIPS です。既に開発・生産が終了しているアーキテクチャもあります。ハードウェアのアーキテクチャだけでなく FreeBSD など他のオペレーティングシステムへの移植も活発です。

パッケージのバージョンが最新である割合

Arch: 62% vs. Gentoo: 28%

ソフトウェアの上流 (開発元) と比べてバージョンがどれくらい違うのかを調べていた OSWatershed (今はサイト停止しています) からのデータです。Arch は大抵1週間以内に最新バージョンにパッケージがアップデートされています (カーネルなどの重要なパッケージは別)。

Arch Linux は他のディストリビューションと違って Out-of-Date フラグというのがウェブサイトに存在します。上流よりバージョンが古いとメンテナに通知できるシステムです。つまり、基本的に Arch Linux のパッケージは最新であることが保証されています。これは AUR も同じです。バージョンを古いままにしておくなら何らかの理由が必要とされます。ただの怠惰ならメンテナが変えられます。

また、Arch ではサポートが切れたソフトウェアはリポジトリから排除されています。例えば GTK+1 は公式リポジトリから AUR に移動されました。Gentoo では GTK+1 も含まれています。

開発者数

Arch: 35人 vs. Gentoo: 238人

Gentoo の方が大所帯で、Arch とは桁が違います。パッケージの数ほどの違いはないため、Arch の方が一人で大量のパッケージを管理できているということであり、逆に Gentoo では一つのパッケージに多くの労力が割かれているはずです。開発者の変動は両方とも去年と比べて微減か横這いでした。

ちなみに Arch も Gentoo も創始者は既にコミュニティから去っており、Gentoo の Daniel Robbins は Microsoft に移籍して Funtoo を興し、Arch の Judd Vinet は Google に移籍するふりをしてチアリーダーになりました。

ユーザーベースの規模を示す値としては、他に Arch と Gentoo に共通して存在する Wiki とフォーラムのユーザー数で比較ができます。ただし、コミュニティの場についてはそれぞれの規定が違うため単純な数字比較は難しく、また Gentoo の Wiki は作成されたのが最近です。フォーラムのユーザー数・投稿数は Gentoo の方が多く、Wiki のユーザー数・編集数は Arch の方が多いようです。ただし双方とも十分に巨大です。

Linux カーネルにあてられるパッチ

Arch: 1 vs. Gentoo: 8

Arch は出来る限りパッケージにはディストリビューション特有のパッチは適用しない方針です。確か前はカーネルのパッチは3つあったはずですが、いつの間にか1つにまで減っていました。Gentoo にはパッチがあてられていないカーネルの vanilla-sources がありますが、開発者からのサポートはありません。

Arch にあたっているパッチはデフォルトのログレベルを変更する一行のパッチです。gentoo-sources に適用されるのは様々なバグの修正や (Gentoo のデフォルト init である) OpenRC 対応のパッチなどのようです。

昔は Arch には Linux カーネルのパッケージが公式リポジトリに一つしかなく選択肢が存在しませんでしたが、近年になって長期サポート版の linux-lts を初めとして linux-grsec や linux-zen が追加されています。Gentoo は亜種としてセキュリティが強化された hardened-sources などが用意されています。

Arch のパッケージをパッチをあてない方針はあまり注目されないスローガンですが、基本的にパッチは上流でマージさせるべきで、それを出来るだけ早く下流で使えるように頑張ることがディストリの役割だということで、Arch の根本をなす大事な考えです。逆に Gentoo には初めからパッチをあてるのを支援する機構そのものがパッケージマネージャに組み込まれているのは重要な違いだと思います。

あとがき

この記事は Arch Linux Advent Calendar 2015 第二日目 (大遅刻) の記事です。カレンダーは突発的に作ってしまったのですが 2、他の方にも参加登録して頂けて感激しています。

数字による比較は前から暖めていたネタで、Arch と Gentoo の比較でソースコードベースとバイナリベースを説明するなんてもう何億何千万回もされているでしょうから他の方法を使いたかったのです 3。パフォーマンスのベンチマーク比較は Phoronix でよく見ます。Arch や Gentoo というディストリビューションではそういった計測結果はほとんど意味がないと思うので 1、メモリ使用量の比較などはここでは載せませんでした。

ただ、下調べ不足で、パッケージ数については実際に入っているソフトウェアの数で比較とか、ソフトウェアのジャンルごとの数で比較とか色々やりたかったアイデアはありました。けど大変なので諦念。

脚注
  1. 構成でいくらでも変わるから。Gentoo はカーネルのオプションを必要最低限にまで減らして、ソフトウェアのコンパイラオプションを極限まで最適化できるとうたわれるけど、最近のカーネルではモジュールの数によるオーバーヘッドはないみたいだし、コンパイラオプションの (Arch のデフォルトである) -O2 と (GCC の最適化オプションの最高値である) -O3 に有意な差はない。そんなとこを気にするくらいならもっと動作が軽くなるソフトウェアの選別とかハードウェアドライバーの設定に時間をかけたほうがいい。そもそも Arch でも PKGBUILD → makepkg の流れで自由に自分で設定できるし Debian 系みたいにヘッダファイルを -dev パッケージに分割もしてないしね。ディストリビューションのベンチマークの結果はそれぞれの用途の向き不向きの違いで、普通のデスクトップ PC として使うならどのディストリビューションでもいい (と思う)。そんなことよりはやく Vulkan が Linux に来て欲しい。

  2. 最初は二日目は Arch 使用時のドキュメントについて書くつもりでしたが、十分なネタがありませんでした。突発的に作ったから仕方ない。

  3. ソースベースといっても Gentoo にもバイナリとして用意されているパッケージがあり、バイナリベースの Arch にもソースコードからコンパイルするパッケージが AUR にありますからね (AUR の全てのパッケージがソースからビルドするわけではありませんが)。ただ、実際に調べてみると、Gentoo の方が大きい数字ばかりで、あまり面白い読み物にはならなかったかも……。

  4. Arch には AUR を扱うための yaourt などのラッパーがありますが、pacman と全く同じ操作系統です。Gentoo は実装もオプションも統一されていません。