渡辺一寛です。

At Thu, 10 Aug 2006 22:05:05 +0900,
Daisuke wrote:
> www# ls -al /usr/local/bin/make
> -r-xr-xr-x  1 root  wheel  131904  3 31 19:53 /usr/local/bin/make
> 
> でしたので、シンボリックリンクではないかとおもいます。

これはシンボリックリンクでは「なくて」、実行バイナリのようですね。
それもgmakeの可能性があります。5.4-RELEASEのgmakeのバイナリパッケージ
であるgmake-3.80_2は、

ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/devel/gmake-3.80_2.tbz

等から入手できますが、次のようにファイルサイズが同じです。

$ tar jtvf gmake-3.80_2.tbz | grep gmake$
-r-xr-xr-x  0 root   wheel  131904 Apr  4  2005 bin/gmake
$

件の /usr/local/bin/make が gmake かどうかは、以下で述べるように実行し
てみればわかります。が、今回の場合さすがにいきなり実行するのは気が引け
ます。

そこで、上記バイナリパッケージを入手して適当な作業ディレクトリに展開し、
cmpコマンドでgmakeと比較してみたらどうでしょう。


> ># 流石に /usr/bin/make が gmake という状況は無いと思いますが、
> ># それも一応確かめたほうがよいかも知れません。
> 
> これも含めて、初歩的な質問ですが・・・
> 
> (1)/usr/bin/make が gmake かあるいはBSDmakeかどうかを知るにはどうすればい
> いのでしょうか?

いろいろ方法があると思いますが、適当な空のディレクトリに移動してから、
引数無しで実行してみたらどうでしょう。少なくともFreeBSDの場合、

$ /usr/bin/make
make: no target to make.

と出るのがBSD makeです。また

$ /usr/local/bin/gmake
gmake: *** No targets specified and no makefile found.  Stop.

と出るのがGNU makeです(-vオプションでバージョン表示もされます)。


> (2)/usr/local/bin/make と /usr/bin/make とmakeが2つあるのはなぜなので
> しょう?

わかりません(^^;。誰かが(正体不明の実行ファイルを) /usr/local/bin/make 
という名前で勝手に置いた可能性も否定できません。

# ので、いきなり実行するのは少し恐い。

個人的には、「make == GNU make」であることが前提の顧客(Linuxユーザ?) 
のために、サーバを提供している業者がカスタマイズしたのではないかと思っ
ています。

何にしろ、これはサーバを提供している業者に問い合わせるのが一番です。


> (3)portsから何かをインストールするとき、どっちのmakeを使っているのでしょ
> うか?

portsシステム自体、/usr/bin/makeを使って動作しています。また多くの(?)
ソフトウェアもコンパイルの際のmakeコマンドとしてこれを用います。

ソフトウェアによってはコンパイルにGNU makeを要求するものがあります。
その場合、もしインストールされていなければ自動的にGNU make(gmake)がイ
ンストールされるようになっています。
---
Watanabe Kazuhiro ([EMAIL PROTECTED])

メールによる返信