Изменена ли структура подкаталогов репозиториев пакетов по сравнению с R 2.15.2?

Какой-то неловкий/нехороший, но поскольку не так давно я перешел от "чистого пользователя" к "начинающему разработчику", я никогда не читал CHANGELOG, когда новый R версия вышла - до сегодняшнего дня (и у меня такое чувство, что я должен сделать это привычкой); -)

Но я не уверен, действительно ли предполагаемое изменение произошло, так как я ничего не мог с этим поделать с первого взгляда на CHANGELOG от RR 2.15.2:

Актуальный вопрос

Возможно ли, что структура (подкаталог) репозиториев пакетов изменилась с

./bin/windows/contrib/2.xx/

to

./src/contrib/2.xx/ или даже ./src/contrib?

Или, по крайней мере, теперь файл PACKAGES должен жить здесь: ./src/contrib/PACKAGES?

Фоновая информация

До версии 2.15.1 следующий путь работал для установки пакетов из моего локального репозитория пакетов:

path.repos  <- "L:/R/packages"
repos       <- file.path("file://", path.repos)

Функция contrib.url займет repos и разворачивает ее в правый подкаталог:

> contrib.url(repos)
[1] "file:///L:/R/packages/bin/windows/contrib/2.15"

Но когда я пытаюсь запустить install.packages(), я получаю следующую ошибку для R 2.15.2:

> install.packages("mypkg", 
+     lib=file.path(R.home(), "library"),
+     repos=repos,
+     type="win.binary"
+ )
Error in read.dcf(file = tmpf) : cannot open the connection
In addition: Warning message:
In read.dcf(file = tmpf) :
  cannot open compressed file 'L:/R/packages/src/contrib/PACKAGES', probable reason 'No such file or directory'
> 

Когда я делаю то же самое с R 2.15.1, все работает плавно.

Due dilligence

Есть несколько ссылок на репозитории в CHANGELOG, но единственный раздел, который я нашел, дает мне некоторые доказательства того, что предполагаемое изменение произошло это:

УСТАНОВКА УПАКОВКИ

Для установки двоичного пакета Windows или Mac OS X install.packages() проверяет, доступен ли исходный пакет в тех же репозиториях, и сообщите, является ли это более поздней версией или есть исходный пакет, но нет двоичного пакета доступный.

Просто взглянул на официальную документацию и понял, что, возможно, arg type не передается с точностью до contrib.url() правильно как мне кажется, install.package() смотрит на место для пакетов type="source"?

Ответ 1

Эта конкретная ошибка не совпадает с моей.

Эта проблема относится к проверкам install.packages() теперь выполняется перед установкой. Как сказал Рапстер, пытается найти исходный пакет для сравнения двоичной версии с:

Для установки двоичного пакета Windows или Mac OS X install.packages() проверяет, доступен ли исходный пакет в тех же репозиториях, и сообщите, является ли это более поздней версией или есть исходный пакет, но нет двоичного пакета доступны.

Таким образом, простой способ раздавить это сообщение - создать каталог R/src/contrib и запустить tools::write_PACKAGES() в этом каталоге, чтобы создать (пустой) PACKAGES файл.

И, конечно, причина, по которой вы не получаете это сообщение в 2.15.1, состоит в том, что он не выполняет проверку (см. выше цитату R NEWS), которую выполняет 2.15.2.

Я опубликовал отчет об ошибках моих проблем. Нет новостей. Может также отправить его в список рассылки R.