GNU groffを廃止してHeirloom DocToolsを導入 - FreeBSD 11
FreeBSDプロジェクトは2015年5月14日
具体的には/usr/
% 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 %
% /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形式のオンラインマニュアルのフォーマットに使われますが、
今回、
GNU groff
GNU groffはroff形式のテキストをターミナル、
GNU groffは長らくさまざまなオペレーティングシステムで使われてきました。しかし、
実際、
% /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を高性能アプライアンスや組み込みデバイスで活用しているベンダは、
ベースシステムのGNU groffはFreeBSD向けに移植されたものでフルセットではありませんし、
Heirloom Documentation Tools
Heirloom Documentation Toolsはtroff(1)、
% pkg which /usr/local/bin/troff /usr/local/bin/troff was installed by package heirloom-doctools-0.0.080407_1 % pkg which /usr/local/bin/nroff /usr/local/bin/nroff was installed by package heirloom-doctools-0.0.080407_1 %
メーリングリストに投函されたRFCでは、
- CDDLやBSDライセンスで提供されているためベースシステムにマージしやすい
- 主にC言語で記述されている
- 実装がオリジナルのAT&T版のマクロから派生している
- GNU groffよりもサイズが小さい
- GNU groffよりもUnicodeのサポートが優れている
- GNU groffよりも優れたエラーメッセージを出力してくれる
- GNU groffのマニュアルと比べHeirloom Documentation Toolsのマニュアルはmandoc(1)でフォーマットしやすい
今のところ大きな問題点は見つかっていないようなので、
BSDライセンスのコマンド
FreeBSDプロジェクトの初期の段階ではGNUプロジェクトから提供されているソフトウェアの多くがベースシステムにマージされましたが、
FreeBSDプロジェクトはOpenBSDプロジェクトやNetBSDプロジェクトで開発されたBSDライセンスベースのコマンドや、
パッケージやPorts Collectionからインストールするソフトウェアは基本的にサードパーティが出しているコードをそのまま利用すればよいのですが、
プロジェクト自前のコマンドを開発するのはOpenBSDプロジェクトなどで特に活発です。OpenBSDではこれまでサードパーティ製のソフトウェアをマージしていたものでも、
これまで次のコマンドがBSDライセンス版へ置き換わっています。
- /usr/
bin/ cpio - /usr/
bin/ diff - /usr/
bin/ tar
/usr/
GNU grepは最も置き換えが困難なコマンドの一つです。bsdgrepというBSDライセンス版の実装が存在しているものの、
サードパーティ製ソフトウェア
パッケージやPorts Collectionなどからインストールされるサードパーティ製ソフトウェアは/usr/
大雑把に分けて次のようにインストールが実施されます。
ファイルの種類 | パス |
---|---|
バイナリ | /usr/ /usr/ |
設定ファイル | /usr/ |
ライブラリ | /usr/ |
マニュアル | /usr/ |
ドキュメントほか | /usr/ |
ヘッダファイル | /usr/ |
/usr/
% pkg which /usr/local/bin/ld /usr/local/bin/ld was installed by package binutils-2.25 % pkg which -o /usr/local/bin/ld /usr/local/bin/ld was installed by package devel/binutils %
ベースシステムとサードパーティ製ソフトウェアは明示的に別の領域にインストールされます。こういった仕組みにすることで、