Description of problem: Building and installing GlusterFS purely as a non-root user requires more options than './configure --prefix=$HOME/gfs'. It would be helpful to others if the documentation listed the exact flags needed for non-root builds and installs. Version-Release number of selected component (if applicable): Gluster v5.1 downloaded from Github tag v5.1: https://github.com/gluster/glusterfs/archive/v5.1.zip How reproducible: 100% Steps to Reproduce: non-root-user $ ./autogen.sh non-root-user $ ./configure --prefix=$HOME/gfs non-root-user $ make -j non-root-user $ make install Actual results: make[5]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p '/sbin' /usr/bin/install -c mount.glusterfs '/sbin' /usr/bin/install: cannot create regular file '/sbin/mount.glusterfs': Permission denied Makefile:426: recipe for target 'install-utilSCRIPTS' failed make[5]: *** [install-utilSCRIPTS] Error 1 Makefile:516: recipe for target 'install-am' failed make[4]: *** [install-am] Error 2 Makefile:462: recipe for target 'install-recursive' failed make[3]: *** [install-recursive] Error 1 Makefile:462: recipe for target 'install-recursive' failed make[2]: *** [install-recursive] Error 1 Makefile:468: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 Makefile:597: recipe for target 'install-recursive' failed make: *** [install-recursive] Error 1 Expected results: make[5]: Nothing to be done for 'install-exec-am'. /bin/mkdir -p "$HOME/gfs/sbin" /usr/bin/install -c mount.glusterfs "$HOME/gfs/sbin" ... # (install success) Additional info: I found no documentation online, or in the repository, for the correct number of steps: ./autogen.sh ./configure \ --prefix=$HOME/gfs \ --with-mountutildir=$HOME/gfs/sbin \ --with-initdir=$HOME/gfs/etc/init.d make -j make install This required me examining Makefile.in and eventually discovering the hard-codded '/' path prefix for mountutildir and initdir variables.
Building and Installing GlusterFS purely as a non-root user will work with these steps - ./autogen.sh ./configure \ --prefix=$HOME/gfs \ --with-mountutildir=$HOME/gfs/sbin \ --with-initdir=$HOME/gfs/etc/init.d make -j make install 1. However to run glusterfs and start glusterd you need to provide init scripts to systemctl. As initdir path is changed "initdir=$HOME/gfs/etc/init.d" systemctl will not able to locate it and fork it into the background as a daemon process. This requires changing env variable path to get the glusterd.service from a new location than default. If this is not done you cannot run 'gluster' commands. 2. Another thing is that mount.glusterfs script has to be in /sbin/mount.glusterfs for mounting via command mount -t glusterfs to work. Changing mountutildir path changes script location to $HOME/gfs/sbin/mount.glusterfs. Workarounds are there to manually change and use fstab resulting is unnecessary steps as compared to single mount command. 3. All the log files are placed in the /var/log/glusterfs directory by default(cli, glusterd, mount, fuse etc). running gluster commands from nonsuper user will result in error in creating all these log files unless triggered with sudo privileges. Providing Installing steps for non-root user in doc will result in confusion and overheads while using glusterfs. Based on above mentioned points I would like to close this bug.
That's fine. In my opinion the documentation should be more explicit that GlusterFS cannot run as a non privilidged user and requires some amount of group admin rights.
Its mentioned in docs https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#running-glusterfs