Проблема з Windows 7, update.packages: “не вдається перемістити тимчасову установку”?


75

Я використовую R 2.13.0 з Windows 7, після надання користувачеві повних привілеїв до папки R (як описано тут ). Це дозволяє мені дуже добре встановлювати нові пакети.

Однак, використовуючи update.packages () для оновлення існуючих пакетів, я постійно отримую таку помилку (наприклад, під час оновлення пакету MASS):

пакет "MASS" успішно розпаковано та перевірено суми MD5

Попередження: неможливо перемістити тимчасову установку 'C: \ Program Files \ R \ R-2.13.0 \ library \ file6cae3bcf \ MASS' у 'C: \ Program Files \ R \ R-2.13.0 \ library \ MASS'

Будь-які пропозиції щодо того, як це виправити?

ps: Запуск R від імені адміністратора або переміщення бібліотеки з програмних файлів не є рішенням (це хак - але я шукаю рішення)


1
Пов'язані питання: stackoverflow.com/questions/5059692 / ...
Andrie

Це лише попередження. Який результат sessionInfo(package="MASS")?
Андрі,

2
Ви на Windows. Тож єдиним надійним рішенням буде встановлення R поза програмними файлами. Ви впевнені, що пакет MASS не завантажується під час спроби оновлення? Тобто ви отримуєте те саме попередження під час оновлення після того, як ви це зробили detach(package:MASS)?
Джоріс Мейс,

@Andrie: правда, я був трохи швидким. Тим не менше, це попередження, яке чітко показує, що пакет MASS не оновлюється.
Джоріс Мейс,

4
Я приходжу сюди через шість років, намагаючись встановити пакети для R 3.4.2 і отримати цю проблему. Піди розберися. Цікаво, що це періодична проблема - інколи встановлення працює, іноді ні. Може залежати від того, які підписи нещодавно завантажив антивірусний сканер. Відповідь Шелдона спрацювала краще, ніж перехід до корпоративних ІТ.
Стефан Коласса,

Відповіді:


106

Я виявив, що проблема справді полягає в антивірусному "захисті файлової системи в режимі реального часу". Я роблю наступне, щоб вирішити проблему:

trace(utils:::unpackPkgZip, edit=TRUE)

Я редагую рядок 140 (рядок 142 у R 3.4.4):

Sys.sleep(0.5)

до:

Sys.sleep(2)

Здається, антивірус зупиняє створення пакета tmp dir. Після зміни на 2 секунди помилка зникла.

РЕДАГУВАТИ: для цього програмно виконати

trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))

(кредити @DavidArenburg)


7
Зараз я це робив неодноразово (що працює тимчасово ), але з якихось причин редагування не затримується ... через деякий час або при будь-якому перезапуску сеансу воно повертається Sys.sleep(0.5). Як зробити так, щоб редагування було постійним?
Scard

2
Також було виявлено, що це тимчасове рішення, і що після перезапуску Sys.sleep повертається до 0,5 с - сподіваючись, що наступне оновлення R вирішить цю проблему
Markm0705

3
Я встановив R 3.5 вчора, і проблема зникла, а також Sys.sleep(0.5)рядок був видалений, тому, мабуть, це більше не потрібно!
Герхард Бургер

4
Ви також можете зробити це проблематично, наприкладtrace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))
Девід Аренбург

1
@DavidArenburg, приємно! (Гадаю, ви все ж мали на увазі програмно: P)
Герхард Бургер,

64

Щоб лише оновити всіх, я (думаю, що я) з’ясував джерело проблеми: антивірус .

"Захист файлової системи в режимі реального часу" заважав R копіювати файли між папками після їх завантаження. Після додавання каталогу R до списку винятків (разом із додаванням дозволу користувача та встановленням R на D: \ R), проблема зникла. З усією цією роботою я міг би також перейти на Linux (я б справді ...)

(Я оновив свою публікацію вищевказаною інформацією: http://www.r-statistics.com/2011/04/how-to-upgrade-r-on-windows-7/ )

Сподіваюсь, це допоможе комусь у майбутньому, Тал


10
На жаль, установка anitvirus заблокована, оскільки ми перебуваємо в корпоративній обстановці
xiaodai

2
Для користувачів, які стикаються з цією проблемою з Kaspersky, на цьому веб-сайті показано, як додати правило виключення: support.kaspersky.com/11146
ahfoss

Дякую! це була моя проблема. Я вимкнув mcaffee, перевстановив свої пакунки, завантажив, а потім знову ввімкнув, і це спрацювало!
Павло

@xiaodai подивись на мою відповідь, щоб знайти спосіб вирішення антивірусної корпоративної політики.
Шелдон,

1
Привіт Тал, у мене є трохи інша проблема, з якою я високо ціную вашу допомогу. Моя проблема полягає в тому, що я НЕ можу завантажити будь-який Rпакет за допомогою library("packageName")або require("packageName"). Я отримую таку помилку:Error: package or namespace load failed for ‘packageName’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]): namespace ‘tibble’ 1.3.0 is already loaded, but >= 1.3.1 is required
rnorouzian

41

