Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Устранить сбой пакета rgdal в сборке Travis

Автор вопроса: Jindra LackoОтветов: 3

Я успешно использовал пакет 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()'

Любые советы о том, как решить эту проблему, очень ценятся

rtravis-cigdalspatial

Ответы

Ответ 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы