Rhon Calderon, Eric
2022-Oct-04 13:36 UTC
[R] Help executing R on High Performance Cluster
Hi, I need some help executing recently downloaded R on my HPC. Here is the script I used to install R on my HPC module: wget https://cran.r-project.org/src/base-prerelease/R-devel.tar.gz tar -xvf R-devel.tar.gz cd /home/ericrhon/labsoftware/R-devel/ ./configure --prefix=/home/ericrhon/labsoftware/R-devel -with-recommended-packages=no --without-x --with-cairo --with-libpng --with-libtiff --with-jpeglib --enable-R-shlib --with-pcre1 make make install After I installed, I tried to run /home/ericrhon/labsoftware/R-devel/R. But I get the next error: /home/ericrhon/labsoftware/R-devel/bin/exec/R: line 272: /home/ericrhon/labsoftware/R-devel/bin/exec/R: Argument list too long /home/ericrhon/labsoftware/R-devel/bin/exec/R: line 272: /home/ericrhon/labsoftware/R-devel/bin/exec/R: Success Here is the exec script of R, line 272 is highlighted: #!/bin/sh # Shell wrapper for R executable. R_HOME_DIR="/home/ericrhon/labsoftware/R-devel" if test "${R_HOME_DIR}" = "/home/ericrhon/labsoftware/shared_Renv/versions/R-devel/lib64/R"; then case "linux-gnu" in linux*) run_arch=`uname -m` case "$run_arch" in x86_64|mips64|ppc64|powerpc64|sparc64|s390x) libnn=lib64 libnn_fallback=lib ;; *) libnn=lib libnn_fallback=lib64 ;; esac if [ -x "/home/ericrhon/labsoftware/shared_Renv/versions/R-devel/${libnn}/R/bin/exec/R" ]; then R_HOME_DIR="/home/ericrhon/labsoftware/shared_Renv/versions/R-devel/${libnn}/R" elif [ -x "/home/ericrhon/labsoftware/shared_Renv/versions/R-devel/${libnn_fallback}/R/bin/exec/R" ]; then R_HOME_DIR="/home/ericrhon/labsoftware/shared_Renv/versions/R-devel/${libnn_fallback}/R" ## else -- leave alone (might be a sub-arch) fi ;; esac fi if test -n "${R_HOME}" && \ test "${R_HOME}" != "${R_HOME_DIR}"; then echo "WARNING: ignoring environment value of R_HOME" fi R_HOME="${R_HOME_DIR}" export R_HOME R_SHARE_DIR="${R_HOME_DIR}/share" export R_SHARE_DIR R_INCLUDE_DIR="${R_HOME_DIR}/include" export R_INCLUDE_DIR R_DOC_DIR="${R_HOME_DIR}/doc" export R_DOC_DIR # Since this script can be called recursively, we allow R_ARCH to # be overridden from the environment. # This script is shared by parallel installs, so nothing in it should # depend on the sub-architecture except the default here. : ${R_ARCH=} usage=" Usage: R [options] [< infile] [> outfile] or: R CMD command [arguments] Start R, a system for statistical computation and graphics, with the specified options, or invoke an R tool via the 'R CMD' interface. Options: -h, --help Print short help message and exit --version Print version info and exit --encoding=ENC Specify encoding to be used for stdin --encoding ENC RHOME Print path to R home directory and exit --save Do save workspace at the end of the session --no-save Don't save it --no-environ Don't read the site and user environment files --no-site-file Don't read the site-wide Rprofile --no-init-file Don't read the user R profile --restore Do restore previously saved objects at startup --no-restore-data Don't restore previously saved objects --no-restore-history Don't restore the R history file --no-restore Don't restore anything --vanilla Combine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environ --no-readline Don't use readline for command-line editing --max-ppsize=N Set max size of protect stack to N --min-nsize=N Set min number of fixed size obj's (\"cons cells\") to N --min-vsize=N Set vector heap minimum to N bytes; '4M' = 4 MegaB -q, --quiet Don't print startup message --silent Same as --quiet -s, --no-echo Make R run as quietly as possible --interactive Force an interactive session --verbose Print more information about progress -d, --debugger=NAME Run R through debugger NAME --debugger-args=ARGS Pass ARGS as arguments to the debugger -g TYPE, --gui=TYPE Use TYPE as GUI; possible values are 'X11' (default) and 'Tk'. --arch=NAME Specify a sub-architecture --args Skip the rest of the command line -f FILE, --file=FILE Take input from 'FILE' -e EXPR Execute 'EXPR' and exit FILE may contain spaces but not shell metacharacters. Commands: BATCH Run R in batch mode COMPILE Compile files for use with R SHLIB Build shared library for dynamic loading INSTALL Install add-on packages REMOVE Remove add-on packages build Build add-on packages check Check add-on packages LINK Front-end for creating executable programs Rprof Post-process R profiling files Rdconv Convert Rd format to various other formats Rd2pdf Convert Rd format to PDF Rd2txt Convert Rd format to pretty text Stangle Extract S/R code from Sweave documentation Sweave Process Sweave documentation Rdiff Diff R output ignoring headers etc config Obtain configuration information about R javareconf Update the Java configuration variables rtags Create Emacs-style tag files from C, R, and Rd files Please use 'R CMD command --help' to obtain further information about the usage of 'command'. Options --arch, --no-environ, --no-init-file, --no-site-file and --vanilla can be placed between R and CMD, to apply to R processes run by 'command' Report bugs at <https://bugs.R-project.org>." ## some systems have a more portable sed, e.g. /usr/xpg4/bin/sed on Solaris, ## so make sure that is used. SED=/usr/bin/sed export SED error () { echo "ERROR: $*" >&2 exit 1 } ### Argument loop args debugger debugger_args gui while test -n "${1}"; do case ${1} in RHOME|--print-home) echo "${R_HOME}"; exit 0 ;; CMD) shift; export R_ARCH . "${R_HOME}/etc${R_ARCH}/ldpaths" exec sh "${R_HOME}/bin/Rcmd" "${@}" ;; -g|--gui) if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then gui="${2}" args="${args} ${1} ${2}" shift else error "option '${1}' requires an argument" fi ;; --gui=*) gui=`echo "${1}" | ${SED} -e 's/[^=]*=//'` args="${args} ${1}" ;; -d|--debugger) if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then debugger="${2}"; shift else error "option '${1}' requires an argument" fi ;; --debugger=*) debugger=`echo "${1}" | ${SED} -e 's/[^=]*=//'` ;; --debugger-args=*) debugger_args=`echo "${1}" | ${SED} -e 's/[^=]*=//'` ;; -h|--help) echo "${usage}"; exit 0 ;; --args) break ;; --arch) if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then R_ARCH="/${2}" shift else error "option '${1}' requires an argument" fi ## check sub-architecture here for a better error message if ! test -d ${R_HOME}/etc${R_ARCH}; then error "sub-architecture '${1}' is not installed" fi ;; --arch=*) r_arch=`echo "${1}" | ${SED} -e 's/[^=]*=//'` R_ARCH="/${r_arch}" ## check sub-architecture here for a better error message if ! test -d ${R_HOME}/etc${R_ARCH}; then error "sub-architecture '${r_arch}' is not installed" fi ;; -e) TAB=`printf "\t"` if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then a=`(echo "${2}" && echo) | ${SED} -e 's/ /~+~/g' | \ ${SED} -e :a -e N -e '$!ba' -e 's/\n/~n~/g' -e 's/~n~$//g' -e "s/$TAB/~t~/g"` shift else error "option '${1}' requires a non-empty argument" fi args="${args} -e $a" ;; -f) if test -n "`echo ${2} | ${SED} 's/^-.*//'`"; then a=`echo "${2}" | ${SED} -e 's/ /~+~/g'`; shift else error "option '${1}' requires a filename argument" fi args="${args} -f $a" ;; --file=*) a=`echo "${1}" | ${SED} -e 's/[^=]*=//' | ${SED} -e 's/ /~+~/g'` args="${args} --file=$a" ;; --no-environ) R_ENVIRON='' export R_ENVIRON R_ENVIRON_USER='' export R_ENVIRON_USER args="${args} ${1}" ;; --no-site-file) R_PROFILE='' export R_PROFILE args="${args} ${1}" ;; --no-init-file) R_PROFILE_USER='' export R_PROFILE_USER args="${args} ${1}" ;; --vanilla) R_ENVIRON='' export R_ENVIRON R_ENVIRON_USER='' export R_ENVIRON_USER R_PROFILE='' export R_PROFILE R_PROFILE_USER='' export R_PROFILE_USER args="${args} ${1}" ;; *) args="${args} ${1}" ;; esac shift done . "${R_HOME}/etc${R_ARCH}/ldpaths" R_binary="${R_HOME}/bin/exec${R_ARCH}/R" export R_ARCH case "${gui}" in Tk|tk|X11|x11) ;; "") ;; *) error "unknown GUI ${gui}" esac ## R_HOME may have moved, so check if test -x "${R_HOME}"; then : else error "R_HOME ('${R_HOME}') not found" fi ## Startup if test -z "${debugger}"; then exec "${R_binary}" ${args} "${@}" else ## Ideally, we would like the debugger to start R with additional ## ('inferior') arguments, but not all debuggers can do this. We know ## about valgrind and some versions of GDB , and deal with these. ## Otherwise, to be on the safe side, we disregard non-debugger ## command line args. args_ok=no case "`${debugger} --version 2>/dev/null`" in "GNU gdb"*) if ${debugger} --help 2>/dev/null | \ grep ' *--args' >/dev/null; then args_ok=yes debugger_args="${debugger_args} --args" fi ;; valgrind*) args_ok=yes ;; esac if test -n "${args}${*}" && test "${args_ok}" = no; then args=`expr "${args} ${*}" : " *\(.*\)"` echo "*** Further command line arguments ('${args}') disregarded" echo "*** (maybe use 'run ${args}' from *inside* ${debugger})" echo "" exec ${debugger} ${debugger_args} "${R_binary}" else exec ${debugger} ${debugger_args} "${R_binary}" ${args} "${@}" fi fi ### Local Variables: *** ### mode: sh *** ### sh-indentation: 2 *** ### End: *** Could you please help me? I have been trying to load it unsuccessfully. Thanks. Eric [[alternative HTML version deleted]]
Hi Eric! ? Tue, 4 Oct 2022 13:36:59 +0000 "Rhon Calderon, Eric" <Eric.RhonCalderon at pennmedicine.upenn.edu> ?????:> cd /home/ericrhon/labsoftware/R-devel/> ./configure --prefix=/home/ericrhon/labsoftware/R-develI'm not sure, but the reason for the confusing behaviour could be that the installation prefix is set to be the same as the directory where you had unpacked the source code. This may have caused file path conflicts and maybe some kind of recursion when building the final executable path. R can run straight from the build directory, without installation. If you start from scratch, does bin/R work without `make install`? If not, do you get any useful output if you run bin/R under sh -x? (Additionally, R supports building away from the source code directory. For example, if you navigate to the source code directory, then run mkdir build && cd build && ../configure $CONFIGURE_ARGUMENTS, the build will be mostly self-contained to that directory, which may be useful when experimenting.) Why are you building R with --with-recommended-packages=no? R is supposed to be easy to build and start working with, but there may be important details to consider, especially on an HPC, in the "R installation and administration" guide: https://cran.r-project.org/doc/manuals/r-release/R-admin.html> Here is the exec script of R, line 272 is highlighted:<...>> [[alternative HTML version deleted]]This mailing list strips the HTML version of the e-mails; here's what we see: https://stat.ethz.ch/pipermail/r-help/2022-October/475956.html One way to link to R source code is to use the GitHub mirror: https://github.com/r-devel/r-svn -- Best regards, Ivan