2016-08-16 :-)
_ [NetBSD][SSL][ルート証明書]SSL ルート証明書をインストールする
% cd /usr/pkgsrc/security/mozilla-rootcerts % make install clean clean-depends % mozilla-rootcerts install
ここに入る
/etc/ssl/certs/ca-certificates.crt
ref.
_ [NetBSD][go][golang][SSL][ルート証明書]go(golang) の NetBSD での SSL ルート証明書の位置
コードで決め打ちされているので
/usr/pkgsrc/lang/go/work/go/src/crypto/x509/root_bsd.go
package x509 // Possible certificate files; stop after finding one. var certFiles = []string{ "/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly "/etc/ssl/cert.pem", // OpenBSD "/etc/openssl/certs/ca-certificates.crt", // NetBSD }
リンクなどしてテキトーに合わせる。
% ln -s /etc/ssl/certs/ca-certificates.crt /etc/openssl/certs/ca-certificates.crt
2017-09-02追記
pkgsrc でインストールすると NetBSD が追加されてるので上記 ln は不要。
var certFiles = []string{ "/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly "/etc/ssl/cert.pem", // OpenBSD "/etc/openssl/certs/ca-certificates.crt", // NetBSD "/etc/ssl/certs/ca-certificates.crt", // NetBSD }
_ [pkgsrc][golang][go][NetBSD]lang/go をインストールする
手順
pkgsrc/lang/go で make install するだけ。
エラー時
なんだが、途中でエラーになった。ログがこれだけしか出ないので何が原因なのか分からんかったんだがググると同じ現象のひとがいた ( Go build exits with "signal: killed" - Getting Help - Go Forum ) ようするにメモリ不足が原因ではあった。
% cd /usr/pkgsrc/lang/go % make => Bootstrap dependency digest>=20010302: found digest-20160304 ===> Checking for vulnerabilities in go-1.6.3 ===> Building for go-1.6.3 cd /usr/pkgsrc/lang/go/work/go/src/syscall && env GOOS=netbsd GOARCH=amd64 /usr/pkg/bin/perl mksyscall_solaris.pl syscall_solaris.go syscall_solaris_amd64.go > zsyscall_solaris_amd64.go cd /usr/pkgsrc/lang/go/work/go/src && env GOROOT_BOOTSTRAP=/usr/pkg/go14 GOROOT_FINAL=/usr/pkg/go /usr/pkg/bin/bash ./make.bash ##### Building Go bootstrap tool. cmd/dist ##### Building Go toolchain using /usr/pkg/go14. bootstrap/internal/obj bootstrap/internal/obj/arm bootstrap/internal/obj/arm64 bootstrap/internal/obj/mips bootstrap/internal/obj/ppc64 bootstrap/internal/obj/x86 bootstrap/asm/internal/arch bootstrap/asm/internal/flags bootstrap/asm/internal/lex bootstrap/asm/internal/asm bootstrap/asm bootstrap/compile/internal/big bootstrap/internal/gcprog bootstrap/compile/internal/gc go build bootstrap/compile/internal/gc: /usr/pkg/go14/pkg/tool/netbsd_amd64/6g: signal: killed bootstrap/link/internal/ld bootstrap/link/internal/amd64 bootstrap/link/internal/arm bootstrap/link/internal/arm64 bootstrap/link/internal/mips64 bootstrap/link/internal/ppc64 bootstrap/link/internal/x86 bootstrap/link go tool dist: FAILED: /usr/pkg/go14/bin/go install -v bootstrap/...: exit status 1 *** Error code 2 Stop. make[1]: stopped in /usr/pkgsrc/lang/go *** Error code 1 Stop. make: stopped in /usr/pkgsrc/lang/go
golang を git clone してきてビルドしても同様の現象となるので pkgsrc が原因ではない。
ちなみに go をソースからビルドするときは GOROOT_BOOTSTRAP を設定しておくだけでよい。もちろんあらかじめ go1.4 が必要。( go1.5 以降は go をビルドするために go が必要なのである )
% GOROOT_BOOTSTRAP=/usr/pkg/go14 ./all.bash
対処
- swap を増やす
- tmp も増やす
swap を増やす ("out of memory" 対策)
dmesg を見ると分かる。
UVM: pid 9181.1 (6g), uid 0 killed: out of swap UVM: pid 22202.1 (6g), uid 0 killed: out of swap UVM: pid 6389.1 (6g), uid 0 killed: out of swap
よって swap を増やす(http://www.netbsd.org/docs/misc/#adding-swap)
% dd if=/dev/zero bs=1m count=2048 of=/home/swap % chmod 600 /home/swap % swapctl -a -p 1 /home/swap
tmp を増やす ("no space left on device" 対策のため)
golang をビルドすると以下のようなエラーとなる。
# cmd/trace /home/rin/work/go/pkg/tool/netbsd_amd64/link: flushing $WORK/cmd/trace/_obj/exe/a.out: write $WORK/cmd/trace/_obj/exe/a.out: no space left on device
$WORK ってどこだよ。$WORK は /tmp だった。
% GOROOT_BOOTSTRAP=/usr/pkg/go14 /usr/pkg/go14/bin/go build -work WORK=/tmp/go-build862075801
というわけで tmp を増やす。一時的には mount しなおせばよい。恒久的には fstab に書いておく。
当初は 64MB
tmpfs /tmp tmpfs rw,-m=1777,-s=67253760
500MB に増やした
tmpfs /tmp tmpfs rw,-m=1777,-s=524288000
_ [NetBSD][mackerel]NetBSD で mackerel-agent を使う
mackerel-agent は NetBSD 対応しているので手順通りやるだけ。予め golang をインストール済みであること。
https://github.com/mackerelio/mackerel-agent
ビルド時に golang の場所を GOPATH で指定するんだが、ここに書き込むらしい。システムワイドに使うなら気にせずインストール済みの golang の場所( pkgsrc なら /usr/pkg/go )を指定すればよい。それが嫌なら golang を取得しておく。たぶん GOPATH で指定した golang を使うと思うのでインストール済みの golang と mackerel が使う golang は別々だろう。たぶん
% git clone https://github.com/golang/go.git
以下手順通り。
取得
% git clone https://github.com/mackerelio/mackerel-agent.git
構築
GOPATH で golang の場所を指定する。
% GOPATH=~/work/go make build % GOPATH=~/work/go make test
apikey を設定
apikey は管理画面にある。
https://mackerel.io/orgs/<アカウント名>?tab=apikeys
設定ファイルは任意の場所でよい。
% mkdir /usr/pkg/etc/mackerel-agent/ % vim /usr/pkg/etc/mackerel-agent/mackerel-agent.conf
ファイルの中身はこれ。
apikey = "<YOUR_API_KEY>"
起動
% ./build/mackerel-agent --conf=/usr/pkg/etc/mackerel-agent/mackerel-agent.conf