自宅の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を入れろとか言われたらこれをやればよい。

2018/04/04加筆: ソースの位置は、Entware-ngがEntwareに改名されたのにあわせてこちらのドキュメントの記述されているので注意。

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

はまりポイントと回避法

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を作ろうとするとこける

解決策:シンボリックリンクを手で張る ⇒ ruby 2.5系になったときには治ったようだ、自動設定された

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回目

3回目

Nokogiriが入らない

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

2021/02/17追記