Request for classic confinement: juicefs

Hello everyone,

I am currently working on building JuiceFS into a snap package using this repository: https://github.com/juicedata/juicefs-snapcraft. However, this process requires the use of classic confinement. Could anyone assist me by reviewing this request?

JuiceFS is a cloud-based file system that supports a variety of access interfaces, including posix-fuse, s3 gateway, webdav, and the hdfs API.

The primary reason for our need to use “classic” confinement is due to the mount mode (posix-fuse) that JuiceFS commonly utilizes. This mode requires full access to the file system, which includes allowing users to specify any location as the mount point or cache directory.

I appreciate your time and assistance in this matter.

Hi, as per the Process for reviewing classic confinement requests, a snap which is requesting the use of classic confinement must fit within one of the supported categories. From what I can see your snap does not appear to match with one of the existing categories, however if you believe that it does, can you please provide more details.

Thank you, @alexmurray! I appreciate the information you shared. After going through your insights and exploring similar tools like Restic on the Snap store, I’ve noticed some parallels with JuiceFS.

Regarding the confinement: classic requirement, I’ve observed that JuiceFS and Restic share a commonality in providing a flexible mount function, allowing users to choose their preferred mount path on the host machine. Despite their differences in technical architecture and use cases, they exhibit similar functionalities:

  1. Both JuiceFS and Restic serve as storage and backup tools, relying on public cloud object storage as the underlying storage layer.
  2. They both offer a POSIX-FUSE access interface, which justifies the request for confinement: classic.

Hi @alexmurray, could you help me review it again?

Restic was actually one of the apps that triggered the creation of the system-backup interface so backup applications do not need classic anymore, this in turn was the reason this type of apps was removed from the “supported” list on:

See:

Which resulted in:

Thank you @ogra, I have packaged juicefs in strict mode.

By the way, how can I modify the snapcraft.yaml file so that users can execute “juicefs mount” to mount a cloud-based file system onto a specific directory on the host?

FYI: A typical mount command for JuiceFS is:

juicefs mount redis://192.168.1.88/1 /media/myjfs

Where “redis://192.168.1.88/1” is the metadata engine for the file system, and “/media/myjfs” is a mount point on the host.

I see the latest revision of juicefs successfully published under strict confinement. If everything is working properly, I will proceed to remove this request from our review queue.

Have you visited Commands and aliases | Snapcraft documentation?

Yes, this request can be closed now.

Thank you for providing the reference link, although it didn’t solve my problem, I will look for a solution elsewhere.