sgan81 / apfs-fuse

FUSE driver for APFS (Apple File System)
GNU General Public License v2.0
1.8k stars 163 forks source link

fatal error: fuse3/fuse.h No such file or directory #87

Open RobbeHogent opened 5 years ago

RobbeHogent commented 5 years ago

I have downloaded the libfuse-dev package but I still get the error "fatal error: fuse3/fuse.h". Does this mean I have to manually install the fuse3 library? I thought it was included in the libfuse-dev package?

sgan81 commented 5 years ago

Either use FUSE 2 (configure with ccmake .) or install FUSE 3, probably something like libfuse3-dev

RobbeHogent commented 5 years ago

I had already tried to configure it with fuse 2 without success and now I tried to install libfuse3-dev but the package can't be found.

Banaanhangwagen commented 5 years ago

You might look over here: https://github.com/libfuse/libfuse/releases

sgan81 commented 5 years ago

You couldn't configure it for fuse 2? In the build directory, do the following:

  1. Execute cmake ..
  2. Execute ccmake .
  3. Navigate to USE_FUSE3, and if it is not set to OFF, hit enter
  4. Press c to configure
  5. Press g to generate Makefile and exit ccmake
  6. Execute make
RobbeHogent commented 5 years ago

No I couldn't because I did it like you described above, but it gave me an error that I should use fuse 3

sgan81 commented 5 years ago

Ah, so you are using a 32 bit system. Well I'm sorry, but due to 64 bit inode numbers, you need either a 64 bit system or FUSE 3. You could download and build fuse 3 manually. Version 3.1.1 is the last version not needing any special build tools like meson or ninja.

You could also just comment out that line complaining about fuse 3, but at your own risk. If your APFS volume has not been converted from HFS+, it should work. Otherwise, you might run into issue #76. I put that line about fuse 3 there for exactly that reason ...

RobbeHogent commented 5 years ago

I will probably try to build the libfuse 3lib. I'm actually trying to install this on a raspberry pi running on the raspbian os (indeed a 32 bit os) . Some say that it can also run 64 oses. Could it be an option to install a 64 bit os on the raspberry and then retry the installation?

sgan81 commented 5 years ago

Yes, that could be an option as well. Building FUSE 3 isn't too hard either.

RobbeHogent commented 5 years ago

Then I'll check that option first. Thanks for the help!

Iaxama commented 5 years ago

You couldn't configure it for fuse 2? In the build directory, do the following:

  1. Execute cmake ..
  2. Execute ccmake .
  3. Navigate to USE_FUSE3, and if it is not set to OFF, hit enter
  4. Press c to configure
  5. Press g to generate Makefile and exit ccmake
  6. Execute make

This worked for me. Maybe that option should be set to OFF by default as it would not compile if you just follow the installation instructions

AMDphreak commented 5 years ago

problem still exists.

Using Linux Mint:

ryan@ADATA-PC:~/apfs-fuse/build$ sudo apt search libfuse
i   libfuse-dev                     - Filesystem in Userspace (development)     
p   libfuse-dev:i386                - Filesystem in Userspace (development)     
p   libfuse-perl                    - Perl bindings for FUSE (Filesystems in USE
p   libfuse-perl:i386               - Perl bindings for FUSE (Filesystems in USE
i   libfuse2                        - Filesystem in Userspace (library)         
p   libfuse2:i386                   - Filesystem in Userspace (library)

This needs to be handled in the make script, no? Installation should make use of whatever fuse is installed when following the installation instructions. Otherwise the instructions are a big fat lie.

Also, ccmake . does not work, because it is not installed by default and is not included in the installation instructions.

ryan@ADATA-PC:~/apfs-fuse/build$ ccmake .

Command 'ccmake' not found, but can be installed with:

sudo apt install cmake-curses-gui
AMDphreak commented 5 years ago

You couldn't configure it for fuse 2? In the build directory, do the following:

1. Execute `cmake ..`

2. Execute `ccmake .`

3. Navigate to `USE_FUSE3`, and if it is not set to `OFF`, hit enter

4. Press `c` to configure

5. Press `g` to generate Makefile and exit ccmake

6. Execute `make`

If by

`c` to configure

they meant "write to file" then the ccmake app utterly failed to express their intentions in the command. Gotta love half-baked attempts at communication.

jivanpal commented 5 years ago

[...]

  1. Navigate to USE_FUSE3, and if it is not set to OFF, hit enter [...]

This worked for me. Maybe that option should be set to OFF by default as it would not compile if you just follow the installation instructions

Indeed, I also just had to do this on 64-bit Ubuntu 18.04, since libfuse-dev doesn't install the FUSE3 headers. +1 for making USE_FUSE3=OFF the default.

jivanpal commented 5 years ago

@sgan81 It really does just seem like the README needs updating; the binaries aren't even stored in bin, contrary to what the README says. Rather, they just end up directly under build, e.g. build/apfs-fuse.

LithiumH commented 5 years ago

For me installing libfuse3-dev installs the FUSE3 headers and I was able to successfully compile the project

changeling commented 4 years ago

Just hit this problem. It's a bit of a Catch 22, as the README states Fuse 3 is required for 32-bit, but, at least with Ubuntu, Bionic is the last release for 32-bit and Fuse 3 doesn't seem to be available for bionic. Has anyone found a way through this? (Going to look into building fuse 3, but hoping someone's already packaged it.)

meiying-ghost commented 4 years ago

apt-get install libfuse3-dev

changeling commented 4 years ago

@meiying-ghost "...Fuse 3 doesn't seem to be available for bionic..."

Or rather, libfuse3-dev is not an available package for bionic. i did get fuse 3 to build from source, but it's not simply an 'apt install' thing on bionic or previous 32-bit Ubuntu. Beyond 18.n, 32-bit isn't supported at all. It might be orth updating the README to state that on Ubuntu 32-bit, fuse3 must be built from source.

jivanpal commented 4 years ago

The libfuse-dev package is present in Ubuntu Bionic in the main repo. A simple sudo apt install libfuse-dev should work. If it doesn't, you can download a .deb package for i386 here. The FUSE3 libraries are not in the Ubuntu repos for any current version of Ubuntu.

changeling commented 4 years ago

@jivanpal This is a libfuse3 problem. That package doesn’t provide fuse3/fuse.h:

https://packages.ubuntu.com/bionic/i386/libfuse-dev/filelist

tuklusan commented 4 years ago

You couldn't configure it for fuse 2? In the build directory, do the following:

  1. Execute cmake ..
  2. Execute ccmake .
  3. Navigate to USE_FUSE3, and if it is not set to OFF, hit enter
  4. Press c to configure
  5. Press g to generate Makefile and exit ccmake
  6. Execute make

Bingo! Thanks Simon.

Deiiji commented 4 years ago

Libfuse3 is in Ubuntu disco and Debian buster

americo677 commented 4 years ago

Either use FUSE 2 (configure with ccmake .) or install FUSE 3, probably something like libfuse3-dev

Thank you sgan81!, Installing FUSE 3 with sudo apt install libfuse3-dev, worked out for me!. Great contribution this project!. Congratulations and thank you!.

jswhisperer commented 4 years ago

Ubuntu 20.04 needed sudo apt install libfuse3-dev and sudo apt-get install libbz2-dev

B1QUAD commented 3 years ago

This worked for me (Ubuntu/Pop! OS 20.10):

sudo apt install fuse3 && sudo apt install libfuse3-dev