Я работаю над пакетом, который поддерживает взаимодействие со структурой библиотеки альтернативной формы, которая поддерживает параллельную установку нескольких версий пакета (RVClibrary, скоро на CRAN). Недавно я встретил какое-то странное поведение и надеюсь, что кто-нибудь сможет объяснить.
При установке пакета он может иногда иметь версию source , которая старше, чем версия binary . Исходный код (не скомпилированный код C) в этом случае еще не скомпилирован (by ...?), Но содержит более позднюю версию, чем уже скомпилированная двоичная версия. В моем случае показано следующее:
There is a binary version available but the source version is later:
binary source needs_compilation
rlang 0.2.0 0.3.4 TRUE
Пользователь получает выбор относительно того, должен ли A или B быть относительно установленным или скомпилированным. Другими словами, если вы хотите версию 0.2.0 или 0.3.4 (для которой вам нужен Rtools).
Этот выбор не будет предоставлен, если установлена опция install.packages.compile.from.source
.
> options(install.packages.compile.from.source = "always")
> install.packages('rlang', lib = "C:\\test", quiet = TRUE, repos = "http://cran.us.r-project.org")
There is a binary version available but the source version is later:
binary source needs_compilation
rlang 0.2.0 0.3.4 TRUE
installing the source package ‘rlang’
Источник установлен.
Но когда я создаю простой скрипт (я называю его install_test.R
):
packageName <- commandArgs(trailingOnly = TRUE)[1]
cat(packageName, '\n')
options(install.packages.compile.from.source = "always")
install.packages(packageName, lib = "C:\\test", quiet = TRUE, repos = "http://cran.us.r-project.org")
Следующее действует одинаково с системой в R и непосредственно в CMD.
(убедитесь, что у вас есть путь к Rscript.exe
в переменной окружения PATH)
> system("Rscript.exe C:\\test\\install_test.R rlang")
rlang
There is a binary version available but the source version is later:
binary source needs_compilation
rlang 0.2.0 0.3.4 TRUE
Binaries will be installed
package 'rlang' successfully unpacked and MD5 sums checked
Двоичные файлы установлены!
Мне нужно всегда иметь возможность установить исходную версию , чтобы не сталкиваться с проблемами зависимости. Например, ggplot2 зависит от >= 0.2.1
уже ...
Резюме
- У меня установлен Rtools 3.5 (который devtools может найти по обоим маршрутам и считает, что он не совместим ..., но установка из исходного кода работает нормально в Rstudio, и (https://cran.r -project.org / bin / windows / Rtools / ) CRAN говорит, что он совместим с)
- R версия:
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
year 2016
month 06
day 21
svn rev 70800
language R
version.string R version 3.3.1 (2016-06-21)
nickname Bug in Your Hair
(мое редактирование здесь удалено, чтобы сохранить его в чистоте. См. Мой ответ (или историю), чтобы прочитать больше)