kubo39's blog

ただの雑記です。

DMD on FreeBSD

だいたいこの記事のとおりなんだけど、細々と補足をしておく。

まず選定したFreeBSDのboxの話。最初はfreebsd/FreeBSD-11.0-STABLEのboxを試していたのだけど、これは毎度VMが突然シャットダウンしてしまって使い物にならなかったためにfreebsd/FreeBSD-11.0-RELEASE-p1を使うことになった。ログも一応目を通したが原因はさっぱり不明。これはけっこう時間を喰ってしまった。

いったんFreeBSDを入れてしまうと案外楽に環境構築はできた。記事中のbash/gcc/curlもpkgでバイナリで手軽にインストールできた他、gitやzshemacs-nox11もあっさりバイナリインストールして既存のLinux環境とだいたい同じような環境を構築できた。まったく同じというわけにはいかずGNU toolとBSD toolにはオプションの差異があるが(lsやnmなど)、そこはmanを見ながら地道に解決していくしかない。

portsのセットアップもNetBSDOpenBSDに比べるとずっと簡単で、だいたいここの通りにやれば解決する。というかOpenBSDportsのmakeがX11に依存してるのおかしいでしょ、X11がなんか壊れたのでportsが機能しなくなってしまったんだよなあ。

D言語環境の構築は公式の提供しているバイナリインストーラを使ったのは元記事に追記しているとおりportsのlang/dmd2がやや古いバージョンであったため。ていうか最新のportsにはまだlang/dmd1が入ってる。最新版のdmd-2.073.0に比べ2017年1月27日時点でのlang/dmd2は2.071.1であった。バイナリインストーラは引数にldcgdcも受け付けられるので他のコンパイラFreeBSDで簡単に動かせるかもしれない。

ところでこの公式インストーラで入るdub、libphobos2.072.2.soに動的リンクしているため、さらにdmd-2.072.2をダウンロードしてdmd-2.073.0より先にactivateするようにして運用している。これはバグなんだろうか。

D言語環境を構築したので https://github.com/kubo39/syscall-d とか https://github.com/kubo39/tiny-d-demo といったプログラムを試しにFreeBSD上でも動くように修正してみた。このあたりはわりと簡単に動かせる状態にできた。