0

fusefs-osx 0.7.0 gem をインストールしましたが、サンプル スクリプトがマウントされません。hello.rb と yamlfs.rb を試してみました。スクリプトは中断せず、マウント ポイントの Finder アイコンがマウントされたディスクに変わりますが、コンテンツにアクセスできません。「ls」を実行すると、「入出力エラー」が発生します。

ruby プロセスで lsof を実行すると、gem の fusefs_lib.bundle と /opt/local/lib/libfuse_ino64.2.dylib がロードされていることがわかります。「/dev/fuse0」もリストに含まれています。

lsof も次のエラーを返します。

lsof: WARNING: can't stat() fusefs file system /fusefs/rb_hello
      Output information may be incomplete.
      assuming "dev=2d00000b" from mount table

「マウント」コマンドが表示されます(ユーザー名は省略されています):

ruby@fuse0 on /fusefs/rb_hello (fusefs, nodev, nosuid, synchronous, mounted by ...)

スクリプトを ctrl-C すると、ポイントを手動でアンマウントする必要があります。

システム情報:

Leopard 10.5.8
ruby enterprise 1.8.7-2011.03 (i386 only)
libfuse 2.7.3 installed via Macports

システムルビーにもgemをインストールしようとしましたが、同じ結果が得られました。

Google は、この問題に関する結果を明らかにしませんでした。

4

1 に答える 1

0

さて、gemのextディレクトリをざっと見て、fuse-pythonスクリプトのlsof出力を調べた後、回避策を見つけました。基本的に、私は次のようにextconf.rbを編集しました。

$ diff extconf.rb.orig extconf.rb

3c3
< if have_library('fuse_ino64') || have_library('fuse') 
---
> if have_library('fuse') 

次に、以下を実行します。

make clean
ruby extconf.rb
make

次に、fusefs_lib.bundleをlibディレクトリにコピーします。gemは常にextdirからロードされるため、これは実際には必要ありません。

SnowLeopardにはino64バージョンが必要だとどこかで読んだと思います。

于 2011-05-27T19:48:47.420 に答える