Gre*_*reg 5 64-bit r build devtools package-development
我一直在my_pkg使用最新版本(4.1.1)的 R Studio 在 RStudio 中开发一个带有小插图的专有软件包(称之为“”)。我正在使用以下软件的 Lenovo ThinkPad 进行工作
sysname release version machine\n "Windows" "10 x64" "build 19043" "x86-64"\nRun Code Online (Sandbox Code Playgroud)\n由 提供Sys.info()。
直到最近,我的工作流程还相当顺利(偶尔有例外)。然而,我开始遇到一个非常令人费解的错误,当工作流程顺利进行时,该错误是在与之前几乎相同的条件下发生的。devtools
尽管我的小插图以前总是成功构建的,而且我没有同时编辑它们,但现在由于架构上的特定原因,构建失败了......
\nError : package \'my_pkg\' is not installed for \'arch = x64\'\nRun Code Online (Sandbox Code Playgroud)\n...当且仅当我在构建中包含小插图时。
\n我已经从头开始重新安装了 R (以及 Rtools 和 RStudio),重新安装了devtools(及其依赖项),并将我的项目“倒回”到最后一次成功的Git 提交devtools::check()。我还与@SteffenMoritz和@Alexis等响应者进行了广泛的故障排除,我已在Info by Request部分中为他们附加了更多信息。
不幸的是,没有任何效果。
\ndevtools::check()当我跑步时devtools::check(),一切都充满希望......
i Updating my_pkg documentation\ni Loading my_pkg\nWriting NAMESPACE\nWriting NAMESPACE\n-- Building --------------------------------------------------------------------------------- my_pkg --\nSetting env vars:\n* CFLAGS : -Wall -pedantic\n* CXXFLAGS : -Wall -pedantic\n* CXX11FLAGS: -Wall -pedantic\n-------------------------------------------------------------------------------------------------------\n\xe2\x88\x9a checking for file \'C:\\Users\\greg\\Workspace\\R\\Packages\\my_pkg/DESCRIPTION\' ...\n- preparing \'my_pkg\': (733ms)\n\xe2\x88\x9a checking DESCRIPTION meta-information ... \n- installing the package to build vignettes\n -----------------------------------\n- installing *source* package \'my_pkg\' ...\n ** using staged installation\n ** R\n ** inst\n ** byte-compile and prepare package for lazy loading\n ** help\n *** installing help indices\n converting help for package \'my_pkg\'\n finding HTML links ... done \n foo html\n my_pkg-package html\n *** copying figures\n ** building package indices\n ** installing vignettes\n ** testing if installed package can be loaded from temporary location\nRun Code Online (Sandbox Code Playgroud)\n...直到这一步testing if installed package can be loaded from temporary location。这里出现错误:
Error : package \'my_pkg\' is not installed for \'arch = x64\'\n Error: loading failed\n Execution halted\n ERROR: loading failed\n- removing \'C:/Users/greg/AppData/Local/Temp/RtmpSaabgx/Rinst332419517258/my_pkg\'\n -----------------------------------\n ERROR: package installation failed\nError in (function (command = NULL, args = character(), error_on_status = TRUE, : \n System command \'Rcmd.exe\' failed, exit status: 1, stdout + stderr (last 10 lines):\nE> ** building package indices\nE> ** installing vignettes\nE> ** testing if installed package can be loaded from temporary location\nE> Error : package \'my_pkg\' is not installed for \'arch = x64\'\nE> Error: loading failed\nE> Execution halted\nE> ERROR: loading failed\nE> * removing \'C:/Users/greg/AppData/Local/Temp/RtmpSaabgx/Rinst332419517258/my_pkg\'\nE> -----------------------------------\nE> ERROR: package installation failed\nType .Last.error.trace to see where the error occurred\nRun Code Online (Sandbox Code Playgroud)\n这.Last.error.trace表明有一个问题pkgbuild:
> .Last.error.trace\n\n Stack trace:\n\n 1. devtools::check()\n 2. withr::with_envvar(pkgbuild::compiler_flags(FALSE), action = "prefix", ...\n 3. base:::force(code)\n 4. pkgbuild::build(pkg$path, tempdir(), args = build_args, quiet = quiet, ...\n 5. withr::with_temp_libpaths(rcmd_build_tools(options$cmd, c(options$path, ...\n 6. base:::force(code)\n 7. pkgbuild:::rcmd_build_tools(options$cmd, c(options$path, options$args), ...\n 8. pkgbuild:::with_build_tools(callr::rcmd_safe(..., env = env, ...\n 9. withr::with_path(rtools_path(), code)\n 10. base:::force(code)\n 11. callr::rcmd_safe(..., env = env, spinner = FALSE, show = FALSE, ...\n 12. callr:::run_r(options)\n 13. base:::with(options, with_envvar(env, do.call(processx::run, ...\n 14. base:::with.default(options, with_envvar(env, do.call(processx::run, ...\n 15. base:::eval(substitute(expr), data, enclos = parent.frame())\n 16. base:::eval(substitute(expr), data, enclos = parent.frame())\n 17. callr:::with_envvar(env, do.call(processx::run, c(list(bin, args = real_cmdargs, ...\n 18. base:::force(code)\n 19. base:::do.call(processx::run, c(list(bin, args = real_cmdargs, ...\n 20. (function (command = NULL, args = character(), error_on_status = TRUE, ...\n 21. throw(new_process_error(res, call = sys.call(), echo = echo, ...\nRun Code Online (Sandbox Code Playgroud)\n我不知道为什么这个架构
\nError : package \'my_pkg\' is not installed for \'arch = x64\'\nRun Code Online (Sandbox Code Playgroud)\n现在应该只是一个问题。我的电脑没有发生任何实质性的变化。
\n尽管有消息package installation failed,尽管事实上我已经运行devtools::check()而不是devtools::install(),但该包的行为就好像它是“半途”安装的!我可以my_p在控制台中输入,RStudio 会自动完成my_pkg;然后我可以输入my_pkg::,RStudio 将提供 中函数的标准自动完成列表my_pkg,这些函数都可用。
然而,输入my_pkg::不仅会召唤@exported 函数,还会暴露我的内部函数和数据,就像我输入了my_pkg:::!
devtools::install()或devtools::build(vignettes = FALSE)奇怪的是,当我实际运行时devtools::install(),或者相对而言devtools::build_vignettes(vignettes = FALSE),该过程顺利完成!
\xe2\x88\x9a checking for file \'C:\\Users\\greg\\Workspace\\R\\Packages\\my_pkg/DESCRIPTION\' ...\n- preparing \'my_pkg\': (640ms)\n\xe2\x88\x9a checking DESCRIPTION meta-information ... \n- checking for LF line-endings in source and make files and shell scripts (384ms)\n- checking for empty or unneeded directories\n Removed empty directory \'my_pkg/inst/libs\'\n Omitted \'LazyData\' from DESCRIPTION\n- building \'my_pkg_0.0.0.9000.tar.gz\'\n \nRunning "C:/Users/greg/R/bin/x64/Rcmd.exe" INSTALL \\\n "C:\\Users\\greg\\AppData\\Local\\Temp\\Rtmpozvh26/my_pkg_0.0.0.9000.tar.gz" --install-tests \n* installing to library \'C:/Users/greg/R/library\'\n* installing *source* package \'my_pkg\' ...\n** using staged installation\n** R\n** inst\n** tests\n** byte-compile and prepare package for lazy loading\n** help\n*** installing help indices\n converting help for package \'my_pkg\'\n finding HTML links ... done\n foo html\n my_pkg-package html\n*** copying figures\n** building package indices\n** installing vignettes\n** testing if installed package can be loaded from temporary location\n*** arch - i386\n*** arch - x64\n** testing if installed package can be loaded from final location\n*** arch - i386\n*** arch - x64\n** testing if installed package keeps a record of temporary installation path\n* DONE (my_pkg)\nMaking \'packages.html\' ... done\nRun Code Online (Sandbox Code Playgroud)\nmy_pkg::现在,自动补全功能完全按预期工作,并且仅分别由和公开适当的功能my_pkg:::。
devtools::install(build_vignettes = TRUE)或devtools::build()然而,情节还有进一步的转折。当我使用或比较时,我收到与以下类似的错误:devtools::install(build_vignettes = TRUE)devtools::build()devtools::check()
\xe2\x88\x9a checking for file \'C:\\Users\\greg\\Workspace\\R\\Packages\\my_pkg/DESCRIPTION\' ...\n- preparing \'my_pkg\': (672ms)\n\xe2\x88\x9a checking DESCRIPTION meta-information ... \n- installing the package to build vignettes\n -----------------------------------\n- installing *source* package \'my_pkg\' ...\n ** using staged installation\n ** R\n ** inst\n ** byte-compile and prepare package for lazy loading\n ** help\n *** installing help indices\n converting help for package \'my_pkg\'\n finding HTML links ... done\n foo html\n my_pkg-package html\n *** copying figures\n ** building package indices\n ** installing vignettes\n ** testing if installed package can be loaded from temporary location\nRun Code Online (Sandbox Code Playgroud)\n Error : package \'my_pkg\' is not installed for \'arch = x64\'\n Error: loading failed\n Execution halted\n ERROR: loading failed\n- removing \'C:/Users/greg/AppData/Local/Temp/RtmpM7RbHr/Rinst504119422cd/my_pkg\'\n -----------------------------------\n ERROR: package installation failed\nError in (function (command = NULL, args = character(), error_on_status = TRUE, : \n System command \'Rcmd.exe\' failed, exit status: 1, stdout + stderr (last 10 lines):\nE> ** building package indices\nE> ** installing vignettes\nE> ** testing if installed package can be loaded from temporary location\nE> Error : package \'my_pkg\' is not installed for \'arch = x64\'\nE> Error: loading failed\nE> Execution halted\nE> ERROR: loading failed\nE> * removing \'C:/Users/greg/AppData/Local/Temp/RtmpM7RbHr/Rinst504119422cd/my_pkg\'\nE> -----------------------------------\nE> ERROR: package installation failed\nType .Last.error.trace to see where the error occurred\nRun Code Online (Sandbox Code Playgroud)\ndevtools::build_vignettes()奇怪的是,尽管存在上述构建小插图的问题,但当我调用devtools::build_vignettes()sans argument 或 with时,一切都以某种方式顺利运行dependencies = TRUE:
i Building my_pkg vignettes\n\xe2\x88\x9a Creating \'doc/\'\n\xe2\x88\x9a Adding \'^doc$\' to \'.Rbuildignore\'\n\xe2\x88\x9a Setting active project to \'<no active project>\'\n\xe2\x88\x9a Adding \'/doc/\' to \'.gitignore\'\n\xe2\x88\x9a Setting active project to \'<no active project>\'\ni Moving backstory.html, intro.html, library.html, template.html, usage.html, backstory.R, intro.R, library.R, template.R, and usage.R to doc/\ni Copying backstory.Rmd, intro.Rmd, library.Rmd, template.Rmd, and usage.Rmd to doc/\n\xe2\x88\x9a Creating \'Meta/\'\n\xe2\x88\x9a Adding \'^Meta$\' to \'.Rbuildignore\'\n\xe2\x88\x9a Setting active project to \'<no active project>\'\n\xe2\x88\x9a Adding \'/Meta/\' to \'.gitignore\'\n\xe2\x88\x9a Setting active project to \'<no active project>\'\ni Building vignette index\nRun Code Online (Sandbox Code Playgroud)\n假设错误是我的,并且我无意中在 R 项目中的某个地方引入了问题,我切换到了一个完全不同的 Git 分支。最近对该分支的提交已经devtools::check()顺利通过。然而,即使切换到这个“安全”分支后,同样的问题仍然存在!
从上次成功检查到问题开始之间,我没有进行任何更新:
\n同样,这些小插曲从项目的早期就已经存在了。
\n我希望my_pkg在不久的将来推出一个概念验证,而这些小插图对其可用性来说非常重要。
由于“ my_pkg”是专有的,因此我在这里将我的个人和组织信息(名称、文件路径等)匿名化,如上所述。
\n\n您介意分享您的描述文件和插图标题/元信息吗?
\n
文件DESCRIPTION:
Package: my_pkg\nTitle: Proprietary Package for My Org\nVersion: 0.0.0.9000\nAuthors@R: \n person(given = "Greg",\n family = "Lastname",\n role = c("aut", "cre"),\n email = c("glastname@myorg.com"))\nDescription: The `my_pkg` package is a proprietary project for My Org,\n and as such I have changed the names to project the innocent.\nLicense: file LICENSE\nEncoding: UTF-8\nLazyData: true\nRoxygen: list(markdown = TRUE)\nRoxygenNote: 7.1.2\nURL: https://github.com/myorg/my_pkg\nBugReports: https://github.com/my_org/my_pkg/issues\nSuggests: \n knitr,\n rmarkdown,\n testthat (>= 3.0.0)\nConfig/testthat/edition: 3\nVignetteBuilder: knitr\nDepends: \n R (>= 2.10)\nRun Code Online (Sandbox Code Playgroud)\n小插图标题:
\nintro.Rmd:---\ntitle: "A Catchphrase!"\nauthor: "Gregory Lastname"\ndate: "`r Sys.Date()`"\noutput: rmarkdown::html_vignette\nvignette: >\n %\\VignetteIndexEntry{A Catchphrase!}\n %\\VignetteEngine{knitr::rmarkdown}\n %\\VignetteEncoding{UTF-8}\n---\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n # Show no output.\n eval = FALSE, results = "hide",\n # Show no dialog.\n message = FALSE, warning = FALSE,\n # Show no errors.\n error = TRUE, purl = FALSE,\n # Default format.\n collapse = TRUE, comment = "#>"\n)\n ```\nRun Code Online (Sandbox Code Playgroud)\nbackstory.Rmd:---\ntitle: "A Reference, to Science Fiction"\nauthor: "Gregory Lastname"\ndate: "`r Sys.Date()`"\noutput: rmarkdown::html_vignette\nvignette: >\n %\\VignetteIndexEntry{A Reference, to Science Fiction}\n %\\VignetteEngine{knitr::rmarkdown}\n %\\VignetteEncoding{UTF-8}\n---\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n # Show no output.\n eval = FALSE, results = "hide",\n # Show no dialog.\n message = FALSE, warning = FALSE,\n # Show no errors.\n error = TRUE, purl = FALSE,\n # Default format.\n collapse = TRUE, comment = "#>"\n)\n ```\nRun Code Online (Sandbox Code Playgroud)\nlibrary.Rmd---\ntitle: "A Generic One-Liner"\nauthor: "Gregory Lastname"\ndate: "`r Sys.Date()`"\noutput: rmarkdown::html_vignette\nvignette: >\n %\\VignetteIndexEntry{A Generic One-Liner}\n %\\VignetteEngine{knitr::rmarkdown}\n %\\VignetteEncoding{UTF-8}\n---\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n # Show no output.\n eval = FALSE, results = "hide",\n # Show no dialog.\n message = FALSE, warning = FALSE,\n # Show no errors.\n error = TRUE, purl = FALSE,\n # Default format.\n collapse = TRUE, comment = "#>"\n)\n ```\nRun Code Online (Sandbox Code Playgroud)\ntemplate.Rmd---\ntitle: "A Well-Written Description"\nauthor: "Gregory Lastname"\ndate: "`r Sys.Date()`"\noutput: rmarkdown::html_vignette\nvignette: >\n %\\VignetteIndexEntry{A Well-Written Description}\n %\\VignetteEngine{knitr::rmarkdown}\n %\\VignetteEncoding{UTF-8}\n---\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n # Show no output.\n eval = FALSE, results = "hide",\n # Show no dialog.\n message = FALSE, warning = FALSE,\n # Show no errors.\n error = TRUE, purl = FALSE,\n # Default format.\n collapse = TRUE, comment = "#>"\n)\n ```\nRun Code Online (Sandbox Code Playgroud)\nusage.Rmd---\ntitle: "An Exhortation!"\nauthor: "Gregory Lastname"\ndate: "`r Sys.Date()`"\noutput: rmarkdown::html_vignette\nvignette: >\n %\\VignetteIndexEntry{An Exhortation!}\n %\\VignetteEngine{knitr::rmarkdown}\n %\\VignetteEncoding{UTF-8}\n---\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n # Show no output.\n eval = FALSE, results = "hide",\n # Show no dialog.\n message = FALSE, warning = FALSE,\n # Show no errors.\n error = TRUE, purl = FALSE,\n # Default format.\n collapse = TRUE, comment = "#>"\n)\n ```\nRun Code Online (Sandbox Code Playgroud)\n\n\n如果
\n.Rproj使用文本编辑器打开该文件,您会看到什么?
该my_pkg.Rproj文件在 MS 记事本中打开。注意:自最初提交以来,该文件尚未被修改。
Version: 1.0\n\nRestoreWorkspace: No\nSaveWorkspace: No\nAlwaysSaveHistory: Default\n\nEnableCodeIndexing: Yes\nUseSpacesForTab: Yes\nNumSpacesForTab: 2\nEncoding: UTF-8\n\nRnwWeave: Sweave\nLaTeX: pdfLaTeX\n\nAutoAppendNewline: Yes\nStripTrailingWhitespace: Yes\nLineEndingConversion: Posix\n\nBuildType: Package\nPackageUseDevtools: Yes\nPackageInstallArgs: --no-multiarch --with-keep.source\nPackageRoxygenize: rd,collate,namespace\nRun Code Online (Sandbox Code Playgroud)\n按要求
\n\n\n如果
\nR CMD build/INSTALL ...从命令行运行它可以工作吗?
我也从命令行构建
\ngreg@CO-GLASTNAME MINGW64 ~/Workspace/R\n$ R CMD build C:/Users/greg/Workspace/R/Packages/my_pkg\nRun Code Online (Sandbox Code Playgroud)\n但我得到了上面回显的相同输出:
\n* checking for file \'C:/Users/greg/Workspace/R/Packages/my_pkg/DESCRIPTION\' ... OK\n* preparing \'my_pkg\':\n* checking DESCRIPTION meta-information ... OK\n* installing the package to build vignettes\n -----------------------------------\n* installing *source* package \'my_pkg\' ...\n** using staged installation\n** R\n** inst\n** byte-compile and prepare package for lazy loading\n** help\n*** installing help indices\n converting help for package \'my_pkg\'\n finding HTML links ... done\n foo html\n my_pkg-package html\n*** copying figures\n** building package indices\n** installing vignettes\n** testing if installed package can be loaded from temporary location\nError : package \'my_pkg\' is not installed for \'arch = x64\'\nError: loading failed\nExecution halted\nERROR: loading failed\n* removing \'C:/Users/greg/AppData/Local/Temp/RtmpgFIc2r/Rinst1cc0231a6b37/my_pkg\'\n -----------------------------------\nERROR: package installation failed\nRun Code Online (Sandbox Code Playgroud)\n
你可能是对的,这是小插图的问题。\n(但当然我不能 100% 确定,因为我不知道你的文件)
\ncheck()关于您对and运行的困惑install():
\n\nRStudio\xe2\x80\x99s \xe2\x80\x9cbuild 并重新加载不\xe2\x80\x99t 构建小插图
\n
这就是为什么您可能必须运行 devtools::install() 才能收到错误。
\n我将向您发布一些最有可能出现的小插图问题(这里也是一个很好的较长教程):
\n首先检查以下事项:
\n该目录名为 vignettes/ 而不是 vignette/。
\n检查 .Rbuildignore 是否未覆盖小插图
\n确保您拥有必要的插图元数据(乍一看您的效果似乎不错)
\n这些东西很可能对你来说没问题(但只是为了检查)。
\n在我看来,最可能的问题是,您的描述文件不包含 .Rmd 小插图的所有必要依赖项
\n还最好写:
\nVignetteBuilder: knitr, rmarkdown\nRun Code Online (Sandbox Code Playgroud)\n建议中还额外保留 rmarkdown。还对 Suggests 和 VignetteBuilder 进行了编织。
\n更重要的是(!)您还需要在 .Rmd 文件中使用的软件包Suggests。由于我假设您正在使用 RMarkdown,因此您的插图中有一些代码。\n检查您的代码并查看您正在使用哪些包。小插图使用的任何包都应在DESCRIPTION.
我可以想象这也可能是原因,为什么它看起来有效一次,然后在没有任何改变(在你看来)之后它失败了。
\n可能是当它工作时,您仍然在后台加载了所有必需的包。这样就不会产生影响,因为Suggests.
这是我的第一个猜测,问题可能是什么。\n如果这不起作用,我会尝试删除小插图,看看是否是某个小插图导致了问题。
\n| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |