Ответ 1
После 8 июля 2017 года это решит все проблемы
sudo apt-get update
Я только что обновился до R (3.4.1 "Single Candle" ) на моей машине Mint 18.1 Cinnamon, и я попытался установить пакет. R вернул следующее:
> install.packages('ggplot2')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("ggplot2") :
'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead? (y/n) y
Would you like to create a personal library
NA
to install packages into? (y/n) y
Error in install.packages("ggplot2") : unable to create ‘NA’
Я уже сталкивался с выходом "lib not writeable", но обычно он предлагает такое решение, как этот:
Would you like to create a personal library
~/R/x86_64-pc-linux-gnu-library/3.4
to install packages into? (y/n) y
Любые идеи, почему персональная библиотека предлагает NA? Есть ли способ вручную переопределить это?
После 8 июля 2017 года это решит все проблемы
sudo apt-get update
Я не знаю, что вызывает эту проблему (я тоже испытываю это на Ubuntu 16.04), но здесь можно найти быстрый способ:
.libPaths(c("/home/your_username/R/x86_64-pc-linux-gnu-library/3.4/", .libPaths()))
Конечно, вы можете заменить "/home/your_username/..."
на любой другой каталог (который сохранит вашу личную библиотеку).
Это решение делает работу install.packages()
и library()
. Ожидание полного исправления!
EDIT: Я должен отметить, что это решение не является постоянным. То есть, это не будет продолжаться после перезапуска R. Вы можете исправить это, добавив ту же строку кода, описанную выше, в файл /home/your_username/.Rprofile
.
Глядя на подробности в комментарии @Dirk (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866768), это запланированное поведение, так что пакеты устанавливаются один раз для всех пользователей системы.
Решение состоит в том, чтобы сделать /usr/local/lib/R/
доступным для записи для всех пользователей, вместо того, чтобы повторно установить старое поведение наличия личной библиотеки пакетов для каждого отдельного пользователя.
Откройте терминал и:
/usr/local/lib/
с помощью cd /usr/local/lib/
sudo chown owner:group -R R/
. owner
- это любой пользователь, это не имеет большого значения. group
является ключевым; убедитесь, что любой желающий использовать R в вашей системе является членом этой группы. -R
является рекурсивным (т.е. делать это ко всем файлам и папкам в R/
).chmod -R 775 R/
. Это дает владельцам и группам права на чтение, запись и выполнение и дает всем другим возможность читать и выполнять разрешения.Теперь перезапустите R, и вы сможете установить пакеты в эту общую папку.
Мое решение было следующим:
В файле /usr/lib/R/etc/Renviron
есть конфигурация R.
В строках 43-45 есть:
# edd Jun 2017 Comment-out R_LIBS_USER
#R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
##R_LIBS_USER=${R_LIBS_USER-'~/Library/R/3.4/library'}
Я раскомментировал R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
, перезапустил RStudio и теперь он работает.
РЕДАКТИРОВАТЬ: Глядя на комментарии, это похоже на запланированное поведение. Здесь - это еще одно решение.
Может быть, это ошибка R 3.4.1, и мое решение меняет строку
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
в /etc/R/Renviron
файле в
R_LIBS_SITE=${R_LIBS_SITE-'~/R/x86_64-pc-linux-gnu-library/3.4.1:/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
То же самое произошло со мной при запуске процедуры установки некоторых пакетов Bioconductor.
Тогда я понял, что я мог бы написать это (или подобное) в командной строке bash:
export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && R
или
export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && rstudio
а затем запустите upgrade.packages()
(или install.packages()
или biocLite()
) внутри R.
Таким образом, изменение является временным, и вам не нужно обновлять файлы конфигурации.
Эта команда оболочки бесполезна, если впоследствии команда в .Renviron or
.Rprofile` устанавливает R_USER_LIBS в другое место во время запуска R (-check your configuration).
Желательно использовать в $HOME/R/x86_64-pc-linux-gnu-library/3.X если у вас уже много пакетов в этом месте, вы хотите, чтобы они были обновлены/установлены там. У меня там много пакетов Bioconductor, и я не хочу, чтобы они загружались снова, некоторые из этих пакетов загружают огромные массивы данных "Omics" при их использовании. Возможно, раздел, в котором находится /usr/local/lib/R, имеет слишком мало места на диске или находится на медленном диске.