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:

Source link

# git clone https://github.com/urcu/userspace-rcu.git

# cd /userspace-rcu

# ./bootstrap

# ./configure

# make 

# make install

# ldconfig




Comments

Popular Posts