如何解决此警告消息:“需要(间接)孤立包:'influenceR'”?

How can I resolve this warning message: "Requires (indirectly) orphaned package: ‘influenceR’"?

提问人:layal 提问时间:5/7/2023 更新时间:11/11/2023 访问量:114

问:

运行时,我收到以下警告消息,但我不知道我的 rrclust 包的哪个函数来自。devtools::check()influenceR

❯ checking package dependencies ... WARNING

Requires (indirectly) orphaned package: ‘influenceR’

我试图添加 的部分,但相同的消息不断出现。influenceRSuggests:DESCRIPTION

R 警告

评论


答:

2赞 I_O 5/7/2023 #1

{influenceR} 是由你的 repo 使用 {utils} 和 {stats} 的大量包建议的,至少是通过其他包间接建议的:*

tools::dependsOnPkgs('influenceR', recursive = TRUE,
                     dependencies = 'all') |>
length()
## [1] 724

对 influenceR 的唯一强依赖似乎是由 {diagrammeR} 引起的:

> tools::dependsOnPkgs('influenceR', recursive = TRUE, dependencies = 'strong')
## [1] "DiagrammeR"

...因此,间接依赖关系可能发生在代码中的 OR 功能之间的某个地方。plotprint

*与 {NCmisc} 一起列出list.functions.in.file()

评论

0赞 layal 5/7/2023
谢谢你,@I_O,这个有趣而有启发性的答案。知道了这一点,避免此警告消息的最佳做法是什么?我应该添加到文件中吗?如果是这样,在哪一节(、、...)?influenceRDESCRIPTIONDependsImports
0赞 I_O 5/7/2023
到目前为止,还没有毅力创建 R 包,所以我无法分辨。无论如何,我想知道是否允许软件包在安装过程中覆盖依赖项管理的用户首选项。:-?
1赞 Matt Bannert 5/14/2023 #2

@I_O是对的。 取决于哪个不再有维护者,请参阅此处:https://cran.r-project.org/web/packages/influenceR/index.htmldiagrammeRinfluenceR

CRAN 声称最新版本甚至在不到 2 周前刚刚发布。我建议联系作者,因为很多人使用我会联系作者。近年来,他在 R twitter 上一直很活跃,非常有帮助。influenceRdiagrammeRdiagrammeR

2赞 moodymudskipper 5/15/2023 #3

该警告是合法的,您可以联系 DiagrammeR 软件包的维护者以请求修复。

要了解如何与他们联系,您可以转到 CRAN 页面: https://cran.r-project.org/web/packages/DiagrammeR/index.html

在那里,你会看到一个字段 BugReports,其中包含 GitHub 存储库的 URL,因此您可以在此处发布问题。

现在,如果您需要快速修复,可以在 DESCRIPTION 文件中使用“Suggests”依赖项而不是“Imports”。

然后,在每个调用 {DiagrammeR} 的函数中,您应该添加类似以下内容:

if (!requireNamespace("DiagrammeR", quietly = TRUE)) {
  stop("The package {DiagrammerR} is required for this action")
}

或者 rlang close 等价物:

if (!rlang::is_installed("DiagrammeR")) {
  stop("The package {DiagrammerR} is required for this action")
}

我怀疑这会起作用,因为 {dm} 建议 {DiagrammeR} 并且据我所知没有这些问题。另一个好处是,没有安装或不想安装DiagrammeR的用户仍然可以享受软件包的非图表绘制功能。

评论

0赞 Matt Bannert 5/16/2023
+1 表示建议和使函数可选。Imo,一般来说,对于具有{闪亮}增强功能(如交互式视图或检查器)的软件包来说,这也是很好的做法。
1赞 layal 5/18/2023
谢谢@moodymudskipper。我遇到了一个上周在 DiagrammeR GitHub 存储库中打开的关于这个孤立包的问题,请参阅 github.com/rich-iannone/DiagrammeR/issues/485。因此,这是一个已知问题,influenceR 的维护者正在研究它。
1赞 layal 5/18/2023
关于“建议”依赖关系,我试图插入这个 fied,但它没有帮助。警告消息仍然出现。我会等到 github.com/rich-iannone/DiagrammeR/issues/485 得到解决。谢谢!influenceR
0赞 moodymudskipper 5/19/2023
伟大。FWIW 我建议将 DiagrammeR 作为建议,而不是 influenceR
0赞 Russ Conte 11/11/2023 #4

在我的情况下,我能够解决这个问题。我正在开发的 R 包加载了许多包,今天我收到了与原始帖子相同的错误消息(只是一个不同的包),

Requires (indirectly) orphaned package: ‘plotrix’

但是,plotrix 今天刚刚更新(字面意思),而我正在开发的软件包直到今天一直运行没有任何错误。

我能够通过浏览我的 R 包导入的每个包来解决这个问题,并在此页面上查找每个包(在此示例中为 earth 包,只需将“earth”更改为包导入的每个包,然后一次检查一个):

https://cran.csiro.au/web/checks/check_results_earth.html

dev tools::check() 给出的确切警告就在那里:

Check: package dependencies
Result: WARN
    Requires (indirectly) orphaned package: ‘plotrix’
Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-linux-x86_64-fedora-gcc

错误消息说的是 earth 软件包不适用于这两个系统(r-devel-linux-x86_64-fedora-clang,以及 r-devel-linux-x86_64-fedora-gcc),因此警告。我正在运行 MacOS,所以对我来说很好,这就是为什么我没有任何问题。

一种解决方案是从 R 包的导入包列表中删除该包。我会通知 earth 软件包的维护者,一旦 earth 软件包一切正常,我就会把它放回去。