libfuse3
should be compiled with the threaded runtime (-threaded
).This package depends on the C library libfuse and pkg-config
. Please install them with your system package manager before building this package. For example, on Ubuntu:
sudo apt-get update && sudo apt-get install libfuse3-dev fuse3 pkg-config
NOTE: libfuse3-dev
is not available until Ubuntu-20.04 (a.k.a. "focal").
NOTE2: Not to be confused with libfuse-dev
(whose version is 2.x). It can coexist with libfuse3-dev
, but it is incompatible with this package.
This packages uses the ./configure
script, but it is not checked into the git repository. To build the source checked out from git, you must generate it from configure.ac
before invoking any of the cabal
commands:
autoreconf -fiv
# cabal v2-build, etc.
You may have to install autotools
or something like that with your system package manager.
There are two examples, null
and passthrough
in the example
directory. These are the ports of the examples in the official libfuse. They should be good start points for writing your filesystems.
Enable the cabal flag to build them:
cabal v2-configure --flags=examples
kill -2 <pid>
twice or hit Ctrl-C
twice (if running in foreground).fusermount3 -u
can unmount the filesystem on the first attempt.struct fuse_conn_info
. The availability of filesystem capabilities such as FUSE_CAP_HANDLE_KILLPRIV
can't be checked.struct fuse_file_info
from the certain fuse operations.TODO
comments in the source tree for more specific topics.If you are able to fix/implement any of these, that would be very appreciated! Please open a PR to contribute.
libfuse3
is based on HFuse
(with massive rewrites).libfuse3
has more complete API and exposes internal (and unstable) API to allow workarounds.fuse-rs
implements the FUSE protocol itself, mostly reimplementing libfuse
in Rust. See its README for overview.