2017-08-30 45 views
0

我有一个无头的Debian 9服务器,它每晚运行一个R BATCH脚本。基本上它会从Gmail帐户获取附加数据以生成夜间报告。这一直在完美的工作很长一段时间。但大约一个星期前,它停了下来。我无法肯定地说,但它可能与Debian版本9的重大更新一致...R库gmailr的函数'gmail_auth'停止工作

脚本首先要做的一件事就是向gmail帐户进行身份验证。就像这样:

library(gmailr) 
gmail_auth(secret_file = 'lib/secret.json') 

但暂停毫不犹豫地给我:

Error in httpuv::startServer(use$host, use$port, list(call = listen)) : 
    Failed to create server 
Calls: gmail_auth ... init_oauth2.0 -> oauth_authorize -> oauth_listener -> <Anonymous> 
Execution halted 

从它的外观,误差来自httpuv。所以我已经树脂安装了:

devtools::install_github(c("shiny", "httpuv"), "rstudio") 

但是没有爱。

添加到这个谜,我的本地Linux机器可以运行gmail_auth调用没有错误。这是一款'Linux Mint 17.3 Rosa'。

也许相关:

Shiny runExample Error - Fail to create server

LOCAL BOX:

sessionInfo() 
R version 3.4.1 (2017-06-30) 
Platform: x86_64-pc-linux-gnu (64-bit) 
Running under: Ubuntu 14.04.5 LTS 

Matrix products: default 
BLAS: /usr/lib/libblas/libblas.so.3.0 
LAPACK: /usr/lib/lapack/liblapack.so.3.0 

locale: 
[1] LC_CTYPE=en_US.UTF-8   LC_NUMERIC=C     
[3] LC_TIME=en_US.UTF-8   LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=sv_SE.UTF-8  LC_MESSAGES=en_US.UTF-8  
[7] LC_PAPER=sv_SE.UTF-8   LC_NAME=sv_SE.UTF-8   
[9] LC_ADDRESS=sv_SE.UTF-8  LC_TELEPHONE=sv_SE.UTF-8  
[11] LC_MEASUREMENT=sv_SE.UTF-8 LC_IDENTIFICATION=sv_SE.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] gmailr_0.7.1  extrafont_0.17  ReporteRs_0.8.8  
[4] ReporteRsjars_0.0.2 DBI_0.7    rjson_0.2.15  

loaded via a namespace (and not attached): 
[1] zip_1.0.0   Rcpp_0.12.12  compiler_3.4.1 plyr_1.8.4  
[5] bindr_0.1   R.methodsS3_1.7.1 R.utils_2.5.0  base64enc_0.1-3 
[9] tools_3.4.1  digest_0.6.12  uuid_0.1-2  tibble_1.3.4  
[13] gtable_0.2.0  pkgconfig_2.0.1 png_0.1-7   rlang_0.1.2  
[17] shiny_1.0.5  bindrcpp_0.2  Rttf2pt1_1.3.4 rJava_0.9-8  
[21] httr_1.3.1  officer_0.1.5  dplyr_0.7.2  xml2_1.1.1  
[25] knitr_1.17  gdtools_0.1.5  grid_3.4.1  glue_1.1.1  
[29] R6_2.2.2   rvg_0.1.4   extrafontdb_1.0 ggplot2_2.2.1  
[33] purrr_0.2.3  magrittr_1.5  scales_0.5.0  htmltools_0.3.6 
[37] assertthat_0.2.0 xtable_1.8-2  mime_0.5   colorspace_1.3-2 
[41] httpuv_1.3.5  lazyeval_0.2.0 munsell_0.4.3  R.oo_1.21.0  

Debian服务器上:

sessionInfo() 
R version 3.3.3 (2017-03-06) 
Platform: x86_64-pc-linux-gnu (64-bit) 
Running under: Debian GNU/Linux 9 (stretch) 

locale: 
[1] LC_CTYPE=en_US.UTF-8   LC_NUMERIC=C     
[3] LC_TIME=en_US.UTF-8   LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=sv_SE.UTF-8  LC_MESSAGES=en_US.UTF-8  
[7] LC_PAPER=sv_SE.UTF-8   LC_NAME=sv_SE.UTF-8   
[9] LC_ADDRESS=sv_SE.UTF-8  LC_TELEPHONE=sv_SE.UTF-8  
[11] LC_MEASUREMENT=sv_SE.UTF-8 LC_IDENTIFICATION=sv_SE.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] gmailr_0.7.1  extrafont_0.17  ReporteRs_0.8.8  
[4] ReporteRsjars_0.0.2 DBI_0.7    RMariaDB_0.11-6  
[7] rjson_0.2.15  

loaded via a namespace (and not attached): 
[1] zip_1.0.0   Rcpp_0.12.12  plyr_1.8.4  bindr_0.1   
[5] R.methodsS3_1.7.1 R.utils_2.5.0  base64enc_0.1-3 tools_3.3.3  
[9] digest_0.6.12  uuid_0.1-2  tibble_1.3.4  gtable_0.2.0  
[13] pkgconfig_2.0.1 png_0.1-7   rlang_0.1.2  shiny_1.0.5.9000 
[17] bindrcpp_0.2  Rttf2pt1_1.3.4 rJava_0.9-8  httr_1.3.1  
[21] officer_0.1.5  dplyr_0.7.2  xml2_1.1.1  knitr_1.17  
[25] gdtools_0.1.5  grid_3.3.3  glue_1.1.1  R6_2.2.2   
[29] rvg_0.1.4   extrafontdb_1.0 ggplot2_2.2.1  purrr_0.2.3  
[33] magrittr_1.5  scales_0.5.0  htmltools_0.3.6 assertthat_0.2.0 
[37] xtable_1.8-2  mime_0.5   colorspace_1.3-2 httpuv_1.3.5  
[41] lazyeval_0.2.0 munsell_0.4.3  R.oo_1.21.0 

回答

0

好吧,一天工作终于解决了。我想...

R阻挡了1410端口。从我发现的情况来看,这个端口需要httpuv。但是,在杀死R进程之后出现了新的错误。 httpuv服务器似乎开始,但gmailr认证需要从网络浏览器重新运行,产生新的.httr-auth

我在猜测R在我的无头Debian服务器上冻结了waiting for authentication in browser...状态,有效地阻止了端口1410。在我的笔记本电脑(Mint机器)上完成身份验证过程并将.httr-auth移动到无头服务器后,一切似乎都奏效。

到底为什么发生这种情况我不知道。但如果从现在开始一切正常,我会接受无知!手指交叉。