Предупреждение в install.packages: невозможно переместить временную установку
Я обнаружил ряд вопросов, связанных с этим предупреждением при установке или обновлении пакетов в R/RStudio, но ни один из них не соответствует моей ситуации:
- Корпоративная система Windows 7, поэтому нет доступа к привилегии администратора
- Невозможно внести изменения в списки исключений McAfee Anti-Virus
- R полностью установлен в пользовательском пространстве
C:\Users\[myname]\R
- RStudio полностью установлен в пользовательском пространстве
C\Users\[myname]\RStudio
- нет разрешений в любом из каталогов... У меня есть полный контроль над ними
- Проблема возникла только после установки R 3.4, но RStudio случайно не срабатывает при запуске или висит в течение нескольких месяцев
-
R_LIBS_USER
добавлен как переменная среды пользователя, указывая на правый каталог -
.libPaths()
показать правильные каталоги, как системные, так и пользовательские - R версии 3.4.2, RStudio версии 1.0.153
- Удалили R и Rstudio и сделали чистую переустановку обоих
- Пробовал
trace(utils:unpackPkgZip,edit = T)
и отредактировал Line 140 Sys.sleep(0.5)
в Sys.sleep(2)
, который иногда работает временно, но редактирование не будет оставаться... сбрасывается в Sys.sleep(0.5)
при каждом перезапуске сеанса - Бывает как в RStudio, так и в RGui
-
Любой пакет размером более нескольких килобайт дает сообщение:
package ‘packagename successfully unpacked and MD5 sums checked
Warning in install.packages :
unable to move temporary installation ‘C:\Users\[myname]\R\win-library\3.4\file2b884fc37c13\packagename to ‘C:\Users\[myname]\R\win-library\3.4\packagename
Пакеты не могут быть установлены или обновлены. Итак, мои вопросы:
- есть ли способ избежать проблемы вообще, которая не требует прав администратора или изменений в антивирусных политиках?
- есть ли способ получить редактирование для
unpackPkgZip
для сохранения навсегда?
На данный момент я в тупике. Я подозреваю, что это связано с тем, что антивирус временно блокирует файл/каталог после загрузки, но я ничего не могу с этим сделать. Sys.sleep(2)
делает трюк, но я не могу продолжать делать это до того, как каждый пакет установит или обновит и не может заставить редактирование оставаться на месте.
Ответы
Ответ 1
Это была единственная вещь, которая работала для меня по этой проблеме (удаление антивирусного программного обеспечения не привело меня ни к чему, к сожалению), поэтому надеюсь, что это сработает для вас.
В системах Windows иногда установка библиотек может выполняться слишком быстро, создавая ошибку "неспособная переместить временную установку". Тогда пакет не найден в пользовательской библиотеке, потому что он не перемещен...
Чтобы исправить, попробуйте: trace(utils:unpackPkgZip, edit=TRUE)
Затем перейдите к строке 140 в коде и смените Sys.sleep(0.5)
на Sys.sleep(2.5)
Это приятное долгосрочное решение, которое не требует ручного перемещения пакетов, удаления программного обеспечения, замены обязанностей администратора или индивидуального маршрутизации пакетов в определенные места.
Ответ 2
Мой оригинальный ответ ниже, но впоследствии я нашел лучшее решение.
Выполните следующую строку:
Trace(utils:::unpackPkgZip, edit=TRUE)
Обратите внимание, что там три колоны, а не две.
Затем отредактируйте строку 142 от Sys.sleep(0.5)
до: Sys.sleep(2.0)
и нажмите, чтобы сохранить изменения (номер строки может немного отличаться). К сожалению, это не распространяется на сеансы R, но для этого требуется всего 10 секунд, а затем вы можете установить пакеты для текущего сеанса в свое сердце.
Оригинальный ответ:
Я столкнулся с той же проблемой на работе. Мне удалось использовать предложенный Шелдоном подход, но, как уже отмечалось, это может быстро утомить. В качестве альтернативы я обнаружил, что могу перейти к расположению загруженных zip файлов в моем временном каталоге (как сообщает install.packages
), разархивировать файл или файлы (при наличии зависимых пакетов будет несколько zip файлов).), а затем переместите или скопируйте все разархивированные каталоги прямо в мой каталог R\win-library\3.4. Это тоже не очень весело, но я считаю, что это менее болезненно, чем проходить через отладчик по методу Шелдона, особенно когда задействованы несколько зависимостей, которые также должны быть установлены.
Ответ 3
Если вы не можете отключить антивирус, я нашел обходной путь, который не требует редактирования файла unpackPkgZip
. Отладка функции пакета распаковки и последующее пошаговое выполнение дает антивирусу достаточно времени, чтобы выполнить свою работу без вмешательства. Используйте эту команду:
debug(utils:unpackPkgZip) install.packages("packageName")
а затем пошагово пройдитесь по коду (нажав несколько раз клавишу ввода), когда R начинает отладку во время установки.
Я нашел это решение здесь.
Если вы хотите сделать это изменение более постоянным, вы можете добавить код отладки в свой файл Rprofile, см. Здесь, но вам все равно придется использовать пошаговую функцию разархивирования при каждой установке пакета.
Ответ 4
Получена такая же ошибка - похоже, проблема безопасности gp/access компании.
Также может быть целесообразно проверить, не имеет ли папка, в которой он не записывается, имеет структуру только для чтения (правый клик - свойства). Этот адрес папки можно найти, выполнив: .libPaths() [1] в R.
Специальным решением этой проблемы является распаковка и сохранение загруженных (но не перемещенных) пакетов с использованием фрагмента кода R ниже. Вы получите сообщение об ошибке, где расположены бинарные пакеты (что-то вроде: C: /Users/.... AppData/...)
Теперь вы можете просто разархивировать файлы здесь, в свое место.libPaths()
zipF <- list.files("C:/Users/<YOURNAMEHERE>/AppData/Local/Temp/Rtmp4Apz6Z/downloaded_packages", full.names = TRUE)
outDir <- .libPaths()[1]
for(i in 1: length(zipF)) {
unzip(zipF[i],exdir=outDir)
}
Более общее решение по-прежнему будет чрезвычайно полезным, так как это, к сожалению, является общей проблемой при обновлении R в Windows.
Ответ 5
У меня была такая же проблема на моем рабочем месте, и один из моих коллег обнаружил большое обходное решение. К сожалению, это временная вещь, которую вам нужно будет делать каждый раз, когда вы устанавливаете пакеты, а не постоянное исправление. Мы используем корпоративную Windows 8 (без полномочий администратора) с McAfee, и я тестировал это в R 3.4.0-3.4.3.
Временное отключение функции McAfee "Проверка при доступе" (в Threat Prevention) разрешило это для нас - теперь пакеты R устанавливают с первой попытки так, как они предназначены. Вот подробные шаги, чтобы отключить это:
- Щелкните правой кнопкой мыши значок McAfee в области уведомлений справа от панели задач и выберите McAfee Endpoint Security.
- Нажмите "Предотвращение угроз". Это откроет экран, на котором вы увидите такие категории, как "Защита доступа", "Предотвращение взрывов" и "Сканирование при доступе".
- Отмените проверку "Включить проверку при доступе" и нажмите "Применить". (NB: легко забыть нажать "Применить", но это необходимо)
После того, как вы установили свои пакеты, лучше повторить процесс, чтобы снова включить сканирование при доступе.
Ответ 6
Я исправил свой экземпляр этой проблемы (Windows 7), удалив атрибут "Только для чтения" в папке R, которая пыталась переместить материал.
Я перешел в команду "Выполнить" из меню "Пуск" в Windows (7) и набрал атрибут -r + s:\\
Обратите внимание, что просто щелчок правой кнопкой мыши по папке и попытка изменения свойств не выполнялись в соответствии с этой ссылкой от Microsoft: https://support.microsoft.com/en-us/help/326549/you-cannot-view-or- Переключение в -r Свинец только или-The-системы-атрибуты-of-фо
Надежда помогает кому-то.
Надеюсь, что это изменение не портит меня другими способами.
Ответ 7
Это было сообщение об ошибке, которое было изложено для меня:
package ‘mlogit successfully unpacked and MD5 sums checked
Warning in install.packages :
unable to move temporary installation ‘C:\Users\E\Documents\R\win-
library\3.4\file9ec6cfb5e40\mlogit to ‘C:\Users\E\Documents\R\win-
library\3.4\mlogit
The downloaded binary packages are in
C:\Users\E\AppData\Local\Temp\RtmpS0uNDm\downloaded_packages
То, что я сделал, было отправлено туда, где был загружен пакет (C:\Users\E\AppData\Local\Temp\RtmpS0uNDm\download_packages), а затем скопировал этот zip файл на рабочий стол, а затем использовал Winzip для распаковки в мой каталог файлов, где все пакеты для R сохраняются (C:\Users\E\Documents\R\win-library\3.4). Теперь он будет загружен в R.
library("mlogit")
Loading required package: Formula
Loading required package: maxLik
Loading required package: miscTools
....
Это работало хорошо для меня, поскольку это был единственный пакет, который почему-то не загружался. Не может быть полезно, если вы должны сделать это для каждого пакета.
Ответ 8
Я также нашел одно решение, если вышеупомянутые решения не будут работать в корпоративном антивирусе. Сначала измените путь установки пакета, используйте эту команду и выполните в R:
install.packages('caTools','D:\\ML\\Tools\\Installed\\RPackages')
Теперь он покажет ошибку консоли, которая не может двигаться, и пакет будет помещен в какое-то место. просто помните это место, нам нужен этот zip файл для дальнейших операций.
Теперь используйте эту команду:
install.packages("D:/ML/Tools/Installed/RPackages/caTools_1.17.1.zip", repos = NULL, type = "win.binary", lib="D:/ML/Tools/Installed/R-3.4.3/library")
Ответ 9
Я боролся с той же проблемой. Для меня (в Windows 10) проблема заключалась в использовании MalwareBytes (Premium trial). Я удалил его и вернулся к использованию Защитника Windows, и проблема была решена. Возможно, если больше времени, я могу узнать, как создать задержку проверки исключения и/или файла для MalwareBytes (то есть, это довольно хорошая программа), но руководство пользователя (https://www.malwarebytes.com/pdf/guides/Malwarebytes-User-Guide.pdf) неясно.
Ответ 10
ответ кслайерр у меня сработал.
Ответ 11
Если вы запустите приведенный ниже оператор непосредственно перед выражением install.packages, он должен установить пакет:
trace("unpackPkgZip", where=asNamespace("utils"), quote(Sys.sleep(2.5)), at=14L, print=FALSE)