先日、リンクが作成出来ないことに起因してnpmやnpxでエラーが発生してしまいました。
一応、npm、npxコマンド実行時にオプションを付与することで回避できたのですが、、、
elsammit-beginnerblg.hatenablog.com
そもそも、
なんでリンク作成出来ないのだろうか?リンク作成出来るようにするための方法は?
が気になったので調査は継続していました。
原因と解決策が分かりましたので備忘録としてまとめておきます。
■原因
原因というほどのものではないのですが、、、
cifsファイルシステムのマウントを行う際に、
シンボリックリンクの作成を有効化するために明示的にオプションを付与する必要がある
とのことです。
自分の場合はnasでしたがsambaも同様で、
cifsファイルシステムの場合は全て該当します。
要するに、、
mount -t cifs ~~
でマウントした場合にはオプションの付与が必要になる。ということです。
では、なぜオプションを付与しないとシンボリックリンクが有効にならないのか?
こちらは調べたのですが具体的な理由が分からず。。。
cifsはwindowsのファイル共有サービスだからwindows以外のOSの場合には
デフォルトである程度制限かけているのでしょうか?
■対策
先ほど記載した通り、オプションを付与すればシンボリックリンクの作成が行えます。
このオプションですが、mfsymlinksオプションになります。
このmfsymlinksオプションをmountコマンド実行時に付与すればOKです。
例えば、、
mount -t cifs //ipaddr/pathes -o username=username,password=password,file_mode=0755,dir_mode=0755,mfsymlinks
といった形でコマンドを実行すればOKです。
これでマウントしたディレクトリにリンクの作成が行えるようになっているかと思います。
■(補足)cifsとは?
Common Internet File Systemの略。
WIndowsのファイル共有サービスで利用されるプロトコルであるSMBを拡張し、
Windows以外のシステムでも利用できるようにしたもの。
※SMB:Server Message Blockの略
参考資料:https://e-words.jp/w/CIFS.html
■最後に
今回はcifsファイルシステムに対してリンク作成を有効にするための方法をまとめました。
なぜオプションを付与して明示的にリンク作成を有効にしなければならないのか、理由までは正確に分かっていないのがはがゆい。。
もう少し頑張って調べます。