Якщо ви не можете вимкнути антивірус, наприклад, через корпоративну політику, ось такий спосіб вирішення проблем я знайшов. Налагодження функції розпакування пакунка, а потім його перехід дає антивірусу достатньо часу, щоб виконати свою роботу, не втручаючись. Використовуйте цю команду:

debug(utils:::unpackPkgZip)
install.packages("packageName")

а потім перейдіть через код (натискаючи клавішу Enter багато разів), коли R починає налагоджувати під час інсталяції.

Я знайшов це рішення тут .


14

Якщо ви можете просто завантажити двійковий файл прямо з CRAN. У Windows при завантаженні це буде zip-файл. Тепер розпакуйте це вручну в папку ..library / на вашому R ( .libPaths()). У мене це працювало на деяких пакунках.


1
Чи є про що турбуватися, роблячи це?
rrs

@rrs Він не встановлюватиме залежностей, тому вам доведеться подбати про це самостійно.
Дейсон,

7

У мене виникла проблема з установкою як swirl, так і dplyr. Я працюю на Windows 64-розрядної версії.

Попередження: неможливо перемістити тимчасову установку

Що я зробив, я отримав доступ до своїх тимчасових файлів на диску C: і відкрив програму для вилучення файлів, а також витягнув файли з тимчасового файлу на диску C: до моїх програмних файлів R на диску C: вручну, скопіювавши їх . ЦЕ ПРАЦЮВАЛО ДВОМУ dpylr і кружляти. Сток!

Ура,

Персик


+1 Це єдине рішення, яке мені вдалося встановити swirlна персональній машині Windows 10. Всі інші рішення для мене не працювали.
GISKid 12.03.18

2

Чи не можете ви використовувати параметр lib.loc лише для оновлення пакунків у вашій особистій бібліотеці (у користувача)? Не повинно бути жодного способу дозволити звичайному користувачеві, що не доповнюється, змінювати файли в папці програмних файлів, тому єдине, що ви можете зробити (якщо ви не хочете збільшувати користувача) - це R не оновлювати там пакунки .

Вирішення полягає в тому, щоб уникнути встановлення R у папці програмних файлів (що може бути більшою чи меншою мірою злому, ніж просто переміщення бібліотеки звідти, залежно від вашої точки зору).

Нарешті, якщо lib.loc цього не вирізає, ви можете подивитися вихідний код для update.packages і створити власну індивідуальну версію, яка завжди уникатиме загального розташування бібліотеки в програмних файлах.


Дякую Ніку, але я сподівався, що це розберуться, зберігаючи R під програмними файлами ...
Тал Галилі

2

Я щойно зустрічався з тим самим запитанням, і вирішенням, яке я виявив, було те, що ви повинні встановлювати пакети за допомогою оригінального програмного забезпечення R (крім того, ви повинні вибрати правильний сайт дзеркала, деякі з них заблоковані). Спочатку я використовував Rstudio для встановлення пакунків, і у мене виникла така сама проблема, як і у вас. Сподіваюся, це корисно.


1

Я кілька разів стикався з цією помилкою. У моєму власному випадку це тому, що наші адміністратори хочуть, щоб ми використовували віддалені віртуальні диски (у Windows 7) для своїх файлів, і все замикається як барабан. Єдиний спосіб, яким я можу використовувати пакети R, - це каталог lib на цьому віддаленому віртуальному диску. Це не буде проблемою, за винятком того, що мережа не завжди є гладкою та швидкою. Таким чином, коли мені потрібен пакет, особливо той, що має кілька інших пакетів у буксируванні (наприклад, MBESS), мені або доводиться проходити процес get.packages () кілька разів, поки він нарешті не закінчиться, або зробити головний біль ІТ швидко, як зайчик для мене. Я не завжди можу дочекатися ІТ.


1

Я просто зайшов у папку бібліотеки (Windows XP) і видалив усі папки fileXXXX. Переконайтеся, що встановлення виконано.


Це спрацювало для мене, з подібною проблемою з rJava. Я вручну створив папку в бібліотеці R / з назвою, R/library/rJavaі вона працювала чудово.
JohnL_10

0

У мене була та сама проблема. Оскільки видається, що проблема полягає в тому, що антивірус блокує передачу завантаженого файлу, я спробував інший спосіб завантаження в install.packages, і він спрацював.

Наприклад:

install.packages("stringr", method = "curl")

0

Ви повинні зайти у властивості папки R та змінити параметри безпеки. Ви можете ввімкнути можливість запису та модифікації для всіх користувачів.


0

Помилка: "неможливо перемістити тимчасову установку" в основному виникає через будь-який антивірус, який працює у вашій системі. Спробуйте розпакувати завантажений файл із папки Temp у шлях бібліотеки за замовчуванням (його можна отримати, запустивши .libPaths () у сеансі R).


0

Я використовую MRAN, і у мене було так багато проблем із версіями. Намагаючись працювати з tidyverse та ggplot2 та оновивши до останньої версії від Microsoft, це вирішило всі мої проблеми з версією R-Studio.

Інформація про версію:

Microsoft R Open 3.5.1
The enhanced R distribution from Microsoft
Default CRAN mirror snapshot taken on 2018-08-01.

Завантажте Microsoft R Open 3.5.1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.