1 |
Fuse version 0.07 |
2 |
================= |
3 |
|
4 |
Fuse is combination of Linux kernel module and user space library which |
5 |
enables you to write user-space filesystems. This module enables you to |
6 |
write filesystems using perl. |
7 |
|
8 |
Additional file-systems using Fuse module are released on CPAN using Fuse:: |
9 |
namespace. Currently that includes only Fuse::DBI which allows you to mount |
10 |
database as file system, but there will be more. |
11 |
|
12 |
This is a pre-production release. It seems to work quite well. In fact, I |
13 |
can't find any problems with it whatsoever. If you do, I want to know. |
14 |
|
15 |
Support for FreeBSD is experimental, so expect tests to fail. |
16 |
|
17 |
INSTALLATION |
18 |
|
19 |
To install this module type the standard commands as root: |
20 |
|
21 |
perl Makefile.PL |
22 |
make |
23 |
make test |
24 |
make install |
25 |
|
26 |
|
27 |
DEPENDENCIES |
28 |
|
29 |
This module requires the FUSE C library and the FUSE kernel module. |
30 |
See http://fuse.sourceforge.net/ |
31 |
|
32 |
If you intend to use FUSE in threaded mode, you need a version of Perl which |
33 |
has been compiled with USE_ITHREADS. Then, you need to use threads and |
34 |
threads::shared. |
35 |
|
36 |
|
37 |
COPYRIGHT AND LICENCE |
38 |
|
39 |
This is contributed to the FUSE project by Mark Glines <mark@glines.org>, |
40 |
and is therefore subject to the same license and copyright as FUSE itself. |
41 |
Please see the AUTHORS and COPYING files from the FUSE distribution for |
42 |
more information. |
43 |
|
44 |
|
45 |
EXAMPLES |
46 |
|
47 |
There are a few example scripts. You can find them in the examples/ |
48 |
subdirectory. These are: |
49 |
|
50 |
* example.pl, a simple "Hello world" type of script |
51 |
|
52 |
* loopback.pl, a filesystem loopback-device. like fusexmp from |
53 |
the main FUSE dist, it simply recurses file operations |
54 |
into the real filesystem. Unlike fusexmp, it only |
55 |
re-shares files under the /tmp/test directory. |
56 |
|
57 |
* rmount.pl, an NFS-workalike which tunnels through SSH. It requires |
58 |
an account on some ssh server (obviously), with public-key |
59 |
authentication enabled. (if you have to type in a password, |
60 |
you don't have this. man ssh_keygen.). Copy rmount_remote.pl |
61 |
to your home directory on the remote machine, and create a |
62 |
subdir somewhere, and then run it like: |
63 |
./rmount.pl host /remote/dir /local/dir |
64 |
|
65 |
* rmount_remote.pl, a ripoff of loopback.pl meant to be used as a backend |
66 |
for rmount.pl. |
67 |
|
68 |
|
69 |
BUGS |
70 |
|
71 |
At time of writing, Perl (5.8.7) did not support shared subroutine references. |
72 |
Symptoms include a cryptic error message like "Invalid value for shared scalar" |
73 |
from Fuse.pm. Until this is fixed, if you use threaded mode, you need to use |
74 |
symbolic references (i.e. passing "main::cb" instead of \&cb). This doesn't |
75 |
allow things like closures, lexical subs and that sort of thing, but it does |
76 |
work for me. |
77 |
|
78 |
The current test framework seems to work well, but the underlying mount/ |
79 |
unmount infrastructure is a crock. I am not pleased with that code. |
80 |
|
81 |
While most things work, I do still have a TODO list: |
82 |
* "du -sb" reports a couple orders of magnitude too large a size. |
83 |
* need to sort out cleaner mount semantics for the test framework |
84 |
* figure out how to un-linuxcentrify the statfs tests |
85 |
* test everything on other architectures and OS's |