Библиотека не доступна для записи
У меня есть эта проблема во время установки пакета в R версии 3.0.2 (2013-09-25) на машине с Ubuntu:
install.packages("randomForest")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "/usr/local/lib/R/site-library"' is not writable
Как это решить?
15 ответов
Для версии R 3.2.2 (2015-08-14) эту проблему следует решать, поскольку R предлагает в процессе установки другой путь для хранения библиотек R. Установка выглядит следующим образом: (здесь "random" используется в качестве примера пакета)
install.packages('random')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("random") :
'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
~/R/pc-linux-gnu-library/3.2
to install packages into? (y/n) y
Поэтому во время установки, отвечая на оба вопроса с помощью "y", следует правильно установить пакет.
Изменение разрешения
Если вы не хотите хранить ваши пакеты R в дополнительном файле, вот быстрая пошаговая инструкция о том, как изменить разрешение папки "/usr/local/lib/R/site-library". Откройте свой терминал и введите:
Осторожно Возможный недостаток - могут быть причины, по которым эта папка недоступна для записи, поэтому ее следует хранить таким образом.
$ cd /usr/local/lib/R
$ sudo chmod o+w site-library
$ ls -l
Напечатанная строка должна выглядеть так:
drwxrwsrwx 2 root staff 0000 Mar 31 00:00 site-library
install.packages('random')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("random") :
'lib = "/usr/local/lib/R/site-library"' is not writable
Просто закройте свой R, затем перейдите к значку R или RStudio, щелкните правой кнопкой мыши и "открыть как администратор". Работает отлично, все сообщения об ошибках при установке пакетов пропали навсегда
Добавить себя в группу под названием "персонал"
sudo usermod -a -G staff your_user_name
замените your_user_name на ваше имя пользователя для входа, затем выйдите из системы и перезапустите.
НЕ используйте chmod 777, который является нарушением безопасности и кстати. полный бессмысленный!!!
Проблема в том, что место установки по умолчанию - это место, где у вас нет прав на запись.
Решение состоит в том, чтобы использовать место установки, где у вас есть права на запись.
В частности, я бы предложил использовать следующие команды для создания папки личной библиотеки в месте, которое не требует специальных разрешений и которое будет автоматически обнаружено при следующем запуске R:
dir.create(Sys.getenv("R_LIBS_USER"), recursive = TRUE) # create personal library
.libPaths(Sys.getenv("R_LIBS_USER")) # add to the path
install.packages("randomForest") # install like always
library(randomForest) # use library like always
Призыв к dir.create
следует предложению в этом FAQ, чтобы создать папку с именем в соответствии с Sys.getenv("R_LIBS_USER")
, Это хороший выбор, так как он будет найден при следующем запуске R, так что вы сможете использовать install.packages
а также library
без указания особых мест. .libPaths
вызов функции позволяет избежать перезапуска R, сразу добавив новую папку в путь к библиотеке. Первые две строки нужны только в том случае, если у вас еще нет созданной личной библиотеки, но при ее повторном запуске нет вреда. После этого установка пакетов и использование библиотек может быть выполнено как обычно.
Для кого-то, кто использовал install.packages()
с несколькими пакетами
install.packages("vcd","vcdExtra","plyr")
и получил то же предупреждение:
Warning in install.packages :
'lib = "vcdExtra"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) cancel
Error in install.packages : unable to install packages
Установка каждого отдельно работала у меня
install.packages("vcd")
install.packages("vcdExtra")
Это означает именно то, что он говорит. У вас нет разрешения на запись в эту папку. Либо вам нужно изменить разрешения для этой папки, либо изменить местоположение библиотеки R.
Если вы используете ОС Windows 10, то, возможно, защита от вымогателей включена. Вы должны отключить это.
Я столкнулся с той же проблемой. У меня был доступ, чтобы написать. но вдруг это прекратилось. Я не мог установить пакеты. Отключение защиты от вымогателей сработало у меня.
The
"XX" is not writable
ошибка также может означать, что указанный вами путь к библиотеке не существует.
Я изо всех сил пытался воспроизвести книгу Кварто.
Мое решение было случайным. я открыл
Я не могу точно объяснить, как RStudio это исправила, но предполагаю, что при запуске она автоматически устанавливает локальную пользовательскую библиотеку.
Использоватьsudo
в код Rscript. У меня такая же ошибка исправлена с помощьюsudo Rscript filename.R
Ошибка
$ Rscript babynames.R
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("babynames") :
'lib = "/usr/local/lib/R/site-library"' is not writable
Error in install.packages("babynames") : unable to install packages
Execution halted
Исправить
$ sudo Rscript babynames.R
[sudo] password for abhay:
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
also installing the dependencies ‘cli’, ‘glue’, ‘utf8’, ‘fansi’, ‘lifecycle’, ‘magrittr’, ‘pillar’, ‘pkgconfig’, ‘rlang’, ‘vctrs’, ‘tibble’
Я заметил, что если rstudio находится в песочнице, он выдает предупреждение «недоступно для записи».
может относиться к разделу «Как управлять разрешениями для файлов и папок в Linux».
Вы можете изменить разрешение на "сайт-библиотека" и все включенные каталоги.
sudo chmod 777 -R / usr / local / lib / R / site-library
Если вы используете R с RStudio, а не запускаете RStudio с иконкой в трее, запустите Rstudio или R из командной строки, используя sudo rstudio
или же sudo R
,
Это точно решит вашу проблему, у меня работает. Это требует sudo
привилегия писать что-то в директории установки.