【问题标题】:how to install a R package from github manually or offline如何手动或离线从 github 安装 R 包
【发布时间】:2025-11-29 13:25:01
【问题描述】:

我尝试从 github 下载 tsdyn 包(它尚未在 cran 上更新)但我的代理阻止我连接到 github。

library(devtools)
install_github("MatthieuStigler/tsDyn", ref="Dev94", subdir="tsDyn") 

Downloading github repo MatthieuStigler/tsDyn@Dev94
Erreur dans function (type, msg, asError = TRUE)  : 
Failed to connect to api.github.com port 443: Connection refused

然后我下载了 .zip 并尝试从 .zip 安装包并收到此错误:

Erreur dans read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package",     "Type")) : 
impossible d'ouvrir la connexion
De plus : Message d'avis :
In read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
impossible d'ouvrir le fichier compressé 'tsDyn-master/DESCRIPTION', cause probable : 'No such file or directory' 

我不明白,因为我可以在存储库中找到说明文件。 我认为它正在尝试连接到我的专业连接不允许的互联网。 我发现有些使用 Linux 的人成功地通过 443 以外的另一个端口下载了它(我认为必须允许端口 8000,但不确定),但我有 Windows 7。 我有管理员凭据,当我尝试以管理员身份使用 R 时它也不起作用。 我真的对代理配置一无所知,所以如果您有任何想法,请尽量详细说明我应该执行的操作。

非常感谢!

Edit1:我尝试了你的建议,并删除了文件存储库中不必要的级别,我做了一个

Rscript -e "install.packages ('C:/Users/stephanie/Downloads/tsDyn.zip',repos=NULL) " 

我从终端“将包安装到'C:/Users/stephanie/Documents/R/win-library/3.1'(因为'lib'未指定)。它似乎工作但当我使用命令时R 中的 library(tsDyn) 我得到“Erreur dans library(tsDyn), 'tsDyn' n'est pas un nom correct de package installé”(我猜这不是已安装包的正确名称)。虽然,文件存在于win-library 但我注意到其他包目录中始终存在的文件 MD5 和 INDEX 在这里不存在。一个想法?

Edit2:我找到了一个解决方案,按照建议删除了不必要的级别,然后我使用了 devtools 的安装功能,它工作(离线)...

library(devtools)
install("C:/Users/stephanie/Downloads/tsDyn")

我真的不明白终端命令的区别所以,如果有人能给我线索,我已经解决了我的 pb 但我有兴趣了解如何!

【问题讨论】:

  • 您尝试使用什么命令来安装 ZIP 文件?
  • 我在菜单«packages»中选择了«install the package from zip files»

标签: r github download package


【解决方案1】:

在防火墙后面工作时,您可以通过设置代理来避免这种情况。从 Rstudio 设置代理的说明在此 Link 中。

  1. 请咨询您的 IT 管理员,您应该使用哪个代理访问内部网络上的任何 HTTP/HTTPS?在大多数情况下,这将是 HTTP - http://proxy.companydomain:8080 HTTPS - https://proxy.companydomain:8080
  2. 找到 Renviron.site 文件。我的一个 Windows 10,我将它定位在 C:\Users\yourid\Documents\R\R-3.4.3\etc。在 Linux 中,它会有所不同。
  3. 使用文本编辑器打开 Renviron.site 并粘贴您的代理。保存文件并重启R

     options(Internet.info = 0)
     http_proxy=http://proxy.companydomain:8080/
     https_proxy=https://proxy.companydomain:8080/
    
  4. 就我而言,设置代理后出现另一个错误,即unsupported proxy ....libcurl is built without the HTTPS-proxy support.。因此,我将第二行改为http:// 而不是https://。这工作没有任何错误。

    https_proxy=http://proxy.companydomain:8080/
    

    希望这会有所帮助。设置代理有点容易,让事情自动进行。

