2017-02-09 12 views
1

У меня есть пакет, который зависит от пакета extrafont. Если extrafont и его зависимость Rttf2pt1 не присутствуют в системе пользователя, установка моего пакета не выполняется. У меня extrafont как «Зависит» от файла ОПИСАНИЕ моего пакета. Когда я бегу devtools::install_git() установить свой пакет из URL, выход заканчивается:devtools :: install_git не удается установить зависимости пакетов в зависимости от импорта или

** preparing package for lazy loading 
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
    there is no package called 'Rttf2pt1' 
Error : package 'extrafont' could not be loaded 
ERROR: lazy loading failed for package 'tntpr' 
* removing 'C:/Users/SFirke/Documents/R/win-library/3.3/tntpr' 

Похоже extrafont устанавливается в порядке, но не работает, потому что Rttf2pt1 отсутствует. Когда я добавлю Rttf2pt1 в список Depends в свой файл DESCRIPTION, установка завершится успешно, установив как extrafont, так и Rttf2pt1 и мой пакет.

Зачем мне нужно положить Rttf2pt1 в мой список? Он присутствует в списке «Импорт» в файле описание из extrafont пакета:

Depends: 
    R (>= 2.15) 
Imports: 
    extrafontdb, 
    grDevices, 
    utils, 
    Rttf2pt1 

Дополнительная информация

Когда я бегу devtools::install_git("https://myurl.com/tntpr.git", dependencies = TRUE), я получаю следующий результат. Он устанавливает dplyr из GitHub, то extrafonts, то не удается загрузка моего пакета:

Installing tntpr 
Downloading GitHub repo hadley/[email protected] 
from URL https://api.github.com/repos/hadley/dplyr/zipball/master 
Installing dplyr 
"C:/PROGRA~1/R/R-33~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD INSTALL \ 
    "C:/Users/SFirke/AppData/Local/Temp/RtmpMlRSSR/devtools3dfc4e39620/hadley-dplyr-5902277" --library="C:/Users/SFirke/Documents/R/win-library/3.3" --install-tests 

* installing *source* package 'dplyr' ... 
** libs 

*** arch - i386 
C:/RBuildTools/3.4/mingw_32/bin/g++ -I"C:/PROGRA~1/R/R-33~1.2/include" -DNDEBUG -I../inst/include -DCOMPILING_DPLYR -I"C:/Users/SFirke/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/SFirke/Documents/R/win-library/3.3/BH/include" -I"C:/Users/SFirke/Documents/R/win-library/3.3/bindrcpp/include" -I"C:/Users/SFirke/Documents/R/win-library/3.3/plogr/include" -I"d:/Compiler/gcc-4.9.3/local330/include"  -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o 
<--- lots more lines like this ^^^^^ ---> 
** R 
** data 
*** moving datasets to lazyload DB 
** inst 
** tests 
** preparing package for lazy loading 
** help 
*** installing help indices 
** building package indices 
** installing vignettes 
** testing if installed package can be loaded 
*** arch - i386 
*** arch - x64 
* DONE (dplyr) 
Installing 1 package: extrafont 
Installing package into ‘C:/Users/SFirke/Documents/R/win-library/3.3’ 
(as ‘lib’ is unspecified) 
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.3/extrafont_0.17.zip' 
Content type 'application/zip' length 34323 bytes (33 KB) 
downloaded 33 KB 

package ‘extrafont’ successfully unpacked and MD5 sums checked 

The downloaded binary packages are in 
    C:\Users\SFirke\AppData\Local\Temp\RtmpMlRSSR\downloaded_packages 
"C:/PROGRA~1/R/R-33~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD INSTALL "C:/Users/SFirke/AppData/Local/Temp/RtmpMlRSSR/file3dfc4a973a21" \ 
    --library="C:/Users/SFirke/Documents/R/win-library/3.3" --install-tests 

* installing *source* package 'tntpr' ... 
** R 
** data 
*** moving datasets to lazyload DB 
** inst 
** tests 
** preparing package for lazy loading 
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
    there is no package called 'Rttf2pt1' 
Error : package 'extrafont' could not be loaded 
ERROR: lazy loading failed for package 'tntpr' 
* removing 'C:/Users/SFirke/Documents/R/win-library/3.3/tntpr' 
Error: Command failed (1) 
+0

Что произойдет, если вы используете 'dependenies = TRUE' с' devtools :: install_git() '? – ricoderks

+0

Затем он устанавливает последний dplyr из GitHub, но не работает таким же образом: устанавливает extrafont, а затем 'Error in loadNamespace (j <- i [[1L]], c (lib.loc, .libPaths()), versionCheck = vI [[j]]): нет пакета под названием 'Rttf2pt1'' –

+0

Вы уверены, что 'extrafont' установлен правильно? Есть ошибка, которую нельзя загрузить? – ricoderks

ответ

2

Проблема: Есть вопросы, специфичные для Windows, где оба DevTools 1.12.0 (текущая версия CRAN) и текущая версия разработки devtools 1.12.0.9000 имеют проблемы с вложенными/рекурсивными зависимостями (т. е. скажем, ваш пакет A зависит от пакета B, который зависит от пакета C; функции devtools install_*(A) не будут устанавливать C).

См. Это comment re: the development version и верхние части резьбы, которые также отмечают проблемы с версией CRAN и this package's workaround of manually specifying sub-dependencies для установки.

Решение: Я установил старую версию Devtools 1.11.1 (выпущен апреля 2016), которая работает для моего install_git() вызова выше даже при наличии зависимости отсутствуют, которые должны быть установлены.

install.packages("devtools") # from CRAN 
devtools::install_version("devtools", version = "1.11.1", repos = "http://cran.us.r-project.org") # get the old version 

Затем перезапустите R и используйте devtools по назначению.

+0

Обратите внимание, что последующие установки других пакетов могут оказаться полезными, установив текущую версию devtools из CRAN (1.12.0) - отменив эту реверсию. Поэтому вам может потребоваться многократно вернуться к 1.11.1. –