はじめに
macからlinuxへnfsマウントしてsublime textでファイルを編集する際に困ったことがあったのでメモ。
困った内容
以前macからlinuxへnfsマウントをする記事を書いた。
Mac OS XでCentOSに入れたsamba経由でのアクセスが遅いのでNFSにしてみるメモ(exports, mount_nfs, diskutil unmount)
上記の記事でやりたいことはこれ
困ったこと
保存時に毎回
Has changed on disk. Do you want to reload it?
とダイアログが出る
キャプチャ的にはこんな感じ
- 毎回reloadしろと言われてしまう
対応前の設定
詳細は前回記事リンクを見てもらうとして、今回に関係ありそうな設定のみにフォーカス
linux側
/etc/exportsの設定
# /etc/exports /mnt/hoge 172.23.83.0/24(rw,insecure,no_root_squash,sync)
mac側
mac側でマウントするときのコマンド(とオプションとか)
# sudo mount_nfs -P 10.33.87.216:/mnt/hoge /Volumes/nfs01
対応
こちらに関しては前回の①、②よりさらに何が効いたかの確信が薄かったのですが、
exportsファイル内のsyncに関する設定をしてみたら出なくなりました。
※ ②の記事と合わせてsyncの設定を変更 # sudo vi /etc/exports ---- vi編集 ---- /mnt/hoge 172.23.83.0/24(rw,insecure,all_squash,anonuid=1105,anongid=1105,async) ----------------
syncに関して参考
http://linuxjm.sourceforge.jp/html/nfs-utils/man5/exports.5.html
なぜsyncを変えようと思ったか
sublime textでとあるファイルAを開いてるとき、
他の誰かがファイルAを編集したり、今回の場合であればlinuxサーバにsshで入って直接ファイルAを編集しても同様のreloadが起こる。
nfsでの保存が遅いためにsublime textでの保存タイミングと
nfs先のlinuxでの保存リクエスト受付のタイミングが異なったりしてる?とかいろいろ考え
上記参考サイトのこの一文のあたりが怪しいと思った
このオプションは NFS サーバを NFS プロトコルに違反させ、 あるリクエストによってなされた変更が安定した保存場所 (例えばディスクドライブ) に渡される前に、 そのリクエストに応えるようにする。
対応追記
上記のsyncについても変えたものの、どうやらsublime textの設定が怪しい。
疑ったところ①
sublime textの基本設定 > 基本設定 - ユーザ
でこのあたりのtrue/falseを変えて何度か試してみた
"ignoreChanged": true,
どこでこの設定いれたか忘れたけど、、もしかしたらこんな設定ない?、、、かも汗
疑ったところ②
今回、nfs先のlinuxで扱っているファイルエンコードがutf-8以外である。
shift-jisやeuc-jpを扱うために、プラグインのConvertToUTF8
とCodecs33
を入れている。
どうやらこいつが怪しい。結構本命。
プラグインではおおよそこんな処理を行っているらしい。
shift-jisのファイルを選択(開く)
↓
開く時にutf-8に変換
↓
なんか修正
↓
ファイルを保存
↓
shift-jisにconvertして保存
sublime textでふつうに保存したあと、
sublime textがnkf的に保存したファイルに対してconvertしてる?とすると
確かに他のBさんが変更/保存した的な感じになっちゃいますね。
思い切ってプラグインを削除
思い切ってプラグインを削除してエンコード変換を行わなくしたら
こちらのダイアログが出なくなりました。
やっぱりこいつなんですかねぇ。。。
でもそれはそれで毎回nkfとかで編集したファイルをエンコード変換ってめんどくさい。。。
が、このreloadが出なくなるって問題が解決すればこの記事の本題はクリアなので
エンコード問題はまた別で。。
関連の記事
- Mac OS XでCentOSに入れたsamba経由でのアクセスが遅いのでNFSにしてみるメモ(exports, mount_nfs, diskutil unmount)
- macからnfsマウントしてlinux(centos)のファイルをsublime textで保存/編集したときに困ったことメモ① - 激重い
- macからnfsマウントしてlinux(centos)のファイルをsublime textで保存/編集したときに困ったことメモ② - 一定時間経つと毎回パスワードを聞かれる(exportsのall_squash,anonuid,anongidで対応してみる)
- macからnfsマウントしてlinux(centos)のファイルをsublime textで保存/編集したときに困ったことメモ③ - 保存するたびに'Has changed on disk. Do you want to reload it?'と言われる
まとめ
syncとasyncを変えて
等々を繰り返してるうちに起こらなくなってしまったので
本当に対応はコレか?という感じはあるのですが
sync周りの設定をいじってるときに直ったので何かの手がかりになればとメモりました
(><)
SJISやEUC-JPの文字化けが気にならないで修正できる場合は
思い切ってプラグインのCodecs33
とConvertToUTF8
を消しちゃうのはありかもです。
インストールも1分とかでしなおせますしね。