Error installing xgboost from source on linux

I am trying to install xgboost on RedHat Linux.
It looks like the key error is

make: *** No rule to make target `../..//amalgamation/xgboost-all0.o', needed by `xgboost.so'.  Stop.

I have a hard time troubleshooting compilation errors like the one I'm getting here so any general advice would be great. How do I know if this is a dependency issue on my system or a bug in the package?

Thanks!

> install_github("dmlc/xgboost", subdir = "R-package")
Downloading GitHub repo dmlc/xgboost@master
✓  checking for file ‘/tmp/Rtmp2H0RtM/remotes2dcd7e4a1cf2/dmlc-xgboost-6601a64/R-package/DESCRIPTION’ ...
─  preparing ‘xgboost’:
✓  checking DESCRIPTION meta-information ...
─  cleaning src
─  running ‘cleanup’
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  looking to see if a ‘data/datalist’ file should be added
─  building ‘xgboost_1.1.0.1.tar.gz’
   Warning: file 'xgboost/cleanup' did not have execute permissions: corrected
   Warning: file 'xgboost/configure' did not have execute permissions: corrected
   Warning: invalid uid value replaced by that for user 'nobody'
   Warning: invalid gid value replaced by that for user 'nobody'
   
Installing package into ‘/home/ablack/R/x86_64-pc-linux-gnu-library/3.5’
(as ‘lib’ is unspecified)
* installing *source* package ‘xgboost’ ...
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 Backtrace lib... 
checking for backtrace in -lexecinfo... no
checking endian... 
configure: creating ./config.status
config.status: creating src/Makevars
** libs
Makevars:17: -DXGBOOST_STRICT_R_MODE=1
Makevars:17: -DDMLC_LOG_BEFORE_THROW=0
Makevars:17: -DDMLC_ENABLE_STD_THREAD=1
Makevars:17: -DDMLC_DISABLE_STDIN=1
Makevars:17: -DDMLC_LOG_CUSTOMIZE=1
Makevars:17: -DXGBOOST_CUSTOMIZE_LOGGER=1
Makevars:17: -DRABIT_CUSTOMIZE_MSG_
Makevars:17: -DRABIT_STRICT_CXX98_
g++ -std=gnu++11 -I"/opt/R/3.5.1/lib64/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_  -I/usr/local/include  -fopenmp -DDMLC_CMAKE_LITTLE_ENDIAN=1 -pthread -fpic  -g -O2 -c xgboost_R.cc -o xgboost_R.o
g++ -std=gnu++11 -I"/opt/R/3.5.1/lib64/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_  -I/usr/local/include  -fopenmp -DDMLC_CMAKE_LITTLE_ENDIAN=1 -pthread -fpic  -g -O2 -c xgboost_custom.cc -o xgboost_custom.o
gcc -std=gnu99 -I"/opt/R/3.5.1/lib64/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_  -I/usr/local/include   -fpic  -g -O2  -c xgboost_assert.c -o xgboost_assert.o
gcc -std=gnu99 -I"/opt/R/3.5.1/lib64/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_  -I/usr/local/include   -fpic  -g -O2  -c init.c -o init.o
make: *** No rule to make target `../..//amalgamation/xgboost-all0.o', needed by `xgboost.so'.  Stop.
make: *** Waiting for unfinished jobs....
xgboost_custom.cc:5:29: fatal error: xgboost/logging.h: No such file or directory
 #include <xgboost/logging.h>
                             ^
compilation terminated.
xgboost_R.cc:2:26: fatal error: dmlc/logging.h: No such file or directory
 #include <dmlc/logging.h>
                          ^
compilation terminated.
make: *** [xgboost_custom.o] Error 1
make: *** [xgboost_R.o] Error 1
ERROR: compilation failed for package ‘xgboost’
* removing ‘/home/awblack@mmcf.mehealth.org/R/x86_64-pc-linux-gnu-library/3.5/xgboost’
Error: Failed to install 'xgboost' from GitHub:
  (converted from warning) installation of package ‘/tmp/Rtmp2H0RtM/file2dcd63b633a4/xgboost_1.1.0.1.tar.gz’ had non-zero exit status

Try installing from sudo R

Warning: file 'xgboost/cleanup' did not have execute permissions: corrected
Warning: invalid uid value replaced by that for user 'nobody'

That could be the beginning of the problem.

I bet you're right. I did run try installing from sudo R but still had the same error.
Also found this https://stackoverflow.com/questions/55825295/installation-of-custom-xgboost-fails-due-to-error-in-shared-library suggesting that an updated compiler might fix the issue.

1 Like

Good bug-hunting! It's always tricky between balancing spending full-time on keeping up-to-date and getting any actual work done. :grin:

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.