BSD界隈四方山話

第4回 FreeBSD 11からGNU roffをHeirloomへ変更

この記事を読むのに必要な時間:およそ 3.5 分

GNU groffを廃止してHeirloom DocToolsを導入 - FreeBSD 11

FreeBSDプロジェクトは2015年5月14日(協定世界時)⁠開発ブランチのメーリングリストに投函したメール[RFC] Replace gnu groff in base by heirloom doctoolsにおいて,FreeBSD 11を目処にベースシステムからGNU groffを排除し,代わりに「Heirloom Documentation Tools」の機能の一部をFreeBSDのベースにマージする計画を発表しました。

具体的には/usr/bin/にインストールされるgroff(1),mmroff(1),nroff(1),psroff(1),troff(1)がベースシステムから廃止され,かわりにHeirloom Documentation Toolsからnroff(1)およびtroff(1)コマンドが導入されるものとみられます。

図1 FreeBSD 10.1-RELEASEのユーザランドにマージされているroff系コマンド

% ll /usr/bin/ | grep roff
-r-xr-xr-x   1 root  wheel      60168 Dec 25 11:30 groff
-r-xr-xr-x   1 root  wheel       2975 Dec  1  2013 mmroff
-r-xr-xr-x   1 root  wheel       2573 Dec 25 11:30 nroff
-r-xr-xr-x   1 root  wheel        148 Dec 25 11:30 psroff
-r-xr-xr-x   1 root  wheel     470808 Dec 25 11:30 troff
%

図2 FreeBSD 10.1-RELEASEに統合されているgroff(1)コマンド

% /usr/bin/groff -v
GNU groff version 1.19.2
Copyright (C) 2004 Free Software Foundation, Inc.
GNU groff comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of groff and its subprograms
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

called subprograms:

GNU grops (groff) version 1.19.2
GNU troff (groff) version 1.19.2
%

GNU groffは主にroff形式のオンラインマニュアルのフォーマットに使われますが,FreeBSDプロジェクトはすでにその目的ではmandoc(1)と呼ばれるコマンドを導入して,その目的ではmandoc(1)を使っています。

今回,ベースシステムからgroff(1)を廃止するだけではなく,Heirloom Documentation Toolsからtroff(1)およびnroff(1)をインポートする背景には,mandoc(1)でレンダリングできなかった場合に代替として使えるコマンドとしてよりフィーチャーリッチなHeirloom Documentation Toolsは都合が良いこと,roffのフル機能を実装したコマンドをベースシステムにマージしておくことは,roff形式のドキュメントをよく使っているUNIX系のシステムにおいては都合が良いこと,などが理由として挙げられています。

GNU groff

GNU groffはroff形式のテキストをターミナル,PostScript,PDF,HTML,ASCII/UTF8などに変換するためのタイプセットシステムです。UNIX系のオペレーティングシステムでは長らくオンラインマニュアルをroff形式で作成していますので,このマニュアルの表示や変換のために使われてきました。それ以外にも書籍のテキストデータをroffで作成するといったことも行われてきました。

GNU groffは長らくさまざまなオペレーティングシステムで使われてきました。しかし,GNU groffはあるバージョンからライセンスがGPLv3へ移行したため,それ以降のバージョンはFreeBSDのベースシステムに取り込めなくなりました(パッケージからインストールするのは問題ありません。ベースシステムに同梱してデフォルトのコマンドにするには,GPLv3に変わったバージョンからは取り込めなくなりました)⁠

実際,FreeBSD 10.1-RELEASEのベースシステムに取り込まれているバージョンのベースになっているのはGNU groffはバージョン1.19.2,記事執筆段階でパッケージからインストールしたGNU groffのバージョンは1.22.2と,ベースシステムのGNU groffは古いままです。

図3 パッケージからインストールしたgroff(1)

% /usr/local/bin/groff -v
GNU groff version 1.22.2
Copyright (C) 2013 Free Software Foundation, Inc.
GNU groff comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of groff and its subprograms
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

called subprograms:

GNU grops (groff) version 1.22.2
GNU troff (groff) version 1.22.2
%

FreeBSDを高性能アプライアンスや組み込みデバイスで活用しているベンダは,ベースシステムにGPLv3のソースコードがマージされることを望んでいません。FreeBSDプロジェクトはベースシステムにGPLv3のソースコードをマージしない方針ですので,ベースシステムのGNU groffは古いままになり続けます。

ベースシステムのGNU groffはFreeBSD向けに移植されたものでフルセットではありませんし,バージョンも古いままです。このため,ベースシステムからGNU groffを排除することはロジカルな選択肢です。パッケージからインストールするGNU groffのほうがバージョンが新しくフルセットです。

コメント

コメントの記入