自宅のNASをLinux鯖として使うためのTips

もともとgarmy.jpは、さくらのVPSで運用していたのですが、 VPSを使う必要性のあることをあまりしなくなっていたこと、 Linuxサーバとしての運用に手間をかけられなくなってきたこと、 自宅のWin鯖をNAS箱に切り替えたので結構代替出来そうだ、 ということから、さくらのレンタルサーバ + NAS箱の鯖化を しようと思い立ちました。

で、Synology DSMにあるrubyを使おうとしたらgemsが上手く 再コンパイルできなかったので

ええい、メンドクサイ、それっぽいもの一式をマニュアルでいじれる ものを入れるぜ!という経緯でEntware-ngを使ったのです。

Entware-ngとは

NASとかの組み込み系でも使えるようなパッケージ管理ツール。 aptとかyumとかみたいなもの、だと思う。

ちなみに、はいってるパッケージ一覧はこちら。

導入と基本動作

Synology DS216j Entware-ng 導入 - 雑記帳 - JasminInfoにあるとおりやればうまく行く。

yumとかaptとかだと、ヘッダファイルが入ってるのはruby-develみたいな パッケージ名だけれど、Entware-ngはtar.gzを取ってきて展開!という かなり雑な展開なんで、他パッケージシステムを前提とした説明で、なんとか-develを入れろとか言われたらこれをやればよい。

あとは、パッケージシステムを普通に使ったことがあれば 個別のノウハウだけで対応できると思う。

はまりポイントと回避法

githubからコード持ってくること多いならhttps対応は必須

opkg install git-http にしないと「https扱えないよ」エラーではまる(そしてググると「ソースから作れ」ばかりでてくる)

rubyがらみあるある

gems使うなら、 ruby-enc-extra, ruby-openssl, ruby-mkmf あたりはたぶん必要になるし、 ruby-csvみたいなのも別導入だったりするのに注意。

rubyのunf_extってgemsが作れない

手でBuildして突っ込んだ(ようだ)

libruby.soがない

/opt/lib/libruby.so がなくてgemがNative Extensionを作ろうとするとこける

解決策:シンボリックリンクを手で張る

root@********:~# ls -l /opt/lib/
(snip)
lrwxrwxrwx 1 root root      25 Mar  5 01:21 libruby.so -> /opt/lib/libruby.so.2.4.0
lrwxrwxrwx 1 root root      16 May  6 16:17 libruby.so.2.4 -> libruby.so.2.4.1
-rwxr-xr-x 1 root root 2233240 Apr 19 21:03 libruby.so.2.4.1
root@********:~# rm /opt/lib/libruby.so
root@********:~# ln -s /opt/lib/libruby.so.2.4 /opt/lib/libruby.so
root@********:~# ls -l /opt/lib/
(snip)
lrwxrwxrwx 1 root root      23 May 14 01:24 libruby.so -> /opt/lib/libruby.so.2.4
lrwxrwxrwx 1 root root      16 May  6 16:17 libruby.so.2.4 -> libruby.so.2.4.1
-rwxr-xr-x 1 root root 2233240 Apr 19 21:03 libruby.so.2.4.1

以下、当時の作業記録

初回

2回目

Nokogiriが入らない

単に/opt/include下を見失ってるだけなので本家チュートリにあるとおりincludeのパスを指定