Как я могу установить пакет R на автономную машину Debian?

У меня есть виртуальная машина Debian, которая не подключена к Интернету. Тем не менее, я все еще могу просмотреть любой файл с моей локальной машины, у которой есть подключение к Интернету. Чтобы дать немного контекста, я пытаюсь разместить блестящее приложение на виртуальной машине.

Я все еще могу установить старую версию R 3.1.1 с помощью команды «apt-get»:

sudo apt-get update
sudo apt-get install r-base
sudo apt-get install r-base-dev

Тем не менее, по-прежнему не удается найти «блестящий» пакет при проверке списка:

sudo apt-cache search "^r-.*" | sort

Итак, я думаю, могу ли я просто скопировать «shiny.tar.gz» на виртуальную машину и установить пакет локально? Как я могу установить любой пакет R в автономном режиме?

Я пробовал что-то вроде:

install.packages('/home/mli/R/dir_pkg/shiny/shiny_0.13.2.tar.gz', repos = NULL, type = "source")

Тем не менее, это не прошло и сообщение об ошибке, как показано ниже:

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Error in type == "both" : 
comparison (1) is possible only for atomic and list types
Calls: install.packages
Execution halted

Затем я попробовал это с другим «R CMD»:

R CMD INSTALL /home/mli/R/dir_pkg/shiny/shiny_0.13.2.tar.gz

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

* installing to library ‘/home/mli/R/x86_64-pc-linux-gnu-library/3.1’
ERROR: dependencies ‘httpuv’, ‘mime’, ‘jsonlite’, ‘xtable’, ‘digest’, ‘htmltools’, ‘R6’ are not available for package ‘shiny’
* removing ‘/home/mli/R/x86_64-pc-linux-gnu-library/3.1/shiny’

Как я могу успешно установить блестящий пакет из исходного кода? Должен ли я сначала установить все зависимости и зависимости зависимостей?


person Mark Li    schedule 28.04.2016    source источник
comment
Команда R CMD INSTALL не будет автоматически находить и устанавливать зависимости и откажется устанавливать пакет, если зависимости не соблюдены. Может быть, есть более простой способ, но я просто просматриваю зависимости по мере их появления (httpuv — это то, что вам больше сказали, требуется) и R CMD INSTALL их одну за другой. Их легко найти, просто перейдите на страницу проекта r по ссылке, по которой вы скачали блестящий пакет (просто удалите блестящую часть в конце) в браузере, и найдите нужный пакет. Обычно поиск всех необходимых зависимостей занимает 3 минуты или около того.   -  person rosscova    schedule 29.04.2016


Ответы (4)


У Shiny есть несколько зависимостей пакетов, и «R CMD INSTALL» не найдет их для вас, поэтому вам нужно получить их вручную. Согласно описанию блестящего, его зависимости: «Rcpp», «httpuv», «mime», «jsonlite», «xtable», «digest», «htmltools», «R6». Итак, во-первых, получите пакеты из крана (ниже приведены текущие версии, но они меняются со временем. Обратите внимание, что ниже для компьютера, подключенного к Интернету, вам нужно переместить их на автономный компьютер, прежде чем продолжить):

wget https://cran.r-project.org/src/contrib/Rcpp_0.12.4.tar.gz 
wget https://cran.r-project.org/src/contrib/httpuv_1.3.3.tar.gz 
wget https://cran.r-project.org/src/contrib/mime_0.4.tar.gz 
wget https://cran.r-project.org/src/contrib/jsonlite_0.9.19.tar.gz 
wget https://cran.r-project.org/src/contrib/digest_0.6.9.tar.gz 
wget https://cran.r-project.org/src/contrib/htmltools_0.3.5.tar.gz 
wget https://cran.r-project.org/src/contrib/R6_2.1.2.tar.gz 
wget https://cran.r-project.org/src/contrib/shiny_0.13.2.tar.gz

Затем пройдите их в том же порядке с помощью R CMD INSTALL. например:

