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