Подтвердить что ты не робот

Предупреждение в 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
    

Пакеты не могут быть установлены или обновлены. Итак, мои вопросы:

  1. есть ли способ избежать проблемы вообще, которая не требует прав администратора или изменений в антивирусных политиках?
  2. есть ли способ получить редактирование для unpackPkgZip для сохранения навсегда?

На данный момент я в тупике. Я подозреваю, что это связано с тем, что антивирус временно блокирует файл/каталог после загрузки, но я ничего не могу с этим сделать. Sys.sleep(2) делает трюк, но я не могу продолжать делать это до того, как каждый пакет установит или обновит и не может заставить редактирование оставаться на месте.

4b9b3361

Ответ 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 устанавливают с первой попытки так, как они предназначены. Вот подробные шаги, чтобы отключить это:

  1. Щелкните правой кнопкой мыши значок McAfee в области уведомлений справа от панели задач и выберите McAfee Endpoint Security.
  2. Нажмите "Предотвращение угроз". Это откроет экран, на котором вы увидите такие категории, как "Защита доступа", "Предотвращение взрывов" и "Сканирование при доступе".
  3. Отмените проверку "Включить проверку при доступе" и нажмите "Применить". (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)