# Slackware 13.37, 14.0, 14.1: fuse 2.8.5
# Slackware 14.2: fuse 2.9.5
# Check 'patches' for updates
#
# Slackware-current (will be 15.0) includes a 'fuse3' package
# Prerequisites:
!! # Ninja
!! # Python 3.x (for Meson and to test it)
# Linux kernel >= 2.6.14 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.
# A previous update to this HOWTO (in 2011) 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-2.9.9.tar.gz && mv installed/fuse-2.9.9.tar.gz .
test ! -f fuse-2.9.9.tar.gz &&
wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/\
fuse-2.9.9.tar.gz
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "fuse-[12].*" -exec rm -r {} \;
tar xzvf ~/fuse-2.9.9.tar.gz
cd fuse-2.9.9
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.
# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man
# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./configure --prefix=/usr --mandir=/usr/man
# Build it
make
# Become root to install it
su
# Remove the Slackware package, if there is one
test -x /sbin/removepkg && /sbin/removepkg fuse
# Install it
make install
ldconfig
# If you have the /etc/rc.d/init.d/fuse 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.fuse instead and run that out of rc.local
test -x /etc/rc.d/init.d/fuse &&
( 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/fuse S34fuse )
( cd rc0.d ; ln -sf ../init.d/fuse K41fuse )
( cd rc6.d ; ln -sf ../init.d/fuse K41fuse ) )
# 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-[12].*.tar.*
mv fuse-2.9.9.tar.gz 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
umount -a -t fuse
rmmod fuse
test -x /sbin/removepkg && /sbin/removepkg fuse
test -d src/fuse-* &&
( cd src/fuse-2.99 ; make uninstall )
( cd /etc/rc.d/
rm -f rc1.d/S34fuse rc0.d/K41fuse rc.d/rc6.d/K41fuse )
( cd /usr/bin/
rm -f fusermount ulockmgr_server)
( cd /usr/include/
rm -f fuse.h ulockmgr.h )
test -d /usr/include/fuse && rm -r /usr/include/fuse
( cd /usr/lib/
rm -f libfuse.* libulockmgr.* )
test -d /usr/lib64 &&
( cd /usr/lib64/
rm -f libfuse.* libulockmgr.* )
( cd /usr/man/man1/
rm -f fusermount.1 ulockmgr_server.1 )
rm -f /etc/init.d/fuse \
/etc/udev/rules.d/99-fuse.rules \
/sbin/mount.fuse \
/usr/lib/pkgconfig/fuse.pc \
/usr/lib64/pkgconfig/fuse.pc \
/usr/man/man8/mount.fuse.8 \
/usr/sbin/mount.fuse \
## Note: libfuse is part of the aaa_elflibs|aaa_libraries 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.*