【讨论】:

    【解决方案2】:

    要么将所有内容上移一级,这样您就没有名为 tsDyn 的中间文件夹,然后可以:

    install_github("MatthieuStigler/tsDyn")
    

    或者保持原样

    install_github("MatthieuStigler/tsDyn/tsDyn")
    

    证据就在布丁中

    library(devtools)
    install_github("MatthieuStigler/tsDyn/tsDyn")
    
        # Downloading github repo MatthieuStigler/tsDyn@master
    # Installing tsDyn
    # "C:/PROGRA~1/R/R-31~1.2/bin/x64/R" --vanilla CMD INSTALL  \
    #   "C:/Users/dominic/AppData/Local/Temp/RtmpiwFHUz/devtools30d0779d2870/MatthieuStigler-tsDyn-8048816/tsDyn"  \
    #   --library="D:/Copy/R/win-library/3.1" --install-tests 
    # 
    # * installing *source* package 'tsDyn' ...
    # ** libs
    # 
    # *** arch - i386
    # gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c llar.c -o llar.o
    # gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c misc.c -o misc.o
    # gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c search.c -o search.o
    # gcc -m32 -shared -s -static-libgcc -o tsDyn.dll tmp.def llar.o misc.o search.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.2/bin/i386 -lR
    # installing to D:/Copy/R/win-library/3.1/tsDyn/libs/i386
    # 
    # *** arch - x64
    # gcc -m64 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c llar.c -o llar.o
    # gcc -m64 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c misc.c -o misc.o
    # gcc -m64 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c search.c -o search.o
    # gcc -m64 -shared -s -static-libgcc -o tsDyn.dll tmp.def llar.o misc.o search.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.2/bin/x64 -lR
    # installing to D:/Copy/R/win-library/3.1/tsDyn/libs/x64
    # ** R
    # ** data
    # ** inst
    # ** tests
    # ** preparing package for lazy loading
    # ** help
    # *** installing help indices
    # ** building package indices
    # ** installing vignettes
    # ** testing if installed package can be loaded
    # *** arch - i386
    # *** arch - x64
    # * DONE (tsDyn)
    
    library(tsDyn)
    tsDyn::autopairs
    
    # function (x, lag = 1, h, type = c("levels", "persp", "image", 
    #     "lines", "points", "regression")) 
    # {
    #     panel <- list(levels = function() sm::sm.density(X, h = rep(h, 
    #         2), xlab = xlab, ylab = ylab, main = "density", display = "slice"), 
    #         persp = function() sm::sm.density(X, h = rep(h, 2), xlab = xlab, 
    #             ylab = ylab, main = "density", display = "persp"), 
    #         image = function() sm::sm.density(X, h = rep(h, 2), xlab = xlab, 
    #             ylab = ylab, main = "density", display = "image"), 
    #         lines = function() plot(X, xlab = xlab, ylab = ylab, 
    #             main = "lines", type = "l"), points = function() plot(X, 
    #             xlab = xlab, ylab = ylab, main = "scatter"), regression = function() sm::sm.regression(X[, 
    #             1], X[, 2], h = h, xlab = xlab, ylab = ylab, main = "regression", 
    #             ask = FALSE))
    #     lags <- c(-lag, 0)
    #     X <- embedd(x, lags = lags)
    #     xlab <- paste("lag", lag)
    #     ylab <- paste("lag", 0)
    #     type <- match.arg(type)
    #     if (missing(h)) {
    #         h <- sm::hnorm(X)[1]
    #     }
    #     panel[[type]]()
    # }
    # <environment: namespace:tsDyn>
    

    【讨论】:

    • 你真的认为这会有所帮助吗?我不明白为什么,因为我似乎有一个连接/代理 pb
    • 但我很怀疑,因为我成功地在我的个人计算机上从 github 安装了包(当然在家里没有连接限制),而没有更改路径。我真的认为我的问题与工作中的网络配置有关(但我不是你猜的专家)
    • 我尝试了您的建议,并删除了文件中不必要的级别,我制作了 Rscript -e "install.packages ('C:/Users/stephanie/Downloads/tsDyn.zip',repos= NULL)”,我从终端得到“将包安装到'C:/Users/stephanie/Documents/R/win-library/3.1'(因为'lib'未指定)。它似乎工作但是当我使用命令时R 中的 library(tsDyn) 我得到“Erreur dans library(tsDyn), 'tsDyn' n'est pas un nom correct de package installé”(我猜这不是已安装包的正确名称)。我继续问这个问题,我没有足够的字符来解释其余部分
    • 是的,我很确定涉及到防火墙,但大多数时候可以离线安装软件包,我在这里尝试这样做。
    【解决方案3】:

    我已经成功地通过这种方式从 Github 手动安装 R 包:

    # 1. Find the location where R saves installed packages:
    libpath <- .libPaths()
    
    # 2. On the Github webpage of the package you want to install, 
    ## in the top right corner click on "Code", 
    ## then click "Download ZIP", save it, unzip it, 
    ## and move the unzipped folder to the `libpath` directory identified above,
    ## ensuring the folder name has retained the correct name
    
    # 3. In R, set the working directory to `libpath`
    setwd(libpath[1])
    
    #4. Install and load the package manually using the `install()` function of 
    ##   the `devtools` package:
    library(devtools)
    install("tsDyn")
    library(tsDyn)
    

    【讨论】: