путь установки недоступен для записи R, невозможно обновить пакеты

#r #linux #bioinformatics #rstudio-server

#r #bioconductor #mgcv

Вопрос:

Я пытаюсь установить Bioconductor в R, используя код на их веб-сайте. Когда я ввожу код (см. Ниже) Я получаю сообщение об ошибке, в котором говорится, что некоторые пакеты не могут быть обновлены, путь установки недоступен для записи.

 > ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,
 

Выживание

Я могу установить этот пакет, перейдя в раздел пакеты / установить пакеты.

 > utils:::menuInstallPkgs()
trying URL    'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/Matrix_1.2-8.zip'
Content type 'application/zip' length 2775038 bytes (2.6 MB)
downloaded 2.6 MB

trying URL 'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/mgcv_1.8-  16.zip'
Content type 'application/zip' length 2346257 bytes (2.2 MB)
downloaded 2.2 MB

trying URL     'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/survival_2.40-1.zip'
Content type 'application/zip' length 5109948 bytes (4.9 MB)
downloaded 4.9 MB

package ‘Matrix’ successfully unpacked and MD5 sums checked
package ‘mgcv’ successfully unpacked and MD5 sums checked
package ‘survival’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:Usersstxeb8AppDataLocalTempRtmp2tQZ4vdownloaded_packages
 

Затем я могу перейти к пакетам / загрузить пакеты и успешно загрузить их, выполнить поиск и убедиться, что пакеты есть.

 > local({pkg <- select.list(sort(.packages(all.available =   TRUE)),graphics=TRUE)
  if(nchar(pkg)) library(pkg, character.only=TRUE)})
Loading required package: nlme
This is mgcv 1.8-16. For overview type 'help("mgcv-package")'.
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
  if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
  if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available =     TRUE)),graphics=TRUE)
  if(nchar(pkg)) library(pkg, character.only=TRUE)})
> search()
[1] ".GlobalEnv"            "package:survival"      "package:mgcv"         
[4] "package:nlme"          "package:Matrix"        "package:BiocInstaller"
[7] "package:stats"         "package:graphics"      "package:grDevices"    
[10] "package:utils"         "package:datasets"      "package:methods"      
[13] "Autoloads"             "package:base"         
 

Но затем, когда я перехожу к установке bioconductor, он выдает мне то же сообщение об ошибке, что Matrix, mgcv и survival не могут быть обновлены.

 > ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,
  survival
 

Что я могу сделать, чтобы иметь возможность обновлять эти пакеты, чтобы я мог установить bioconductor?

Комментарии:

1. Проверьте .libPaths() и упорядочите порядок в соответствии с вашим предпочтительным порядком папок.

2. Спасибо, я проверю это и изменю порядок.

Ответ №1:

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

Таким образом, я бы также не советовал устанавливать пакеты с использованием административных прав, поскольку вам потребуется делать это в будущем каждый раз, когда вам нужно обновлять эти пакеты!

Чтобы устранить эту проблему и предотвратить ее минимизацию в будущих обновлениях, вам следует выполнить следующие шаги:

  1. Обратите внимание, какие пакеты не удалось обновить (уже показано в сообщении об ошибке).
  2. Найдите папки, в которых установлены все пакеты R. .libPaths() Это должно дать два результата: назначение в вашей домашней папке и системной папке.

«/home/USER/R/ x86_64-pc-linux-gnu-library/X.X» «/usr/ lib/R / library»

  1. Установите пакеты с install.packages(c("PKG1", "PKG2", "PKG3")) помощью или BiocManager::install(c("PKG1", "PKG2", "PKG3")) *
  2. Только если у вас есть права администратора: вручную удалите старые папки пакетов из системной папки («/ usr / lib / R / library»), используя права администратора (sudo) ИЛИ введите R с правами администратора в последний раз и запустите remove.packages(c("PKG1", "PKG2", "PKG3"), lib = "/usr/lib/R/library") .

* Если есть проблемы с путем установки, добавьте аргумент , lib = "/home/USER/R/x86_64-pc-linux-gnu-library/X.X" в любую из функций установки на шаге 3. В этом аргументе явно указано установить в вашу домашнюю папку.

