Rclone's use of fusermount is under GPL2 license

What is the problem you are having with rclone?

Currently rclone uses FUSE to mount storage in local file system.

It uses the program fusermount to configure the mount point. However fusermount(libfuse/util at master · libfuse/libfuse · GitHub) is under GPL2 license per libfuse/LICENSE at master · libfuse/libfuse · GitHub

This use of fusermount which is under GPL creates a distribution issue of installing rclone with fuse as it creates a restriction of copyleft license of derivative work over rclone+fuse.

rclone does dynamically links into libfuse(user mode callbacks) to interact with kernel which is covered under LGPL2.1 license.

Question is : Is there a way to do way with fusermount and use some way like using sudo mount to setup the mounts.

Run the command 'rclone version' and share the full output of the command.

[opc@tools ~]$ rclone --version
rclone v1.61.1

  • os/version: oracle 8.6 (64 bit)
  • os/kernel: 5.4.17-2136.314.6.2.el8uek.x86_64 (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.18.4
  • go/linking: dynamic
  • go/tags: none

Which cloud storage system are you using? (eg Google Drive)

Oracle Object Storage

The command you were trying to run (eg rclone copy /tmp remote:tmp)

# /etc/fstab entry
ip:test /home/opc/shared/mounta rclone rw,auto,nofail,_netdev,x-systemd.automount,args2env,config=/home/opc/.config/rclone/rclone.conf,vvv,log_file=/home/opc/rclonefstab.txt 0 0

The rclone config contents with secrets removed.

type = oracleobjectstorage
provider = instance_principal_auth
namespace = manoj-xxxx
compartment = ocid1.bucket.oc1.phx.xxxxxxxxxxxxxxxx
region = us-phoenix-1
storage_tier = Standard
no_check_bucket = true

A log from the command with the -vv flag

2023/03/22 18:46:29 DEBUG : rclone: Version "v1.61.1" starting with parameters ["/sbin/mount.rclone" "mount" "ip:test" "/home/opc/shared/mounta" "--config=/home/opc/.config/rclone/rclone.conf" "--log-file=/home/opc/rclonefstab.txt" "--verbose=4" "--daemon"]
2023/03/22 18:46:29 DEBUG : Using fallback PATH to run fusermount
2023/03/22 18:46:29 DEBUG : Creating backend with remote "ip:test"
2023/03/22 18:46:29 DEBUG : Using config file from "/home/opc/.config/rclone/rclone.conf"
2023/03/22 18:46:30 DEBUG : rclone: Version "v1.61.1" starting with parameters ["/usr/bin/rclone" "mount" "ip:test" "/home/opc/shared/mounta"]
2023/03/22 18:46:30 DEBUG : Creating backend with remote "ip:test"
2023/03/22 18:46:30 DEBUG : Using config file from "/home/opc/.config/rclone/rclone.conf"
2023/03/22 18:46:30 INFO  : oos:bucket test: poll-interval is not supported by this remote
2023/03/22 18:46:30 DEBUG : oos:bucket test: Mounting on "/home/opc/shared/mounta"
2023/03/22 18:46:30 Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount": executable file not found in $PATH
2023/03/22 18:47:30 DEBUG : Daemon timed out. Terminating daemon pid 943222
2023/03/22 18:47:30 Fatal error: mount not ready

Rclone doesn't come with fusermount it's part of the OS so I'd say however you are licensing the OS should work.

Except if you use the docker image where we distribute fusermount but as part of the Alpine Linux OS.

sometimes, fusermount is not part of the OS, for example in oracle linux, we have to install it explicitly. yum install -y fuse.x86_64.

not sure if that unfortunately qualifies as rclone+fusermount distribution issue and any top level aggregation work that uses the combination.

Fuse is only required if you use a mount as any fuse based file system requires fuse.

If you aren't mounting, you don't need fuse. Many Linux distros you'd have to install fuse to use a fuse based mount.

I have asked for clarification and requested libfuse owners that fusermount be released under LGPL2.1 license for distribution simplification terms at Clarification on Licensing of LGPL vs GPL portion · Issue #752 · libfuse/libfuse · GitHub

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.