Я успешно использовал пакет rgdal R в своей сборке Travis около года с небольшими проблемами.
С недавним развертыванием версии 1.4-2 rgdal ранее проходившие сборки начали давать сбой с сообщением
In file included from inverser.c:5:0:
/tmp/Rtmpysf7it/R.INSTALL748c54b7a89/rgdal/inst/include/projects.h:150:33:
error: conflicting types for ‘projUV’ typedef struct { double u, v; } projUV;
^
In file included from inverser.c:3:0: /usr/include/proj_api.h:54:37:
note: previous declaration of ‘projUV’ was here
typedef struct { double u, v; } projUV;
Я не уверен, откуда взялся "старый" proj_api.h и как его удалить в среде Travis.
Моя конфигурация travis.yml выглядит следующим образом:
language: r
dist: trusty
sudo: false
cache:
packages: yes
r_packages:
- testthat
- roxygen2
- covr
addons:
apt:
packages:
- gdal-bin
- proj-bin
- libgdal-dev
- libgdal1-dev
- libproj-dev
- libgeos-dev
- r-cran-ncdf4
- libv8-3.14-dev
- libprotobuf-dev
- protobuf-compiler
- libudunits2-dev
- libnetcdf-dev
- libjq-dev
before_install:
- sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
- sudo add-apt-repository -y ppa:opencpu/jq
- sudo apt-get --yes --force-yes update -qq
after_success:
- Rscript -e 'covr::coveralls()'
Любые советы о том, как решить эту проблему, очень ценятся
Ответ 1 · рейтинг 3 · cboettig
Просто чтобы уточнить, как вы можете сказать Трэвису установить из R-Forge, как предложили Эдзер и Роджер. Я считаю, что вы можете добавить следующее в любом месте вашего .travis.yml:
repos:
CRAN: https://cran.rstudio.com
rforge: http://R-Forge.R-project.org
Подробнее см. в документах по настройке Travis R.
В качестве альтернативы вы можете буквально запустить команду R в блоке before_install, например так:
before_install:
- R -e 'install.packages("rgdal", repos=c("http://R-Forge.R-project.org", "http://cran.rstudio.com"))'
что, возможно, немного более очевидно, если менее аккуратно.
Ответ 2 · рейтинг 2 · Roger Bivand
Ответ 2 правильный ответ. Я являюсь сопровождающим rgdal и авторитетно ответил на этот вопрос по почте и в твиттере. Когда достаточное количество пользователей устаревших версий PROJ (до 4.9.3, то есть до сентября 2016 г.) подтвердят, что 1.4-3 решает их проблемы, я отправлю 1.4-3 в CRAN. Я не следую и никогда не буду следить за SO, но если бы вы поступили правильно и разместили сообщение на R-sig-geo, вы бы привлекли мое внимание.
Я советую оказать существенное давление на любые системы, все еще использующие PROJ 4.8.0, для обновления. Эта версия была опубликована 13 марта 2012 года, поэтому сегодня ей исполняется 7 лет, и она действительно заслуживает переработки.
Ответ 3 · рейтинг 1 · arnfinn
Одним из способов решения этой проблемы было бы использование более старой версии rgdal. Чтобы установить определенную версию пакета rgdal, вы можете добавить следующую строку в файл DESCRIPTION:
Remotes: cran/[email protected]
Это установит и будет использовать предыдущую версию (1.3-9), выпущенную до 1.4-2. Это сработало для меня по крайней мере.
Идея взята отсюда: https://travis-ci.community/t/travis-build-ignoring-r-package-version-in-description/2431/2