如何在旧的、不兼容的 R 版本上安装新的 R 包
How to install a new R package on old, incompatible version of R
由于我公司的 IT 要求,我被迫使用 R 3.2.2。我需要使用一些技术上需要 R > 3.2.2(主要是 prophet 版本 2 或更高版本)的包。我知道有时可以 "trick" 将包 运行 放入旧的、不兼容的 R 版本中,但我不确定该怎么做。
我使用较新版本的 R 下载了包,然后按照 Patrick 此处 () 的建议调整了描述文件,并将包文件移动到 R 3.2.2 库路径中,但它没有工作。我收到错误 "Error: This is R 3.2.2, package ‘prophet’ needs >= 3.2.3."
有人ideas/suggestions吗?谢谢!
前期:@prosoitos 关于使用旧版本软件包的评论可能是您最好的选择,如果您能找到它们的话。我相信 MRAN claims to have daily versions of all packages going back quite a ways, along with the checkpoint
包用于冻结项目包的状态。事实上,尝试使用那个包,它可能会使下面的几个"tricks"(请不要随便使用它们)变得不必要。
确实有些包可能 "falsely require R versions",而不是方便地选择开发人员使用的 R 版本 and/or 他们从另一个包复制的任意版本。然而:
如果不了解包代码的内部结构,您将无法知道这是否是真正的要求。
如果开发人员认真使用适当定义的 R 版本要求,您可以查看包的提交历史(假设 github、gitlab 或其他一些可访问的版本控制)并找到 R版本在 DESCRIPTION
中更改,并查看之前的提交以查看哪些更改表明版本增加。如果幸运的话,提交消息本身会说类似 "add argument xyz=, requiring newer R" 的内容,但我怀疑这并不能保证甚至不可能。
缺少它,可能有一个功能(旧的或新的)需要更新版本的 R,但没有其他任何改变。这对我来说似乎是合理的,而且可能需要一些调查才能确认。
即使您发现了这一点,它也可能依赖于具有类似定义的版本要求的其他包。因此,即使您为一个包解决了问题,它也可能会级联成几个或几十个包。 (提示:也许 checkpoint
看起来更好,因为它有助于此。)
如果您以某种方式确定 (a) 您知道 R 版本要求是错误的,或者 (b) 您知道它需要什么并且您愿意在没有这些参数或函数的情况下生活,那么:
- 克隆或下载源代码;
- 编辑
DESCRIPTION
并更改R版本,我建议您也更改包版本号,以便您知道您使用的是哪个版本;并且您还应该注意其他软件包的版本要求,因为它可能暗示 API 更改等;和
- Build/install本地版本。
但是...代码(and/or 文档中的示例代码)可能存在细微差别,这些细微差别在旧版本中不起作用。并且,适用于一个包裹的东西不一定适用于另一个包裹。
这是一个真实的买者自负案例。密码被破坏的风险很高。必须对多个包执行此手动过程的可能性很高。一次全部成功的可能性很低。
(当然,您随时可以联系 developer/maintainer 询问。)
这不是您问题的确切答案。
但是您听说过 conda
程序包管理器(它对编程语言和许多其他系统相关程序通用)吗?
你可以解决你的头痛 - 没有管理员权限 - 通过在本地安装更高版本的 R 到虚拟 conda 环境 - 并将它和 运行 它放在虚拟环境中。
要学习使用 conda,请使用 Corey Schafer's tutorials are very good - and teaches you conda within merely 12 min ...。 Anaconda 只是一个变体,但我使用 miniconda - 过程和命令是相同的。
# install miniconda on linux 64 bit on python 3.7 background
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# linux 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86.sh
bash Miniconda3-latest-Linux-x86.sh
# windows 64 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe
# and run it
# windows 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86.exe
# and run it
# other combinations and conditions and operating systems and python 2.7
# https://conda.io/miniconda.html
# after installation, in terminal, conda is available from
# wherever you are.
# create conda environment for R-3.5.1 the newest
conda create --name R351
# enter the virtual environment
source activate R351
# install R-3.5.1
conda install -c r r-base
# start R
R
# quit R and quit the environment
source deactivate
像这样的版本问题我找了好久。这是最干净的解决方案...
但实际上也没有 conda,您可以在本地安装更高版本的 R(为此您不需要 sudo 权限)和 运行“/path/to/your/local/R-3.5.1/bin/R" - 例如- 我确实这样做了。
您从 here 获得的二进制文件或源代码。但是,在这种情况下,您通常必须以管理员身份安装软件包。
使用 .libPath()
功能,您可以完全控制哪些库(位于文件夹中)应该 accessed/used 或不应该。
参见 here。
由于我公司的 IT 要求,我被迫使用 R 3.2.2。我需要使用一些技术上需要 R > 3.2.2(主要是 prophet 版本 2 或更高版本)的包。我知道有时可以 "trick" 将包 运行 放入旧的、不兼容的 R 版本中,但我不确定该怎么做。
我使用较新版本的 R 下载了包,然后按照 Patrick 此处 (
有人ideas/suggestions吗?谢谢!
前期:@prosoitos 关于使用旧版本软件包的评论可能是您最好的选择,如果您能找到它们的话。我相信 MRAN claims to have daily versions of all packages going back quite a ways, along with the checkpoint
包用于冻结项目包的状态。事实上,尝试使用那个包,它可能会使下面的几个"tricks"(请不要随便使用它们)变得不必要。
确实有些包可能 "falsely require R versions",而不是方便地选择开发人员使用的 R 版本 and/or 他们从另一个包复制的任意版本。然而:
如果不了解包代码的内部结构,您将无法知道这是否是真正的要求。
如果开发人员认真使用适当定义的 R 版本要求,您可以查看包的提交历史(假设 github、gitlab 或其他一些可访问的版本控制)并找到 R版本在
DESCRIPTION
中更改,并查看之前的提交以查看哪些更改表明版本增加。如果幸运的话,提交消息本身会说类似 "add argument xyz=, requiring newer R" 的内容,但我怀疑这并不能保证甚至不可能。缺少它,可能有一个功能(旧的或新的)需要更新版本的 R,但没有其他任何改变。这对我来说似乎是合理的,而且可能需要一些调查才能确认。
即使您发现了这一点,它也可能依赖于具有类似定义的版本要求的其他包。因此,即使您为一个包解决了问题,它也可能会级联成几个或几十个包。 (提示:也许
checkpoint
看起来更好,因为它有助于此。)
如果您以某种方式确定 (a) 您知道 R 版本要求是错误的,或者 (b) 您知道它需要什么并且您愿意在没有这些参数或函数的情况下生活,那么:
- 克隆或下载源代码;
- 编辑
DESCRIPTION
并更改R版本,我建议您也更改包版本号,以便您知道您使用的是哪个版本;并且您还应该注意其他软件包的版本要求,因为它可能暗示 API 更改等;和 - Build/install本地版本。
但是...代码(and/or 文档中的示例代码)可能存在细微差别,这些细微差别在旧版本中不起作用。并且,适用于一个包裹的东西不一定适用于另一个包裹。
这是一个真实的买者自负案例。密码被破坏的风险很高。必须对多个包执行此手动过程的可能性很高。一次全部成功的可能性很低。
(当然,您随时可以联系 developer/maintainer 询问。)
这不是您问题的确切答案。
但是您听说过 conda
程序包管理器(它对编程语言和许多其他系统相关程序通用)吗?
你可以解决你的头痛 - 没有管理员权限 - 通过在本地安装更高版本的 R 到虚拟 conda 环境 - 并将它和 运行 它放在虚拟环境中。
要学习使用 conda,请使用 Corey Schafer's tutorials are very good - and teaches you conda within merely 12 min ...。 Anaconda 只是一个变体,但我使用 miniconda - 过程和命令是相同的。
# install miniconda on linux 64 bit on python 3.7 background
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# linux 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86.sh
bash Miniconda3-latest-Linux-x86.sh
# windows 64 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe
# and run it
# windows 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86.exe
# and run it
# other combinations and conditions and operating systems and python 2.7
# https://conda.io/miniconda.html
# after installation, in terminal, conda is available from
# wherever you are.
# create conda environment for R-3.5.1 the newest
conda create --name R351
# enter the virtual environment
source activate R351
# install R-3.5.1
conda install -c r r-base
# start R
R
# quit R and quit the environment
source deactivate
像这样的版本问题我找了好久。这是最干净的解决方案...
但实际上也没有 conda,您可以在本地安装更高版本的 R(为此您不需要 sudo 权限)和 运行“/path/to/your/local/R-3.5.1/bin/R" - 例如- 我确实这样做了。 您从 here 获得的二进制文件或源代码。但是,在这种情况下,您通常必须以管理员身份安装软件包。
使用 .libPath()
功能,您可以完全控制哪些库(位于文件夹中)应该 accessed/used 或不应该。
参见 here。