Как можно, если исправить ошибку: threefry.h: Нет такого файла или каталога в Docker? - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь создать докер-контейнер, используя рокер и пакет homebrew.У меня нет проблем с установкой пакета homebrew на рабочий стол.Увы, когда я пытаюсь установить его в контейнер, я получаю следующую ошибку:

2 -g  -c predict_rcpp.cpp -o predict_rcpp.o
In file included from /usr/local/lib/R/site-library/dqrng/include/dqrng_distribution.h:26:0,
                 from predict_rcpp.cpp:5:
/usr/local/lib/R/site-library/dqrng/include/dqrng_generator.h:27:10: fatal error: threefry.h: No such file or directory
 #include <threefry.h>
          ^~~~~~~~~~~~
compilation terminated.
/usr/lib/R/etc/Makeconf:176: recipe for target 'predict_rcpp.o' failed
make: *** [predict_rcpp.o] Error 1
ERROR: compilation failed for package ‘SLPRcpp’
* removing ‘/usr/local/lib/R/site-library/SLPRcpp’
Warning message:
In install.packages(pkgs = f, lib = lib, repos = if (isMatchingFile(f)) NULL else repos) :
  installation of package ‘SLPRcpp_2.6.tar.gz’ had non-zero exit status

Я предполагаю, что мне не хватает зависимости, но я не уверен, что это такое.Как я могу отладить это?

Это мой Dockerfile:

FROM rocker/r-ubuntu:18.04

RUN apt-get update -qq && apt-get install -y \
  #git-core \ 
  #libcurl4-gnutls-dev \ 
  #libssl-dev \ 
  libxml2-dev \
  librandom123-dev \
  r-cran-bh \ 
  r-cran-dplyr \ 
  #r-cran-ggiraph \ 
  r-cran-ggplot2 \ 
  r-cran-glue \ 
  r-cran-httr \ 
  r-cran-magrittr \ 
  r-cran-plumber \ 
  r-cran-purrr \ 
  r-cran-r6 \ 
  r-cran-rcpp \ 
  #r-cran-rcppArmadillo \ 
  #r-cran-rcppEigen \ 
  r-cran-readr \ 
  r-cran-rstan \ 
  r-cran-rstantools \ 
  r-cran-scales \ 
  #r-cran-stanHeaders \ 
  r-cran-stringr \
  r-cran-shiny \
  r-cran-tidyr \
  r-cran-dqrng

RUN install.r ggiraph RcppArmadillo RcppEigen StanHeaders 

# Install SLPRcpp package
COPY SLPRcpp_2.6.tar.gz /SLPRcpp_2.6.tar.gz
RUN install.r SLPRcpp_2.6.tar.gz

Ответы [ 2 ]

2 голосов
/ 15 июня 2019

Используйте веб-страницу packages.ubuntu.com , которую также можно искать по файлу.

Вот результат при поиске threefry.h - вы хотите librandom123-dev.

Кстати, это не имеет ничего общего с Rcpp, и я будуотредактируйте тег.В следующий раз подумайте над тем, чтобы задать такой вопрос по адресу https://askubuntu.com/. (он также не имеет отношения к installr, который AFAIK предназначен для установки в Windows.)

1 голос
/ 15 июня 2019

dqrng требует пакета sitmo, cf https://cran.r -project.org / package = dqrng , который включает заголовок threefry.h.Это ошибка в пакете r-cran-dqrng, если она не загружает r-cran-sitmo.Однако, похоже, это не так:

dpkg-deb --info r-cran-dqrng_0.2.1-1cran1ppabionic0_amd64.deb | grep Depends
 Depends: r-base-core, r-cran-rcpp, r-cran-bh, r-cran-sitmo, libc6 (>= 2.14), libgcc1 (>= 1:3.0), libstdc++6 (>= 5.2)
                                               ^^^^^^^^^^^^

Так что причина должна быть в вашей посылке.Скорее всего, в вашем пакете нет LinkingTo: sitmo.Это необходимо для использования (некоторых из) заголовков, хотя:

Функции оболочки и распределения RNG можно использовать из C ++, включая dqrng_generator.h и dqrng_distribution.h.Чтобы использовать эти заголовочные файлы, вы должны использовать как минимум C ++ 11 и ссылку на пакеты BH и sitmo.

Источник: https://www.daqana.org/dqrng/articles/dqrng.html#using-the-header-only-library

Iне понимаю, почему ваш пакет работает за пределами Docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...