fuse3 - Filesystem in Userspace ChangeLog

HOWTO


# FUSE3
# =====
# Slackware-current (will be 15.0) includes a 'fuse3' package

# Prerequisites:
# Ninja
# Python 3.x (for Meson and to test it)
# Linux kernel with FUSE enabled
# udev

# Kernels > 2.6.14 already contain FUSE support, so the kernel module in the
# FUSE package will not be compiled if you have a newer kernel installed.

# See the README if you use a 2.4.x kernel

# If you ever want to uninstall FUSE, or if you want to clean up files
# from old versions before installing a new one, skip down to the bottom.
# The previous update to this HOWTO (5 years ago) let FUSE install in to
# /usr/local, but I use the /use prefix now to match Slackware's package.

# Install Meson
su -c "pip3 install meson"

# Get it
cd
test -f installed/fuse-3.10.4.tar.xz && mv installed/fuse-3.10.4.tar.xz .
test ! -f fuse-3.10.4.tar.xz &&
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.10.4/\
fuse-3.10.4.tar.xz

# Verify tarball w/ sha256sum:
echo "9365b74fd8471caecdb3cc5adf25a821f70a931317ee9103d15bd39089e359\
0d  fuse-3.10.4.tar.xz" | sha256sum -c

# Verify tarball w/ gpg:
( gpg --list-keys 3C4E599F > /dev/null 2>&1 || gpg --recv-keys 3C4E599F ) &&
wget -nc https://github.com/libfuse/libfuse/releases/download/fuse-3.10.4/\
fuse-3.10.4.tar.xz.asc &&
  gpg --verify fuse-3.10.4.tar.xz.asc &&
   rm fuse-3.10.4.tar.xz.asc

# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "fuse-*" -exec rm -r {} \;
tar xJvf ~/fuse-3.10.4.tar.xz
cd fuse-3.10.4
test $UID = 0 && chown -R root:root .

# For info about using it, see ./README.md, the kernel module's readme:
#   /usr/src/linux/Documentation/filesystems/fuse.txt
# and the Wiki:
#   https://github.com/libfuse/libfuse/wiki

# Everything is set up by default to install an init script as
# /etc/init.d/fuse and run update-rc.d (if it exists, which it doesn't),
# to create the start/stop symlinks.  In Slackware, typically
# /etc/init.d is a symlink to the /etc/rc.d/init.d directory.  So, as long
# as you've got Slackware's /etc/rc.d/rc.sysvinit script, and it's
# executable, and you have at least the following directories created:
#   /etc/rc.d/init.d
#   /etc/rc.d/rc0.d
#   /etc/rc.d/rc1.d
#   /etc/rc.d/rc6.d
# ...and have the /etc/init.d symlink created, then you should be fine with
# 'make install' below.  Otherwise you may want to look in to changing
# configure.ac or the Makefile(s).  ...or remove /etc/init.d/fuse and
# /etc/init.d (if empty) and copy util/init_script as /etc/rc.d/rc.fuse,
# which would be run by /etc/rc.d/rc.S on boot-up if it's executable.

# Create a build directory
mkdir build
cd build

# Make it a Meson build directory
meson setup .. .

# List configuration options, if you need to change anything
# It should already know to use lib64 if 64-bit
meson configure

# Change some options
meson configure -Dprefix=/usr -Dinfodir=info -Dmandir=man -Dsysconfdir=/etc

# Build it
ninja

# Become root to test and install it
su

# Test it
pip3 install --upgrade pytest
python3 -m pytest test/

# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg fuse3

# Install it
ninja install
ldconfig

# If you have the /etc/rc.d/init.d/fuse3 script, make sure the
# start/stop symlinks are set up.  This requires a Slackware with the
# /etc/rc.d/rc.sysvinit script.  If you don't have that, make it
# /etc/rc.d/rc.fuse3 instead and run that out of rc.local
test -x /etc/rc.d/init.d/fuse3 &&
( cd /etc/rc.d
   mkdir -p init.d rc0.d rc1.d rc6.d
   test ! -e /etc/init.d && ln -sf /etc/rc.d/init.d /etc/init.d
   ( cd rc1.d ; ln -sf ../init.d/fuse3 S34fuse3 )
   ( cd rc0.d ; ln -sf ../init.d/fuse3 K41fuse3 )
   ( cd rc6.d ; ln -sf ../init.d/fuse3 K41fuse3 ) )

# If FUSE is set up as a module, load the module manually, or let
# udev do it automagically
test -f /lib/modules/$(uname -r)/kernel/fs/fuse/fuse.ko &&
/sbin/modprobe fuse

# Become your non-root user again
exit

# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/fuse-*.tar.*
mv fuse-3.10.4.tar.xz installed/


# If you ever want to uninstall FUSE, this should do it:
# ('make uninstall' or recently 'ninja uninstall' as root in the
# configured source directory should do it, the rest is just in case or
# if you don't have the source)
cd
su
test -x /sbin/removepkg && /sbin/removepkg fuse
test -d src/fuse-* &&
( cd src/fuse-*
   make uninstall
   test -d build && cd build && ninja uninstall )
for pfx in /usr /usr/local;
do
  ( cd ${pfx}/bin
    rm -f fusermount ulockmgr_server )
  ( cd ${pfx}/include
    test -d fuse && rm -r fuse
    test -d fuse3 && rm -r fuse3
    rm -f fuse.h ulockmgr.h )
  test -d ${pfx}/lib &&
   ( cd ${pfx}/lib
     rm -f libfuse.* libfuse3.* pkgconfig/fuse.pc pkgconfig/fuse3.pc )
  test -d ${pfx}/lib64 &&
   ( cd ${pfx}/lib64
     rm -f libfuse.* libfuse3.* pkgconfig/fuse.pc pkgconfig/fuse3.pc )
  ( cd ${pfx}/sbin
    rm -f fusermount3 mount.fuse mount.fuse3 )
done
rm -f /dev/fuse /etc/fuse.conf /etc/init.d/fuse3 /etc/rc.d/rc.fuse \
/lib/udev/rules.d/99-fuse.rules /lib/udev/rules.d/99-fuse3.rules \
/usr/man/man1/fusermount3.1 \
/usr/man/man8/mount.fuse3.8
## Note: libfuse is part of the aaa_elflibs package, so you'll still
## have that in /lib
ldconfig
exit
find ~/src -maxdepth 1 -type d -name "fuse-*" -exec rm -r {} \;
rm -f ~/installed/fuse-*.tar.*

List of HOWTOs

Web page itself last updated: 2023-12-20 8:06pm (EDT -0400)
HOWTO last updated: 2021-08-08 12:40am
Copyright © 2001-2024 Jason Englander. All Rights reserved.
[HTML5]