Решение
Удалите .RDS
в кэше Artifactory.
Проблема
У меня очень странная проблема с использованием R 3.6.2 в Ubuntu и корпоративное зеркало CRAN. Допустим, я запускаю следующую команду:
install.packages('rlang')
В ответ я получаю, что версию 0.4.2
не удалось найти. Когда я смотрю в хранилище вручную, я обнаруживаю, что 0.4.2
действительно не существует, но 0.4.3
существует. Сначала я подумал, что что-то не так с файлом PACKAGES
, в котором хранилище хранит индекс. Но я изучил его, и он указывает на правильную и доступную версию rlang
.
Откуда R получает номер версии, который он вставляет в URL запроса при выполнении install.packages()
?
Обновления
Я попробовал install.packages("http://private.com/src/contrib/rlang_0.4.3.tar.gz", repos=NULL)
, и это работает. Далее я попытаюсь повторить проблему в новой среде Ubuntu. Может быть, я запутался при установке R и обновлении до 3.6.2
При переходе на R версии 3.4.4 проблема не устранена. Может быть, это как-то связано с корпоративным зеркалом? Я попробую официальный.
Благодаря Диркс ответ Я обнаружил с available.packages()
, что что-то не так с зеркалом, а не с установкой R.
> AP <- available.packages()
> res <- AP[ AP[,1] == "rlang", ]
> str(res)
Named chr [1:17] "rlang" "0.4.2" NA "R (>= 3.2.0)" NA NA ...
- attr(*, "names")= chr [1:17] "Package" "Version" "Priority" "Depends" ...
Поскольку читаемая версия PACKAGES
в зеркале содержит 0.4.3
, я предполагаю, что PACKAGES.rds
виноват. Далее я попытаюсь прочитать в этом объекте, чтобы подтвердить мое предположение.
Дирк рекомендовал мне проверить временные метки индексов, и я думаю, что нашел проблему. 0.4.3
был выпущен в короткое время go. В то время как читаемый индекс был обновлен лишь немногими go, файл .rds
(вероятно, используемый R) не обновлялся с 2020-01-16
. И поэтому R пытается загрузить версию, которая больше не является частью репозитория.
Теперь мне интересно, кто отвечает за обновление файла RDS
? Сам репозиторий? Я сообщу в следующий раз ... Возможно, проблема решится сама собой после того, как случайное пакетное задание обновит репозиторий.
Пакет rlang:
Метки времени:
Содержимое ПАКЕТОВ:
Я вручную загрузил PACKAGES.rds
и использовал readRDS()
на это. Это указывает на старую версию. Я также проверил репо с зеркальным отображением. Его PACKAGES.rds
указывает на правильную версию. Кроме того, я позаботился о том, чтобы проблема сохранялась независимо от используемого дистрибутива и образа.