cryfs icon indicating copy to clipboard operation
cryfs copied to clipboard

[Feature Request] Offer binaries in all platforms for easier use.

Open mhogomchungu opened this issue 1 year ago • 4 comments
trafficstars

Expected Behavior

  1. Download page to offer binaries for all supported platforms so that a user can simply download a binary for their platform and start using it.

  2. Each downloadable binary should be in a zip archive or default archive format for each platform.

Actual Behavior

Binary package is provided for windows only and it is hidden behind an installer making it harder to automate downloading and extraction.

mhogomchungu avatar Sep 13 '24 15:09 mhogomchungu

It's somewhat complicated to distribute binaries for different operating systems, including dependencies. Package managers like apt are much better than that and CryFS is part of the major repositories. An alternative might be to use distribution formats like flatpak, but those tend to have problems with fuse because they isolate the app and don't allow the necessary interactions with the kernel.

smessmer avatar Sep 18 '24 00:09 smessmer

I patched CryFS to make it not link with libcurl when "CRYFS_UPDATE_CHECKS" is set to false and a reported library dependency is like below.

If you can static link OpenMP(is it possible?) then you will have a binary with minimum and unavoidable list of library dependency.

ps: I think CryFS should not link with libcurl is above option is set to off.

[ink@localhost bin]$ ldd cryfs
        linux-vdso.so.1 (0x00007fff06701000)
        /usr/$LIB/libgtk3-nocsd.so.0 => /usr/lib64/libgtk3-nocsd.so.0 (0x00007f372836e000)
        libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00007f37282f4000)
        libfuse.so.2 => /usr/lib64/libfuse.so.2 (0x00007f37282b6000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f3728000000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f3727f1f000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3728289000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3727d3f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f372837a000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3728282000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f372827d000)
[ink@localhost bin]$ 

mhogomchungu avatar Sep 18 '24 07:09 mhogomchungu

ps: I think CryFS should not link with libcurl is above option is set to off.

Agreed, this is already implemented in https://github.com/cryfs/cryfs/commit/9b878c7159c66e868eea6c9803b6859e01f8c63c.

The default distribution version would still have update checks and security vulnerability checks enabled though, otherwise they'd be pointless.

smessmer avatar Sep 18 '24 23:09 smessmer

An alternative might be to use distribution formats like flatpak, but those tend to have problems with fuse because they isolate the app and don't allow the necessary interactions with the kernel.

It will simply not be able to work from within flatpak and this is by flatpak design. Fortunately, flatpak has made it possible to "escape" the sandbox using flatpak-spawn.

The above means there is no benefit of providing a flatpak package because the binary will run outside the sandbox and will be subjected to the conditions of the host environment.

mhogomchungu avatar Oct 03 '24 10:10 mhogomchungu