安装R包sf、lwgeom的时候,报错

1
2
configure: error: proj_api.h not found in standard or given locations.
configure: error: libproj not found in standard or given locations.

要想办法让R在安装包的时候知道系统已经有了对应的library,我是先创建了一个sysR的conda环境,然后在虚拟环境下装对应的库,可能安多了-_-||

1
2
3
4
5
6
7
mamba install -c conda-forge gdal
mamba install -c conda-forge proj
mamba install -c conda-forge libgdal
mamba install -c r r-sf
mamba install -c conda-forge proj4
mamba install -c conda-forge r-lwgeom
mamba install -c conda-forge r-proj4

然后为了保险起见,我在bashrc中增加了LD的路径(我只是为了确保系统能找到library的路径,添件了感觉LD_LIBRARY_PATH,事后这个地方可以不用设置)。参见下面PS2,我git push遇到了问题,所以这里建议直接在Terminal里面export,不要写在bashrc中。

1
2
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/master/zhu_zhong_xu/miniconda3/lib/:/master/zhu_zhong_xu/miniconda3/envs/sysR/lib
export LD_LIBRARY_PATH

在conda安装library的时候,会安装R base。但我用的是Rstudio server下的R,也就是系统级别的R,我为了在虚拟环境下调用系统的R,把conda/env/sysR/bin/R删掉了(切记),这样找不到环境下的R时,就会调用系统的R(当然可以用系统R的绝对路径)。然后在R里面安装对应的包,并指定库的文件夹。

1
2
3
install.packages("sf", configure.args=c("--with-proj-include=~/conda/envs/sysR/include, --with-proj-lib=~/conda/envs/sysR/lib/"))

install.packages("lwgeom", configure.args=c("--with-proj-include=~/conda/envs/sysR/include, --with-proj-lib=~/conda/envs/sysR/lib/"))

gdal和proj库解决好之后,类似的,我在装R的odbc包时,提示没有unixodbc哭,装runjags时,提示没有jags库(automatic detection of JAGS failed. Please use pkg-config to locate the JAGS library. See the INSTALL file for details.),那就把对应的库装上,然后安装对应的R包。

1
2
3
4
5
mamba install -c anaconda unixodbc
mamba install -c r r-odbc
mamba install -c conda-forge geos
mamba install -c conda-forge jags
mamba install -c conda-forge r-rjags

PS:遇到缺少系统的库,尽量在个人目录下解决,而不是变动系统级别的环境变量。维护自己本地的环境,可以用conda创建虚拟环境,安装对应的library。还需要确保虚拟环境下的R是平常用的R。这个环境平常用不到,只有遇到缺少library的情况下,再从这个环境下启动R。

PS2:后续遇到一个问题,我在用git push的时候报错(如下),把bashrc中的LD_LIBRARY_PATH注释掉就可以正常使用git push了。

1
2
3
4
5
/usr/bin/ssh: symbol lookup error: /usr/bin/ssh: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

####################################################################

#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任

#Author: Jason

#####################################################################