Open4

DragonFly BSD上に開発環境を作る

okuokuokuoku

Repology https://repology.org/project/mosh-scheme/versions 見たらDPortsに載ってることに気付いたのであわてて環境整備。

pkgsrc使ってたOSがpkgsrc辞めちゃうのってどういう要因があるんだろうね。。DragonFlyのDPortsはFreeBSD ports上に構築されているので、何もしなくても載ってしまう面はある。

okuokuokuoku

ベースシステムのインストール

まぁTUIなので簡単。微妙に不親切なのは:

  • インストーラから追加できるユーザは wheel に居ないので /etc/group を手編集する必要がある
  • 2つ目以降のifは /etc/rc.conf で直接セットアップする
okuokuokuoku

git が衝突する

普通にパッケージを導入しようとすると gitgit-lite が衝突してしまう。DragonflyBSDはFreeBSDよりも早くGitに移行していて、ベースシステムにgitが入っている。

pkg: git-2.37.1 conflicts with git-lite-2.37.1 (installs files into the same place).  Problematic file: /usr/local/bin/git

git-lite をuninstallすると警告されなくなる。。がこれで正しいのかは不明。

pkg uninstall git-lite
okuokuokuoku

ldconfig を一般ユーザで実行すると無限ループになる

ファイル名的に、 mktemp が返却する errno がバグってるんではないだろうか。。 truss コマンドで見てみると、

open("/var/run/ld-elf.so.hints.uaB7nO",0xa02,0600) ERR#17 'File exists'
open("/var/run/ld-elf.so.hints.vaB7nO",0xa02,0600) ERR#17 'File exists'
open("/var/run/ld-elf.so.hints.waB7nO",0xa02,0600) ERR#17 'File exists'

とりあえずビルドルールを変更して ldconfig 自体が実行されないようにしてしまった。

https://github.com/okuoku/yunibase/commit/5b7255ec26df162f7fcf564ff9572eb079568916