Почему renv не восстанавливает пакеты, которые устарели для более старых версий R?

У меня есть следующая установка:

  • Я инициализировал новый R-Project (R 3.4.3) из репозитория git.
  • Проект из репозитория использовал renv(0.11.0) для моментального снимка пакетов проекта.
  • Файл renv.lock содержит несколько пакетов. Один из них raster с версией 2.9-5

Поскольку более новые версии пакета raster в CRAN изменили зависимости R (R›= 3,5), renv не может восстановить пакет, поскольку renv больше не находит пакет raster в CRAN.

Сообщение:

Error: package 'raster' is not available

Проект в репозитории git был собран с R версии 3.4.3. Я также использую локальное репо для этого проекта, но это вообще не вызывает проблем.

Есть предложения, как заставить renv работать как положено?


person Freakazoid    schedule 23.10.2020    source источник
comment
Я думаю, что добавление более старой контрольной точки MRAN в качестве пользовательского репозитория пакетов в renv должно помочь.   -  person AEF    schedule 23.10.2020


Ответы (2)


Кажется, это работает для меня с renv 0.12.0. Используя этот файл блокировки:

{
  "R": {
    "Version": "3.4.4",
    "Repositories": [
      {
        "Name": "CRAN",
        "URL": "https://cran.rstudio.com"
      }
    ]
  },
  "Packages": {
    "Rcpp": {
      "Package": "Rcpp",
      "Version": "1.0.5",
      "Source": "Repository",
      "Repository": "CRAN",
      "Hash": "125dc7a0ed375eb68c0ce533b48d291f"
    },
    "lattice": {
      "Package": "lattice",
      "Version": "0.20-35",
      "Source": "Repository",
      "Repository": "CRAN",
      "Hash": "10a22a9a66fbe7944e9ef98985d7c927"
    },
    "raster": {
      "Package": "raster",
      "Version": "2.9-5",
      "Source": "Repository",
      "Repository": "CRAN",
      "Hash": "85a01c2f0ad30d43f51b861a2d78d5e8"
    },
    "renv": {
      "Package": "renv",
      "Version": "0.12.0",
      "Source": "Repository",
      "Repository": "CRAN",
      "Hash": "7340c71f46a0fd16506cfa804e224e44"
    },
    "sp": {
      "Package": "sp",
      "Version": "1.4-4",
      "Source": "Repository",
      "Repository": "CRAN",
      "Hash": "e0485290545c0e768c2b50390114da1f"
    }
  }
}

Я вижу следующее на renv::restore():

> renv::restore()
The following package(s) will be updated:

# CRAN ===============================
- Rcpp     [* -> 1.0.5]
- raster   [* -> 2.9-5]
- sp       [* -> 1.4-4]

Do you want to proceed? [y/N]: y
* Querying repositories for available binary packages ... Done!
* Querying repositories for available source packages ... Done!
Retrieving 'https://cran.rstudio.com/src/contrib/Rcpp_1.0.5.tar.gz' ...
        OK [file is up to date]
Retrieving 'https://cran.rstudio.com/src/contrib/Archive/raster/raster_2.9-5.tar.gz' ...
        OK [file is up to date]
Retrieving 'https://cran.rstudio.com/src/contrib/sp_1.4-4.tar.gz' ...
        OK [file is up to date]
Installing Rcpp [1.0.5] ...
        OK [built from source]
Installing sp [1.4-4] ...
        OK [built from source]
Installing raster [2.9-5] ...
        OK [built from source]

Если у вас по-прежнему возникают проблемы даже после обновления до renv 0.12.0, я бы рекомендовал зарегистрировать проблему с дополнительным контекстом по адресу https://github.com/rstudio/renv/issues.

person Kevin Ushey    schedule 24.10.2020
comment
Спасибо за ваше предложение, но ошибка все та же. - person Freakazoid; 02.11.2020
comment
Сообщите о проблеме на странице github.com/rstudio/renv/issues — спасибо! - person Kevin Ushey; 02.11.2020

Предложения не работали для меня. Но я решил проблему, проигнорировав кеш от renv. Кажется, эта ошибка вызвана кешированием пакетов в renv.

Решение: я установил параметр renv с use.cash на F до того, как использовал renv::restore().

Я был бы признателен, если бы кто-нибудь знал об этом больше или имел хорошую документацию по кэшированию в renv.

person Freakazoid    schedule 02.11.2020