当前位置: 首页 > news >正文

服务器手动安装并编译R环境库包:PROJ→RGDAL

目录

  • 方式1:conda-forge安装
    • 错误:缺乏libnsl.so.1
      • ✅ 方法一:查找系统中是否已有此库
      • 替补方案:采用libnsl.so.3链接 libnsl.so.1
      • ✅ 方法二:系统中没有安装 libnsl.so.1 → 手动安装
      • ✅ 方法三:使用 Conda 安装 libnsl
  • 方式2:手动安装
    • 🧱 步骤一:激活 Conda 环境
    • 📥 步骤二:下载并编译 PROJ
  • 参考

CRAN-Package rgdal
在这里插入图片描述
根据CRAN所述,rgdal库被移除。

方式1:conda-forge安装

conda-forge / packages / r-rgdal
在这里插入图片描述

错误:缺乏libnsl.so.1

在加载rgdal库,执行以下命令时:

installed <- installed.packages()
"rgdal" %in% rownames(installed)

报错,遇到的问题是:

library(rgdal) 加载失败,报错提示缺少共享库文件:
libnsl.so.1: cannot open shared object file: No such file or directory

在这里插入图片描述

这是一个典型的 系统动态链接库缺失(或路径未配置)问题,但完全可以解决 ✅。

🔍 问题分析

  • rgdal.so 动态库在加载时依赖 libnsl.so.1。
  • 这是一个 系统级别的网络库(libnsl = “Network Services Library”)。
  • 它不属于 R 或 rgdal 包,而是由操作系统提供,通常在 Linux 上由 glibc 系统库安装。

✅ 方法一:查找系统中是否已有此库

在终端中运行:

find /lib /usr/lib /lib64 /usr/lib64 -name "libnsl.so*"

或者用更快的方式:

locate libnsl.so

情况 A:如果找到了 libnsl.so.1,例如路径为:

/usr/lib64/libnsl.so.1

那么你可以创建一个软链接到你的 Conda 环境中:

ln -s /usr/lib64/libnsl.so.1 ~/miniconda3/envs/r_env/lib/libnsl.so.1

确保 R 能找到这个库时可以加载 rgdal。

替补方案:采用libnsl.so.3链接 libnsl.so.1

创建软链接模拟 libnsl.so.1,进入 Conda 的 lib 目录:

cd /home/wanzhou/miniconda3/envs/r_env/libln -s libnsl.so.3 libnsl.so.1

创建一个名为 libnsl.so.1 的链接,指向已有的 libnsl.so.3。

📌 注意事项
这种方式虽然是“绕过法”,在大多数情况下是安全的,特别是 libnsl.so.1 和 .so.3 基本兼容。
如果你要部署到生产环境,建议尽量使用与 rgdal 相匹配的系统动态库(例如:安装真正的 libnsl.so.1,或使用更兼容的 Conda 包构建)。

✅ 方法二:系统中没有安装 libnsl.so.1 → 手动安装

如果你有 sudo 权限(推荐):

CentOS / RHEL:

sudo yum install libnsl

Ubuntu / Debian:

sudo apt-get install libnsl1

✅ 方法三:使用 Conda 安装 libnsl

如果你 没有 sudo 权限,可以通过 Conda 安装 libnsl:

conda activate r_envconda install -c conda-forge libnslconda list libnsl

这会自动将 libnsl.so.1 安装到你的 Conda 环境中,并由 Conda 管理,无需手动软链接。
在这里插入图片描述

🧪 验证是否解决

安装或软链接完成后,在 R 中重新尝试加载:

library(rgdal)

如果不再报 libnsl.so.1 错误,说明问题已解决 ✅

方式2:手动安装

cd /home/wanzhou/Packages/

🧱 步骤一:激活 Conda 环境

source ~/miniconda3/bin/activate r_env

📥 步骤二:下载并编译 PROJ

mkdir -p ~/src && cd ~/src
wget https://download.osgeo.org/proj/proj-9.3.1.tar.gz
tar -xzf proj-9.3.1.tar.gz
cd proj-9.3.1./configure --prefix=$HOME/local
./configure --prefix=/home/wanzhou/Packages/r_local
make -j$(nproc)
make install

参考

http://www.lryc.cn/news/572791.html

相关文章:

  • RenderDoc抓webgl 1
  • 科技赋能民生:中建海龙为民生改善注入新动力
  • 【CS创世SD NAND征文】STM32户外无线终端管理设备的数据存储方案
  • Logback 在java中的使用
  • 力扣-169.多数元素
  • [muduo] docs | 配置教程 | EventLoop | Thread
  • python实战项目76:51job数据采集与分析
  • 14.9 AI教学系统测试全攻略:模块化调试与5大模块实战指南
  • 服务网格安全(Istio):用零信任架构重构微服务通信安全
  • 【Linux驱动开发 ---- 4.2_平台设备(Platform Devices)概述】
  • 基于深度学习的智能视频行为识别系统:技术与实践
  • 解决Windows10没有Microsoft store微软商店
  • C#学习日记
  • 局域网文件共享及检索系统
  • 在小程序中实现上下左右拖动表格
  • js调用微信支付 第二步 获取access_token ——仙盟创梦IDE
  • 多线程八股
  • Docker Swarm 与 Docker Compose 对比解析
  • 汽车整车厂如何用数字孪生系统打造“透明车间”
  • python高校工作室管理系统
  • 晨控CK-FR06与西门子PLC配置Modbus TCP通讯连接操作手册
  • Cmake入门及CMakeLists.txt 语法介绍
  • linux线程同步
  • 数据结构第八章(六)-置换选择排序和最佳归并树
  • P12894 [蓝桥杯 2025 国 Java B] 智能交通信号灯
  • 【机器学习实战笔记 12】集成学习:AdaBoost算法
  • 数字IC后端实现之Setup Violation修复案例(DataClock Tree ECO修复手段)
  • 目标检测新升级:用YOLOv8打造密度视频热力图可视化
  • 2025 年拓客系统排行榜
  • ceph 通过 crush rule 修改故障域