如何在AppVeyor上正确配置type =“both”以不需要用户输入?

时间:2018-06-06 00:47:53

标签: r install.packages appveyor

因为R 3.5.0的包(羽毛)只能从源代码获得,所以我当前的AppVeyor版本都失败了。

我已经确定使用PKGTYPE: source将修复构建,但是它需要大约5倍,因为它从源代码构建所有软件包,而实际上它只需要从源构建一个软件包。 PKGTYPE: both导致构建失败。

在RStudio中,install.packages(c("feather", "tidyr"), type = "both"))将从源代码中安装二进制和羽毛的tidyr,这是我想在AppVeyor上复制的行为。但是,它需要用弹出窗口形式的用户输入,询问用户是否应该尝试从源安装。我假设这个UI要求是使用PKGTYPE: both失败的原因。

type = "both"时,有没有办法不要求用户输入来源?

1 个答案:

答案 0 :(得分:0)

通过将install.packages(..., type = "both")选项设置为install.packages.compile.from.source,您可以不需要来自"always"的用户输入。参见:How to not need user input for install.packages(type = "both")

但是,当前,R-AppVeyor使用remotes::install_deps(),根据手册页,它会自动将"both"切换为"binary",因此上面的选项没有意义,而PKGTYPE: both AppVeyor yaml的工作方式似乎与PKGTYPE: binary相同。

因此,如果您知道需要构建哪个软件包,则可以通过在AppVeyor yaml中添加对Rscript的调用来代替使用PKGTYPE: both或构建所有软件包。我在appveyor.yml中添加了以下内容,以便从源代码构建羽毛,然后再通过调用install_deps加载其他软件包:

build_script:
    - Rscript -e install.packages('feather',type='source',repos='https://cran.rstudio.com')
    - travis-tool.sh install_deps

注意,第二个项目符号已经存在