Существует единственная проблема с этим подходом, по крайней мере, с официальным репозиторием R в Arch Linux: всякий раз, когда R обновляется, обновленная версия по-прежнему включает пакеты в системной папке, которые нельзя обновить без прав администратора. Поэтому для каждого обновления R эту процедуру необходимо повторять. Я особенно смотрю на тебя survival !!!

* Редактировать: Важно отметить, что biocLite больше не является рекомендуемым инструментом для установки пакетов BioConductor. Вместо этого вы должны использовать BiocManager, который находится в официальном репозитории CRAN ( install.packages("BiocManager") ).

** Второе редактирование: поскольку этот ответ по-прежнему получает голоса, я обновил и очистил ответ.

Комментарии:

1. В Linux эти пакеты R устанавливаются как пакеты ОС, т. Е. r-base зависит от r-cran-matrix, r-cran-survival и r-cran-mgcv, а также от нескольких других. Проблема с этим подходом заключается в том, что пакеты ОС будут повреждены после удаления соответствующих пакетов R. Более того, во время следующего обновления пакета ОС пакеты R будут снова установлены в системные каталоги и впоследствии вызовут проблемы с Bioconductor.

2. Я по-прежнему придерживаюсь своего ответа, что пакеты обычно никогда не должны устанавливаться пользователем с правами администратора !! .. НО я понимаю вашу точку зрения по этим конкретным пакетам! При запуске R 3.6.1 (в Arch Linux) эти пакеты, похоже, интегрированы в базовую установку, и поэтому я не могу удалить пакеты с помощью метода, описанного в моем ответе. Однако я не могу учитывать более ранние версии!

3. > удалить.packages («Matrix») Удаление пакета из ‘/ home / ME / R / x86_64-pc-linux-gnu-library / 3.6’ (поскольку ‘lib’ не указан) Ошибка в remove.packages: нет пакета с именем ‘Matrix’

4. @KasperThystrupKarstensen ваш метод действительно работал для manjaro (дистрибутив arch). Пакеты были в /usr/lib/R/ library . Что все еще вызывает недоумение, так это то, почему пакеты в конечном итоге были установлены с root: я выполнил чистую установку, предварительно удалил R и удалил каталог R со всеми предыдущими пакетами. Во всем процессе не использовался sudo, и все же у меня было четыре пакета, доступные только для root. Не уверен, откуда это взялось. В любом случае, проблема решена, по крайней мере, на данный момент.

5. @RicardoPietrobon Извините за поздний ответ, раньше я не был уверен, но теперь я совершенно уверен. С каждым выпуском R такие пакеты, как survival устанавливаются вместе с R во время обновления и, следовательно, попадают в /usr/lib/R/library . Для меня это крайне раздражает, поскольку я ожидаю, что базовая команда разработчиков не будет включать какие-либо пакеты во время установки (или обновления) R и вместо этого интегрирует их в базовый код

Ответ №2:

Для меня это была проблема с разрешением. Сначала я определил, где пакеты были установлены с помощью installed.packages()[, c("Package", "LibPath")] . Это выводит длинную матрицу из 2 столбцов с именами и местоположениями пакетов. Затем вы увидите, где находятся пакеты-нарушители. В моем случае они были в /usr/lib/R/site-library и /usr/lib/R/library . Затем я изменил разрешение этих папок на chmod (я использовал chmod -R 777 в основной папке R, это мой персональный компьютер, поэтому безопасность здесь не вызывает большой озабоченности, я думаю).

Комментарии:

1. Спасибо, я попробую

2. Вам не нужен канал (или magrittr ) здесь: installed.packages()[, c("Package", "LibPath")] делает то же самое

Ответ №3:

Если вы используете R / Rstudio в Windows, просто откройте R / Rstudio от имени администратора. Щелкните правой кнопкой мыши на значке, затем запустите от имени администратора

Ответ №4:

Похоже, что несколько «рекомендуемых» пакетов установлены в двух местах — возможно, с помощью учетной записи администратора в каталоге, к которому у вас нет доступа на запись, а затем с помощью RStudio в каталоге, где у вас есть доступ на запись. biocLite() жалуется на первое.

Если biocLite() не поступает жалоб на пакет Bioconductor, который не может быть установлен (отличается от не может быть обновлен), проблем нет, и базовые пакеты Bioconductor были успешно установлены. Проверьте https://support.bioconductor.org для будущей поддержки, связанной с биокондукторами.

