Closed doronbehar closed 5 years ago
Correct, I am afraid rar2fs only supports fuse2. It is a rather huge undertaking to move from fuse2 to fuse3 and currently there is no plan for adding support for the latter either. But most systems should be providing fuse2 as a fall-back alternative? The two versions can co-exist without conflict. That was intentional and a prerequisite for fuse3 since otherwise a lot of file system would break and stop working since the two APIs are not compatible.
What options did you provide to configure? Did you intentionally point it to the fuse3 headers?
Can you also check in /usr/include
if there is a fuse3
and a fuse
folder there? There should be a fuse.h
header directly under /usr/include
that simply includes fuse/fuse.h
(which is fuse2). A user should explicitly use the fuse3 path unless the fuse2 API is required. The library should not be an issue since they are named differently, libfuse.so
vs. libfuse3.so
. The configuration script provided by rar2fs only looks for libfuse.so
. So please check that you have both fuse2 and fuse3 installed on your system, or else this is not going to work.
Here on Arch Linux, there are now 2 packages for the fuse library - fuse2
and fuse3
. fuse2
owns the file /usr/include/fuse.h
. There is an AUR package for your software, (not maintained by my) and it says that fuse3
is a dependency so I guess the maintainer should be notified. I was able to successfully compile this package with fuse2
as a dependency with no other ./configure
flags.
So how does the recipe in Arch Linux look like? Does it explicitly add —with-fuse=/usr/include/fuse3? Otherwise it does not make sense since rar2fs configure uses /usr/include by default and looks for fuse.h which normally includes fuse/fuse.h.
In any way, the problem seems related to distro packaging and not the rar2fs package itself.
I've tried adding —with-fuse=/usr/include/fuse3
and then I got the error message I reported initially. And yes it's a distro issue. I see this issue as solved unless you'd like to keep it open for tracking the development of the migration to fuse3.
Of course, adding --with-fuse=/usr/include/fuse3
would/should not work since that results in wrong header being picked up. I assume this is the error Arch Linux introduced recently, otherwise it would have worked. I will most likely close this issue, migrating to fuse3 is not something that will happen very soon, if ever. Can you inform the maintainer on Arch Linux about the flaw in their setup?
Reported.
Great, thanks! Will keep the issue open for a while longer for follow up on the Arch Linux progress.
Looks like Arch Linux is using configure correctly.
build() {
cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr --sbindir=/usr/bin --with-unrar=../unrar
make
}
I.e. they get a statically linked libunrar.
They do not seem to point the build to some alternative fuse path which makes me believe the fuse installation on Arch Linux is done wrong somehow. The fuse3 package should never be possible to pick up by mistake if installed correctly since it should use dedicated paths and names for libraries and utilities.
Not sure how this could ever have failed to configure since by default the fuse3 package in Arch Linux does not install /usr/include/fuse.h
(which then includes /usr/include/fuse/fuse.h
).
There however seems to be an error in the fuse-common 3.3.0-1
package, since it claims to be common for both fuse2 and fuse3, which is not entirely correct since it installs mount.fuse
only and seems to be linked to the fuse3 library!? The fuse3 package should install mount.fuse3
, not mount.fuse
which is supposed to be the fuse2 version of the tool. But the latter does not explains why rar2fs fails to build out of the box unless the system was modified in some way.
@hasse69 the original ./configure
command of the Arch Linux package works fine. It failed because it had fuse3
as dependency. As for fuse-common
I don't know what to tell you but it doesn't have to do anything with this non-issue.
Fine, but a package dependency would only make a build from Arch Linux sysroot to fail since it might not have the necessary fuse2 files. A build from an already installed system should not fail as long as fuse2 is installed properly. Also, the error you got indicates something more is broken here since if it were only related to a bad dependency, you should get another error, specifically that fuse.h
could not be found.
Another problem I see here is that even if they change dependency to fuse2, if fuse2 and fuse3 is not installed properly rar2fs might fail in run-time, as one already reported on their website for mount.fuse
. Only indirectly related to rar2fs since it would affect any fuse2 based file system that is started through e.g. /etc/fstab
and the mount-helper.
Will close this issue since I do not think there is much more to add?
I get an error with fuse3 installed when I
./configure
, here is the relevant part fromconfig.log
:Does it mean rar2fs works only with fuse2 now?