【问题标题】:How to update all the r packages in RStudio in Anaconda如何在 Anaconda 的 RStudio 中更新所有 r 包
【发布时间】:2021-10-07 18:19:18
【问题描述】:

我在 Anaconda 的 renv 环境中使用 RStudio。我想一次更新 renv 中的 r 包。 Merv 的命令in this post 一次只更新一个包(在下面的代码中它只更新 askpass 包)

conda install -n renv -c conda-forge r-askpass

但是,由于我有一长串要更新的 r 包,我想知道是否有任何命令可以一次更新所有 r 包。谢谢。

【问题讨论】:

    标签: r anaconda package conda


    【解决方案1】:

    可用的 Conda CLI 选项

    CLI 仅提供两个选项:

    • 列出特定的包
      conda update pkg1 pkg2 ...
      
    • 更新所有包
      conda update --all
      

    所以,不是任何可以指定所有 R 包的地方。

    使用正则表达式

    在两者之间取得一些东西的一个技巧是使用 conda list 的正则表达式功能来获取匹配包的列表,然后使用一些 UNIX 命令将这些作为参数发送到 conda update 命令。

    对于以r-bioconductor-(R 包的两个最常见前缀)开头的所有包,这样做如下所示:

    # environment you wish to update
    ENV_NAME=renv
    
    # update all `r-` and `bioconductor-` packages
    conda list -n ${ENV_NAME} '^(r|bioconductor)-' | \
      grep -vE '^#' | cut -f1 -d' ' | \
      xargs conda update -n ${ENV_NAME} -d
    

    重要提示:我在conda update 中包含了-d(试运行)标志,以防止自动接受提议的更改,这似乎是由在此处使用xargs 触发的。我强烈建议您按原样首先使用(始终查看更改!),然后在查看后再次执行,不要使用-d

    【讨论】:

    • 嗨,先生。非常感谢您再次回答我的问题。我按照指示在终端中运行了您的代码。发生的事情是,在运行您的代码后,从终端返回的消息说所有包都已更新。但是当我在 Anaconda 中进入 RStudio 并单击包窗格下的更新按钮时,那里仍然有一个包列表,并不是所有的包都更新了。无论如何,使用正则表达式和 Unix 命令离我现在所知道的太远了。再次感谢您的回答,希望您度过愉快的一天!
    • @KaiLi 所以你运行它时没有最后一个-d
    • 您好。我首先使用 -d 运行命令,然后按照指示在不使用 -d 的情况下运行它。我为更新列表中剩余的每个软件包重新尝试了您的命令“conda install -n renv -c conda-forge r-askpass”。其中一些能够被更新,而另一些则显示该软件包都是从 CLI 更新的(但仍在 RStudio GUI 的更新列表中)。通过不同的包管理器更新包可能会导致严重的问题,尤其是在需要编译时:)
    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2020-07-27
    • 2016-04-18
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多