最近忽然发现linux 上装R 包让人叫苦不迭,各种蜜汁依赖或路径原因的报错,比如单单一个rhdf5 和它的朋友们,就让我头疼欲裂:
external_filters.c: In function '_H5Pset_blosc':
external_filters.c:33:81: error: expected ')' before numeric constant
33 | herr = H5Pset_filter(plist_id, H5Z_FILTER_BLOSC, H5Z_FLAG_OPTIONAL, (size_t)7, cd_values);
| ^
| )
make[1]: *** [/home/yzpeng/miniconda3/envs/R4.0/lib/R/etc/Makeconf:174: external_filters.o] Error 1
make[1]: Leaving directory '/tmp/RtmpUvWrmj/R.INSTALL1503e12aa2877e/rhdf5/src'
ERROR: compilation failed for package ‘rhdf5’
开始我也比较天真,寻求网友们的帮助:installation error on linux: Makevars:18: *** missing separator. Stop. · Issue #11 · grimbough/rhdf5filters (github.com)[1]
Install error · Issue #5 · grimbough/rhdf5filters (github.com)[2]
后来忽然想到,conda 是一个天然会帮助我们解决依赖的工具。
我创建一个conda 环境,用这个环境来安装R 和我需要的R 包不就好了吗?
比如直接搜到了这个R 包的conda 安装方法:Bioconductor Rhdf5 :: Anaconda.org[3]
conda create -n R4.1.2 -y r-base # 安装R环境
conda activate R4.1.2
# 在激活的环境下安装
conda install -c bioconda bioconductor-rhdf5
conda install -c bioconda/label/gcc7 bioconductor-rhdf5
# 这个成功了
conda install -c bioconda/label/broken bioconductor-rhdf5
conda install -c bioconda/label/cf201901 bioconductor-rhdf5
安装非常顺利啊:
Downloading and Extracting Packages
r-rcpp-1.0.7 | 2.0 MB | ################################################# | 100%
r-rcppgsl-0.3.9 | 385 KB | ################################################# | 100%
r-rcppziggurat-0.1.6 | 458 KB | ################################################# | 100%
ca-certificates-2021 | 139 KB | ################################################# | 100%
openssl-1.1.1k | 2.1 MB | ################################################# | 100%
接下来就是直接在环境中的R调用它们了。
比如免费版的Rserver,只能使用管理员配置的R。这也就意味着,你没法自由地驰骋在你的R环境里,包括安装R 包等等。你唯一可以做的,就是抛弃可视化的IDE,回到原始的R terminal 的拥抱。
谁想抱你哇!
而怎么切换呢?那你就只能付费server 了。
所以,这里一个解决方案就是通过vscode 连接服务器使用R,只不过稍微折腾一些。
你terminal 里用的是什么,它就用的是什么。服务器配置 vs code,得提上日程了。
[1]
installation error on linux: Makevars:18: *** missing separator. Stop. · Issue #11 · grimbough/rhdf5filters (github.com): https://github.com/grimbough/rhdf5filters/issues/11
[2]
Install error · Issue #5 · grimbough/rhdf5filters (github.com): https://github.com/grimbough/rhdf5filters/issues/5
[3]
Bioconductor Rhdf5 :: Anaconda.org: https://anaconda.org/bioconda/bioconductor-rhdf5