Ответ №5:

Одним из решений является открытие терминала и загрузка R с правами администратора

 sudo R
update.packages()
source("https://bioconductor.org/biocLite.R")
biocLite()
 

Затем вы можете обновить. Но осторожно. Это может создавать пакеты администратором в каталоге, который должен принадлежать пользователю.

В этом случае вместо загрузки R как root (что решает проблему до следующего обновления), проверьте .libPaths() . У вас будет список каталогов.

 .libPaths()
"/home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4" "/usr/lib/R/library"
 

В моем случае все пакеты в «/ usr / lib / R / library» принадлежат root, и все, кроме одного, принадлежат обычному пользователю (не root) в «/ home/ itsame/ R / x86_64-pc-linux-gnu-library / 3.4».

Если у вас есть права администратора, простым решением может быть запуск chown во всех местах: например, у меня возникли проблемы с обновлением пакета curl. Я использовал:

 sudo chown -R it_s_me /home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4/curl/
 

Комментарии:

1. Что делать, если у вас нет прав администратора? Я являюсь пользователем на крупном организационном сервере, и этот ответ не помогает.

2. Я бы рекомендовал затем установить какую-нибудь миниконду, затем создать среду для R, тогда вы сможете лучше управлять вещами за счет самостоятельной установки всех пакетов и за счет размещения этих пакетов. Вы также можете создать новую папку библиотеки, указав ее путь первым в libPaths() … например

3. Спасибо. Но что сработало для меня, так это то, что системный администратор выполнил 2 установки R (R-3.4.5 и R-3.6.1). Администраторы установили R-3.4 по умолчанию, поэтому все пакеты, которые вы отправляете с помощью командной строки, попадают в папку 3.4 lib. Один (пользователь, а не администратор) должен указать путь к библиотеке в вашей папке / home, чтобы направить библиотеки Bioconductor на установку. В конце концов мне пришлось сделать что-то вроде описанного выше. libPaths() «/home/it_s_me/R/ x86_64-pc-linux-gnu-library/3.6.1» «/usr/ lib/R/ library»

Ответ №6:

У меня была аналогичная проблема с другими пакетами Bioconductor, и решение оказалось проще, чем я думал. Мне пришлось установить некоторые пакеты ОС, указанные в моем журнале: libcurl-dev , libcurl4-openssl-dev , libssl-dev .

Мой совет — проверить ваш журнал R и поискать «Сбой конфигурации, поскольку [ПАКЕТ] не найден. Попробуйте установить «.

Ответ №7:

Поскольку с версией R 3.6.1 сценарий http://bioconductor.org/biocLite.R возвращает это сообщение » Ошибка: с R версии 3.5 или выше установите пакеты Bioconductor с помощью BiocManager; см. https://bioconductor.org/install » Я решил проблему с помощью следующих шагов:

  1. Получите список каталогов, используемых R для установки библиотек, и выберите тот, у которого есть права на запись, используя: .libPaths()
  2. Установка библиотеки «BiocManager» с помощью: install.packages("BiocManager")
  3. Установка библиотеки «bioconductor» путем принудительной установки каталога с правами на запись с помощью: BiocManager::install("Rgraphviz", lib = "C:/Users/tizbet/Documents/R/win-library/3.6")

Я работал над следующей установкой R:

platform x86_64-w64-mingw32 , arch x86_64 , os mingw32 , system x86_64, mingw32 , version.string R version 3.6.1 (2019-07-05)

Я был вдохновлен ответом Каспера Тиструпа Карстенсена

Ответ №8:

Попробуйте добавить аргумент force = TRUE :

 BiocManager::install("XX", force = TRUE )
 

Ответ №9:

Всякий раз, когда вы хотите работать с R-кодом, в котором необходимо установить пакеты: —

  • Windows: откройте R-studio как «Запуск от имени администратора» [Щелкните правой кнопкой мыши на значке]
  • Linux: запуск от имени пользователя sudo; в противном случае получите права на запись от администратора

Ответ №10:

Ubuntu:

 sudo apt install libcurl-dev
 

Fedora:

 sudo dnf install libcurl-devel