2016-02-19 26 views
5

我在Windows電腦上運行R CMD INSTALL --build package。我的軟件包導入了一些其他軟件包,這些軟件包依賴於更多的軟件包。我將所有依賴項安裝在本地r_libs文件夾中,並且一切正常。如何使用R CMD安裝不依賴性檢查?

現在有時我在不同的windows電腦上有我的軟件包源代碼。在這臺計算機上,我沒有安裝所有的依賴包。

當我嘗試使用R CMD INSTALL --build package,我得到了明顯的「ERROR: dependencies 'package a', 'package b', etc, are not available for package"

我的問題是:我可以建立使用R CMD INSTALL --build沒有相關性檢查,沒有在DESCRIPTION文件中刪除ImportDepends條目的包?

諮詢--help後,我嘗試了--no-test-load選項,但沒有運氣。

+0

不知道如果我的理解,你想不安裝依賴安裝包? – nicola

+3

@nicola OP想要建立一個Windows二進制文件,而不需要安裝所有的依賴項。 AFAIK,這是不可能的。 –

+0

@JorisMeys,正確。我進行了一些嘗試,發現我可以在R中使用install.packages(「package」,repos = NULL,type ='source',INSTALL_opts =「 - build」)來完成它。但是,如果可以使用R CMD INSTALL來完成,我仍然會感興趣? –

回答

3

我想你想建立一個補償包的一個.zip二進制版本子宮不是所有的依賴關係都安裝在哪裏。我擔心我必須讓你失望,因爲這是不可能的。

構建一個二進制包分兩步完成:首先從源代碼安裝包(這就是爲什麼你必須使用R CMD INSTALL,然後創建的二進制文件以壓縮格式壓縮以安裝在Windows機器上。在從源代碼安裝的時間檢查,任何缺少的依賴將拋出你面對錯誤。

對於R在從源代碼安裝的時候需要從依賴關係的信息,你不能得到各地建立之前安裝它們這也是有道理的,R中的已安裝軟件包包含一組.rds文件,其中包含更方便的R格式的軟件包信息。爲了爲NAMESPACE文件創建該信息,它需要能夠訪問從中導入功能的軟件包。如果不是,它不能構造關於命名空間的正確信息。

所以你唯一的選擇是在你用來構建的計算機上安裝依賴項。如果您真的想在該計算機上使用該軟件包,則必須安裝這些依賴項。

的更多信息: [R內幕:https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Package-Structure

寫作R附加:https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Package-namespaces