Перезагрузить пользовательский пакет R из исходного кода

Я создал собственный пакет и хочу развернуть его на удаленной машине. Вот мой текущий длинный рабочий процесс:

  • Создайте собственный пакет «my_package_0.1.0.tar.gz»
  • пакет scp на удаленную машину
  • создать удаленный сеанс
  • install.packages("/path/to/my_package0.1.0.tar.gz")
  • library('my_package')

Когда другие подключаются к машине, они должны запустить установку и библиотеку:

  • install.packages("/path/to/my_package0.1.0.tar.gz")
  • library('my_package')

Есть ли способ поделиться пользовательским пакетом и сделать рабочий процесс:

  • Создать удаленный сеанс
  • Загрузить пакет с library('my_package')

person Brig    schedule 01.05.2017    source источник
comment
У вас нет административного доступа к удаленной машине? В этом случае вы можете установить пакет для всей системы.   -  person neilfws    schedule 02.05.2017
comment
Это также может помочь: > stackoverflow.com/questions/3487329/   -  person Ian Wesley    schedule 02.05.2017
comment
Альтернативой может быть сохранение вашего пакета в виде скрипта и загрузка его онлайн, например, на github. Таким образом, пользователи могут просто загрузить ваш скрипт с github, и он всегда будет в актуальном состоянии.   -  person thc    schedule 02.05.2017
comment
Похоже, что удаленные подключения хранят файлы в таком месте, как /opt/deployr/9.0.1/rserve/workdir/Rserv8.0.5/connXXX. Где более подходящее место для общих файлов?   -  person Brig    schedule 02.05.2017


Ответы (1)


В комментариях в комментариях говорится, что лучше всего установить пакет в общедоступном месте.

Вот как вы можете найти хорошее место для установки пакетов.

Запуск следующего показывает, откуда загружаются библиотеки

.libPaths()
# rserve2 rserve2 /opt/deployr/9.0.1/rserve/R
#root root        /usr/lib64/microsoft-r/3.3/lib64/R/library

Есть два места, где сервер R ищет библиотеки. Один принадлежит root, поэтому мы не должны развертывать его здесь. Другая локация, rserve2, принадлежит владельцу и выглядит многообещающе. Мы должны создать подпапку library для хранения общих пакетов.

На основании этой информации рабочий процесс должен быть:

  • Создайте собственный пакет «my_package_0.1.0.tar.gz»
  • пакет scp на удаленную машину
  • создать удаленный сеанс
  • install.packages("/path/to/my_package0.1.0.tar.gz", lib='/opt/deployr/9.0.1/rserve/R/library/')
  • библиотека ('мой_пакет')

Когда другие подключаются к машине, они могут загрузить общую библиотеку:

  • библиотека ('мой_пакет')
person Brig    schedule 02.05.2017