R CMD INSTALL Rcpp_0.12.4.tar.gz

Как только все зависимости будут установлены, R CMD INSTALL позволит вам установить shining.

person rosscova    schedule 29.04.2016
comment
Он работает отлично! Спасибо @roscova! Кроме того, спасибо за список всех wget для меня! :) - person Mark Li; 30.04.2016

Чтобы установить некоторые пакеты в автономном режиме в Debian, вы можете использовать apt-offline:

apt-offline может полностью обновлять дистрибутив на основе APT без подключения к сети, и все это прозрачно для APT.

apt-offline можно использовать для создания подписи на машине (без сети). Эта подпись содержит всю информацию о загрузке, необходимую для системы базы данных APT. Этот файл подписи можно использовать на другой машине, подключенной к Интернету (которая не обязательно должна быть системой Debian и даже может работать под управлением Windows) для загрузки обновлений. Загруженные данные будут содержать все обновления в формате, понятном APT, и эти данные могут быть использованы apt-offline для обновления компьютера, не подключенного к сети.

Установите apt-offline в автономной ОС (Debian), затем введите следующую команду (для импорта отсутствующих ключей):

sudo apt-key exportall | sudo gpg --no-default-keyring --import --keyring /etc/apt/trusted.gpg

Затем вам нужно получить подпись your_package_name:

apt-offline set debian-install.sig --install-packages your_package_name

Следующий шаг: загрузите debian-install.sig в онлайн-систему и загрузите необходимые файлы.

apt-offline get debian-install.sig --bundle debian-install.zip 

Загрузите файл debian-install.zip в автономную систему, установите его с помощью утилиты apt-offline для обновления базы данных APT.

sudo apt-offline install debian-install.zip 

установить указанные пакеты your_package_name :

sudo apt-get install your_package_name

Вы можете загрузить свой пакет с помощью компьютера с Windows tuto

person GAD3R    schedule 29.04.2016
comment
Спасибо @GAD3R! Я никогда раньше не использовал apt-offline, но было бы здорово изучить его. Тем не менее, на этом этапе установка зависимостей вручную может быть более простой. Спасибо за ответ! - person Mark Li; 30.04.2016
comment
apt-offline может устанавливать программы со всеми их зависимостями - person GAD3R; 30.04.2016
comment
Я понимаю. Итак, мне нужно передать debian-install.sig в ​​мою онлайн-систему, чтобы сгенерировать debian-install.zip, а затем загрузить этот zip-файл обратно в автономную систему, чтобы завершить установку? Он работает с любыми пакетами R? apt-offline может определить все необходимые зависимости и встроить их в zip-файл? - person Mark Li; 30.04.2016

Вы в рассоле. Механизм пакета R предполагает, что вы будете подключены для получения зависимостей. Тем не менее, вы можете получить некоторую помощь:

R> AP <- available.packages(contrib.url(options("repos")$repos[1]))
R> revs <- tools::package_dependencies("shiny", AP, recursive=TRUE)[[1]]
R> revs
 [1] "methods"   "utils"     "httpuv"    "mime"     
 [5] "jsonlite"  "xtable"    "digest"    "htmltools"
 [9] "R6"        "Rcpp"      "tools"     "stats"    
R> 

Теперь вы можете снова заглянуть в AP и передать это в download.packages().

Кроме того, некоторые (все?) из них находятся в новом дистрибутиве Debian, поэтому вы можете использовать apt-get в режиме загрузки (возможно, используя apt-offline, как предложено в другом вопросе).

Наконец, мы предлагаем контейнер Docker для shiny, поэтому, если вы используете его на своей виртуальной машине Вам больше ничего не нужно.

person Dirk Eddelbuettel    schedule 29.04.2016

sudo apt-получить обновление

sudo apt-get установить r-cran-digest


Не могу поверить, что это было так легко. Я долго искал и получил только плохие ответы. Эти команды просто решают все. Я использовал его на трискеле

person user9230920    schedule 17.01.2018