11

I am using Anaconda to manage my R-installation. It works great for packages available in the R-channels provided by Anaconda, but I am having troubles installing packages not contained in the Anaconda repos.

I have tried a few different approaches, all listed below together with their error output.

1. install.packages('rafalib')

Suggested to work here conda - How to install R packages that are not available in "R-essentials"?. My .libPaths() points to '/home/user/anaconda2/lib/R/library'.

Out:

--- Please select a CRAN mirror for use in this session ---
Error in download.file(url, destfile = f, quiet = TRUE) : 
  unsupported URL scheme
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
  call: fun(libname, pkgname)
  error: Can't find a usable init.tcl in the following directories: 
    /opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library

This probably means that Tcl wasn't installed properly.

I installed tcl from the conda channel r-old, but install.packages() still threw the same error message.

2. options(menu.graphics=FALSE) and then install.packages('rafalib')

I got a list of mirrors and chose one.

Out:

Selection: 15
trying URL 'http://cran.utstat.utoronto.ca/src/contrib/rafalib_1.0.0.tar.gz'
Content type 'application/x-gzip' length 11798 bytes (11 KB)
==================================================
downloaded 11 KB

sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook

The downloaded source packages are in
        ‘/tmp/Rtmphwpta0/downloaded_packages’
Warning message:
In install.packages("rafalib") :
  installation of package ‘rafalib’ had non-zero exit status

Both 2 and 3 are from Disable/suppress tcltk popup for CRAN mirror selection in R

3. Setting the mirror in ~/.Rprofile

Before trying install.packages(), I added the following to my ~/.Rprofile.

## Default repo
local({r <- getOption("repos");
       r["CRAN"] <- "http://cran.us.r-project.org"; 
       options(repos=r)})

Out:

trying URL 'http://cran.us.r-project.org/src/contrib/rafalib_1.0.0.tar.gz'
Content type 'application/x-gzip' length 11798 bytes (11 KB)
==================================================
downloaded 11 KB

sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook

The downloaded source packages are in
        ‘/tmp/RtmppIz9rT/downloaded_packages’
Warning message:
In install.packages("rafalib") :
  installation of package ‘rafalib’ had non-zero exit status

4. Setting the download method to 'curl' or 'wget'.

While keeping the new ~/.Rprofile configuration. I guess this wasn't necessary since the package seems to be downloading fine now, but I tested it just in case.

Out:

sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
Warning in download.packages(pkgs, destdir = tmpd, available = available,  :
  download of package ‘rafalib’ failed
Warning message:
In download.file(url, destfile, method, mode = "wb", ...) :
  download had nonzero exit status

5. Manual download of rafalib

install.packages('../Downloads/rafalib_1.0.0.tar.gz', repos=NULL, type='source')

Out:

sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook
Warning message:
In install.packages("../Downloads/rafalib_1.0.0.tar.gz", repos = NULL,  :
  installation of package ‘../Downloads/rafalib_1.0.0.tar.gz’ had non-zero exit status

6. Building a conda package from rafalib

I opened a separate issue for this Errors building R-packages for conda. In short, it complains about missing dependencies that I already have installed. Update I got a round the dependency problem and I am now stuck at the same rl_signal_event_hook-error as for my other approaches.

7. sudo ln /usr/lib/libncursesw.so.6 /usr/lib/libncursesw.so.5

As per https://github.com/conda/conda/issues/1679, but it didn't fix the issue for me.


So it seems like I can now download the package fine, but installing it fails. I have seen the error message sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook previously when using R with irkernel in the Jupyter Notebook, but it has never obstructed my work. I have never seen anything relating to that error message when running python through anaconda.

I'm out of ideas. Does anyone know how I can install R-packages not provided by anaconda, such as rafalib or swirl?

I am on Linux (Antergos, an Arch derivative) with kernel 4.4.5-1-ARCH.


UPDATE 2016/04/15

There is some related discussion in this thread. I have tried to get around this error by installing different versions of ncurses, including this patched version, and I have tried to link the readline libraries, as suggested here, but I keep running into the same error. I'm quite lost at this point and any help to solve this would be greatly appreciated.

Community
  • 1
  • 1
joelostblom
  • 43,590
  • 17
  • 150
  • 159
  • 2
    Have you tried `install.packages("rafalib", repos = ""http://cran.us.r-project.org")` ? – Scott Warchal Apr 15 '16 at 16:38
  • you've ldconfig(ed) since installing the dependencies? – Chris Apr 15 '16 at 16:56
  • @Swarch that gives the same `rl_signal_event_hook` error. – joelostblom Apr 15 '16 at 17:18
  • @Chris I am not familiar with `ldconfig`. I have restarted between linking and installing dependencies and when I run into the same error afterwards. How should I use `ldconfig` here? – joelostblom Apr 15 '16 at 17:21
  • It looks like an error from when R tries to make a system call, so OS-related. Do you get the same error if you do the same thing in an instance of R in the command line? – alistaire Apr 15 '16 at 18:20
  • @alistaire Yes, running R from the command line or inside the Jupyter notebook throws the same error, although it is more verbose when running from the command line. – joelostblom Apr 15 '16 at 18:24
  • Anything useful in the more verbose error? Is compiling from source and failing? `install.packages` does have a `verbose = TRUE` option that might help you diagnose what's going on. – alistaire Apr 15 '16 at 18:32
  • @alistaire Unfortunately not, the only error message is `sh: symbol lookup error: sh: undefined symbol: rl_signal_event_hook`. I tried `R CMD INSTALL`, directly and the same error occurs. The error message is the same as in heading 3 in the question. – joelostblom Apr 15 '16 at 18:43

2 Answers2

9

Detailed post on managing packages that are and are not in Anaconda R: http://ihrke.github.io/conda.html

Essentially is using commands:

conda skeleton cran <package_name>
conda build <package_name>

If the package has dependencies that are also not in Anaconda:

conda skeleton cran <dependency1>
conda skeleton cran <dependency2>
conda build <package_name>

Essentially I would agree with this post in saying that I don't understand how install.packages() works with Anaconda. What I seem to see is that Anaconda creates a R environment where all the packages installed from install.packages() are kept.

Whenever I am working in Jupyter with R, I use this environment and am able to access all the packages that I have installed with install.packages()

rgalbo
  • 4,186
  • 1
  • 19
  • 29
  • Thanks! It still failed for me when I built the dependencies in the same directory, but I discovered that I can use `-c r` for the `build` command which made me bypass the dependency issues. I updated the question and I am now stuck at the same `rl_signal_event_hook`-error as for my other approaches. – joelostblom Apr 15 '16 at 18:19
  • Just to clarify, once the build is done you still need to install the package. You can use `conda install --use-local ` in order to do that. – Bar Jun 16 '16 at 21:31
3

In the end, I got around the rl_event_hookproblems by following the approach recommended here and symlinking anaconda's libreadline to the system one:

mv ~/anaconda3/lib/libreadline.s.6.2 ~/anaconda3/lib/libreadline.s.6.2.bak
ln -s /usr/lib/libreadline.so.6.3 ~/anaconda3/lib/libreadline.s.6.2

I am still having troubles installing some dependency heavy R-packages due to failure to load shared objects when using install.packages() from withing R. However, simpler packages work fine and I can get most of the dependency heavy packages from anacondas R-repositories.

joelostblom
  • 43,590
  • 17
  • 150
  • 159