# 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.
# 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
# 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.*