R 3.4.1 ошибка пути к личной библиотеке" одиночная свеча": невозможно создать " NA’
Я только что обновился до R (3.4.1 "Single Candle") на моей машине Linux 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 не записывается" раньше, но обычно он предлагает решение, подобное этому:
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? Есть ли способ вручную переопределить это?
6 ответов
Я не знаю, что вызывает эту проблему (я также испытываю ее на 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. Вы можете исправить это, добавив то же самое строка кода, описанная выше для .
глядя на детали в комментарии @Dirk (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866768) это запланированное поведение, так что пакеты устанавливаются один раз для всех пользователей системы.
решение сделать /usr/local/lib/R/
доступно для записи для всех пользователей, а не для повторного создания старого поведения с личной библиотекой пакетов для каждого отдельного пользователя.
откройте терминал и:
- перейти к
/usr/local/lib/
сcd /usr/local/lib/
- измените владельца: группа, чтобы все пользователи могли писать в папку. У меня на компьютере есть группа, в которую входят все пользователи, поэтому я использовал ее, но см.https://askubuntu.com/questions/66718/how-to-manage-users-and-groups для помощи в настройке группы, если это необходимо
- для смены владельца используйте
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'}
у меня есть uncommented R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
, перезапустил RStudio, и теперь он работает.
EDIT: глядя на комментарии, это похоже на запланированное поведение. здесь другое решение.
то же самое произошло со мной во время выполнения процедуры установки для некоторых пакетов 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()
) в р.
таким образом, изменение является временным, и вам не нужно обновлять файлы конфигурации.
это командная оболочка-это бесполезно если впоследствии команды .Renvironor
.Rprofile ' устанавливает R_USER_LIBS в другое место во время запуска R (-проверьте свою конфигурацию).
придерживаясь в $HOME/R/x86_64-pc-linux-gnu-library / 3.Х может быть желательным если у вас уже есть много пакетов в этом месте, вы хотите, чтобы они были обновлены/установлены там. У меня есть много пакетов Bioconductor, и я не хочу, чтобы они загружались снова, некоторые из этих пакетов загружают огромные наборы данных "Omics" при использовании. Может раздел, в котором находится /usr/local/lib/R, имеет слишком мало места на диске или находится на медленном диске.
может быть это ошибка в 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'}
на на
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'}