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

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

Gentoo だけれど、バイナリパッケージで配布されているもの

Gentoo では、ソースコードからビルド(コンパイル、リンク)する、が原則です。 しかし、Gentoo でも、バイナリのパッケージはあります

バイナリのパッケージの多くは、パッケージ名が -bin で終わっています。 試しに、eix (app-portage/eix) で検索してみると

$ EIX_LIMIT=0 eix -\# -- -bin$ | wc -l
91

91 個あるようです。 ちなみにコマンドの意味を説明しておくと、

  • EIX_LIMIT=0
    • eixはデフォルトでは表示パッケージ数を50個に制限しているので、制限を解除するための変数を渡す(厳密には、eixは、パイプに投げるときではこの制限をしないので、上記の例では不要ですが)
  • -\#
    • -# はパッケージ名だけを表示するためのオプション。ただしシェルでは#はエスケープする必要がある
  • --
    • 次に書く検索パターンがハイフンで始まるため、これがオプションでないことを明示するため(検索パターンを工夫してハイフンで始まらないようにすれば不要ですが)
  • -bin$
    • 検索パターン(regular expression 、いわゆる「正規表現」で)。-binで終わっているパッケージ名がマッチする
  • | wc -l
    • eixの結果をwcに渡して、ライン数を表示させる

プロプライエタリ・ソフトウェア

そもそもフリーソフトウェアどころかオープンソースですらない(プロプライエタリの)ソフトウェアは、バイナリのものをインストールするしかありません。 Gentoo は、プロプライエタリのインストールも禁止はしていません*1

利用許諾条件のせいで、インストールするバイナリファイルも再配布不可能なこともあります。そうするとミラーリング*2も不可能ですから、公式からダウンロードするしかありません。

ちなみに、公式からダウンロードしてインストールさせる ebuild ファイルを配布すれば済むというところが Gentoo のよさですね*3

プロプライエタリのパッケージの例を挙げれば、dev-java/oracle-jdk-bin *4www-client/google-chromewww-plugins/adobe-flash があります。

コンパイルに物凄く時間がかかるソフトウェア

コンパイルに時間が異様にかかる場合には、ビルド済パッケージも提供していることあります。 その多くは、ソースコードからビルドするのか、ビルド済バイナリをインストールするのか、ユーザ側が選べます(というか、選ばねばなりません)。

その場合でも、製作元の公式バイナリをインストールするものと、Gentooでビルドしたバイナリをインストールするものがあります。 ちなみに、equery w -e [package] | less でもして ebuild ファイル本体を読めば、どちらなのかは明らかです*5

製作元がバイナリも配布しているとき

公式が配布しているビルド済のものをインストールするパッケージもあります。 例えば app-emulation/virtualbox-binwww-client/firefox-bin がそうです。

Gentoo 側でビルドして配布しているもの

例えば app-office/libreoffice-bin がそうです。

USE フラグでバイナリを指定するパッケージ

ほかに、パッケージ名ではなく USE フラグでバイナリ版を選べるようになっているパッケージもあります

試しに、USEフラグにbinaryを含んでいるパッケージを eix で検索してみると

$ eix -\# -U binary
app-doc/pms
dev-haskell/gtk
dev-haskell/gtk3
dev-haskell/nats
dev-java/sbt
dev-lang/ghc
dev-lang/mlton
dev-lang/scala
dev-php/pecl-memcached
dev-php/pecl-redis
net-im/vacuum
sys-apps/hwdata-gentoo
sys-firmware/seabios
sys-firmware/sigrok-firmware-fx2lafw
sys-firmware/vgabios

となります。

ただしこれらは単に、USEフラグにbinaryがあるというだけです。「バイナリをダウンロードしてインストールする」という意味とは異なる意味で binary というUSEフラグをもつパッケージもあります

そこで正真正銘にビルド済バイナリをダウンロードしてインストール可能なパッケージの例を挙げると、dev-lang/ghc(Haskellの、The Glasgow Haskell Compiler) や dev-lang/scala (Scalaコンパイラ等) がそうです。

それでもバイナリ配布しないパッケージ

他方で Gentoo では、コンパイルに時間がかかるものでも、バイナリで配布しないパッケージもあります。

例えば Linux カーネルがそうです。

ちなみに、Gentoo 系のディストリビューションでも、例えば Funtoo にすればビルド済カーネルを配布しています( http://www.funtoo.org/Package:Debian-sources )。これもやはり、 USE フラグで binary がある形態のパッケージです。

他に例えば、GCC (sys-devel/gcc) や WebKit (net-libs/webkit-gtkdev-qt/qtwebkit) も、コンパイルに時間がかかる(マシンに依っては丸一日かかる)のに、ソースコードからコンパイルです。

それでも Gentoo を導入しやすい時代になった

近年は、コンピュータが高速・大容量化しましたので、コンパイルにかかる時間は一般的に短くなっています。 つまり、昔に比べればずっと、 Gentoo を導入しやすい時代になったということです。

しかも、Google ChromeFirefox などの一部のウェブブラウザや、 LibreOfficeOpenOffice のような一部の「オフィススイート」は、ビルド済バイナリをインストールすればよいわけです。

ただし依然として、カーネルGCCやライブラリなどではコンパイル必須ですから、古いパソコンに入れようと思ったら不向きですし、"Rapsberry Pi"のような低速マシンにも不向きです。 distccなどを用いてクロスコンパイルをすれば速くなりますが、難度は一般的に高いといえます。


この投稿は、

qiita.com

の8日めの記事です。

世界的には Gentoo ユーザは多いし、GentooGNU/Linux の操作習得や研究には向いている方ですが、日本のGentooユーザはそんなに少ないんでしょうか。

DistroWatch でスコアが低いのは、Gentooディストリビューションとしてのバージョンアップをほとんどしないからだと思います。 ユーザがいないわけでも、人気がないわけでも、ありません。

*1:Free Software Foundation 公認のディストリビューションのようにプロプライエタリを「リポジトリに入れない」「インストール不可能にする」ということを Gentoo はしていません

*2:Gentoo では通常は、source tarballなどをミラーサーバで再配布することで、公式からダウンロードするよりも速くしています。

*3:Ubuntu などでは、プロプライエタリのバイナリもリポジトリに入れて再配布しています。それは権利者と特別な契約を取り交わしているからです。

*4: 旧Sun Micro Systems (現 Oracle)の Java SE Development Kit

*5:equery は app-portage/gentoolkit に入っています。