Не удается загрузить пакет data.table в удаленном сеансе MRS

Когда я пытаюсь загрузить пакет data.table в удаленном сеансе на сервере MS R, я получаю сообщение об ошибке:

REMOTE> library(data.table)
Error: package or namespace load failed for 'data.table'

Используя пространство имен напрямую, я получаю больше цвета:

REMOTE> data.table::data.table(x = 1)
Error: .onLoad failed in loadNamespace() for 'data.table', details:
  call: assign("cbind.data.frame", tt, envir = asNamespace("base"), inherits = FALSE)
  error: cannot change value of locked binding for 'cbind.data.frame'

Любые советы о том, как решить эту проблему?

Вот еще немного информации о том, как настроен сервер R и как я устанавливаю пакеты:

  1. Сервер R работает на отдельной машине (назовем ее A) от той, на которой я запускаю удаленный сеанс. Машина A сконфигурирована как одноядерная, т. е. и веб-узел, и вычислительный узел работают на этой машине.
  2. Я запускаю клиент R на своем локальном компьютере (назовем его B) через Microsoft Visual Studio Professional 2015, версия 14.0.25431.01, обновление 3, Microsoft .NET Framework, версия 4.6.01038 с инструментами R для Visual Studio, 1.0.30228.1316 RC2.
  3. Я установил пакет data.table непосредственно на машину A, запустив консоль Rgui с помощью этой команды: install.packages('data.table'). Библиотека устанавливается в библиотеку C:\RglobalPkgs, указанную системной переменной среды R_LIBS на машине A.
  4. Я создаю удаленный сеанс на машине B, выполняя следующие команды:

    library(mrsdeploy) remoteLogin("http://machineA:12800", username = "admin", password = "xyz", session = TRUE, commandline = TRUE)

  5. В удаленном сеансе я пытаюсь загрузить пакет data.table, как описано выше в начале моего вопроса, но это не удается. Запуск .libPath() в удаленном сеансе дает:

    REMOTE> .libPaths() [1] "C:/RglobalPkgs" [2] "C:/Program Files/Microsoft/R Server/R_SERVER/library"


person Pavel    schedule 09.03.2017    source источник
comment
Это на локальной машине?   -  person Hong Ooi    schedule 09.03.2017
comment
@HongOoi, ОП уже упоминал, что это удаленный сеанс на R Server.   -  person Panagiotis Kanavos    schedule 09.03.2017
comment
@PanagiotisKanavos mrsdeploy поддерживает базовую конфигурацию из одного блока, в которой все работает на вашей собственной машине. В этом случае локальные и удаленные сеансы могут совместно использовать пакеты.   -  person Hong Ooi    schedule 09.03.2017


Ответы (1)


Я написал об этом команде разработчиков по электронной почте. Ответ ниже:

Нам известно об этой проблеме, и мы исправим ее в следующем выпуске. Обходной путь — перейти в C:\Program Files\Microsoft\R Server\R_SERVER\deployr\RServe\RScripts\source.R на машине с вычислительным узлом и закомментировать

#  unlockBinding("unlockBinding",b)
#  assign("unlockBinding", deployr.unlock, envir=b)
#  lockBinding("unlockBinding", b)

Затем перейдите в службы и перезапустите службу RServe9.0.0.

person Hong Ooi    schedule 09.03.2017
comment
Спасибо за ответы. Я не использую конфигурацию с одним ящиком. Сервер R находится на отдельной машине. Ошибка возникает независимо от того, устанавливаю ли я data.table на сервере или в удаленном сеансе. - person Pavel; 09.03.2017
comment
Используйте library (*, lib.loc=path), чтобы указать R, где вы установили data.table - person Hong Ooi; 09.03.2017
comment
Я сделал это: библиотека (data.table, lib.loc = C:/RglobalPkgs). Все та же ошибка. Похоже, проблема не в том, что R не находит пакет. При загрузке происходит сбой. - person Pavel; 09.03.2017
comment
Вы должны указать все это в вопросе, в том числе о том, как вы установили data.table. - person Hong Ooi; 10.03.2017
comment
Готово. Смотрите мой вопрос выше. Еще раз спасибо за ваше время. - person Pavel; 13.03.2017
comment
R_LIBS — это системная переменная. Я поместил результат запуска .libPath() в удаленном сеансе на машине B в своем исходном вопросе. - person Pavel; 13.03.2017
comment
Попробуйте запустить install.packages из удаленного сеанса. У него может не быть прав на чтение/запись в этот каталог. - person Hong Ooi; 13.03.2017
comment
install.packages('data.table') из удаленного сеанса работает успешно, но когда я впоследствии делаю библиотеку (data.table), я получаю ту же ошибку, что и в моем исходном вопросе. - person Pavel; 13.03.2017
comment
Хорошо, я могу воспроизвести это на своей машине. Похоже на неожиданное взаимодействие между mrsdeploy и data.table. Я уведомлю команду разработчиков. - person Hong Ooi; 13.03.2017
comment
30-минутное время обработки по электронной почте! - person Hong Ooi; 13.03.2017