configure: error: liburcu-bp not found!
When you try to install glusterfs on a centos or a rhel machine you will be greeted with this upleasant error when you do ./configure on glusterfs source code while compiling it!
(Adding a quick blog to save your time if you end up in a situation where you see userspace-rcu already installed, yet see liburcu-bp not found error!)
[root@dhcp42-171 rhs-glusterfs]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... y
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for rpcgen... yes
checking for /etc/centos-release... no
checking for dlopen in -ldl... yes
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... none needed
checking whether yytext is a pointer... no
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking for bison... bison -y
checking for ld... /usr/bin/ld -m elf_x86_64
checking for MD5 in -lcrypto... yes
checking for pthread_mutex_init in -lpthread... yes
checking for dlopen... no
checking for dlopen in -ldl... (cached) yes
checking for rl_do_undo in -lreadline... yes
checking for gettext in -lintl... no
checking sys/xattr.h usability... yes
checking sys/xattr.h presence... yes
checking for sys/xattr.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/extattr.h usability... no
checking sys/extattr.h presence... no
checking for sys/extattr.h... no
checking openssl/dh.h usability... yes
checking openssl/dh.h presence... yes
checking for openssl/dh.h... yes
checking openssl/ecdh.h usability... yes
checking openssl/ecdh.h presence... yes
checking for openssl/ecdh.h... yes
checking for SSL_CTX_get0_param in -lssl... yes
checking for pow in -lm... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for UUID... yes
checking for uuid.h... yes
checking sys/acl.h usability... yes
checking sys/acl.h presence... yes
checking for sys/acl.h... yes
checking acl/libacl.h usability... yes
checking acl/libacl.h presence... yes
checking for acl/libacl.h... yes
checking openssl/md5.h usability... yes
checking openssl/md5.h presence... yes
checking for openssl/md5.h... yes
checking for adler32 in -lz... yes
checking linux/falloc.h usability... yes
checking linux/falloc.h presence... yes
checking for linux/falloc.h... yes
checking linux/oom.h usability... yes
checking linux/oom.h presence... yes
checking for linux/oom.h... yes
checking for strnlen... yes
checking for setfsuid... yes
checking for setfsgid... yes
checking for umount2... yes
checking whether /usr/bin/python3 version >= 2.6... yes
checking for /usr/bin/python3 version... 3.6
checking for /usr/bin/python3 platform... linux
checking for /usr/bin/python3 script directory... ${prefix}/lib/python3.6/site-packages
checking for /usr/bin/python3 extension module directory... ${exec_prefix}/lib64/python3.6/site-packages
checking for PYTHON... yes
checking for TLS_method in -lssl... yes
checking sys/epoll.h usability... yes
checking sys/epoll.h presence... yes
checking for sys/epoll.h... yes
checking for ibv_get_device_list in -libverbs... yes
checking for rdma_create_id in -lrdmacm... yes
checking whether RDMA_OPTION_ID_REUSEADDR is declared... yes
checking if python has ctypes support...... "yes"
checking for ZLIB... yes
features requiring zlib enabled: yes
checking for SQLITE... yes
checking for XML... yes
checking for curl_easy_setopt in -lcurl... no
checking openssl/hmac.h usability... yes
checking openssl/hmac.h presence... yes
checking for openssl/hmac.h... yes
checking openssl/evp.h usability... yes
checking openssl/evp.h presence... yes
checking for openssl/evp.h... yes
checking openssl/bio.h usability... yes
checking openssl/bio.h presence... yes
checking for openssl/bio.h... yes
checking openssl/buffer.h usability... yes
checking openssl/buffer.h presence... yes
checking for openssl/buffer.h... yes
checking execinfo.h usability... yes
checking execinfo.h presence... yes
checking for execinfo.h... yes
checking for malloc_stats... yes
checking for struct stat.st_atim.tv_nsec... yes
checking for struct stat.st_atimespec.tv_nsec... no
checking for linkat... yes
checking for clock_gettime in -lrt... yes
checking argp.h usability... yes
checking argp.h presence... yes
checking for argp.h... yes
checking for gcc __atomic builtins... yes
checking for gcc __sync builtins... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for llistxattr... yes
checking for fdatasync... yes
checking for fallocate... yes
checking for posix_fallocate... yes
checking for copy_file_range... yes
checking for utimensat... yes
checking whether SEEK_HOLE is declared... yes
checking for accept4... yes
checking for paccept... no
checking for /etc/debian_version... no
checking for /etc/SuSE-release... no
checking for /etc/redhat-release... yes
checking for TIRPC... yes
checking whether gcc accepts -Werror=format-security... yes
checking whether gcc accepts -Werror=implicit-function-declaration... yes
checking if compiling with clang... no
checking for readline in -lreadline -lcurses... yes
checking for readline in -lreadline -ltermcap... yes
checking for readline in -lreadline -lncurses... yes
checking for io_setup in -laio... yes
checking for URCU... no
checking urcu-bp.h usability... no
checking urcu-bp.h presence... no
checking for urcu-bp.h... no
configure: error: liburcu-bp not found
[root@dhcp42-171 rhs-glusterfs]#
What you are actually missing in this case is a userspace-rcu-devel package!
Resolution 1:
Install with rpm:
Look for userspace-rcu-devel rpm as per your OS version from any of the repositories,
download it.
Use:
# rpm -i /path/to/downloaded_file/userspace-rcu-devel.xyz.rpm
Resolution 2:
Source installation:
# git clone https://github.com/urcu/userspace-rcu.git
# cd /userspace-rcu
# ./bootstrap
# ./configure
# make
# make install
# ldconfig
Comments
Post a Comment