机房服务器无外网,如需安装清单之外的 R 包或 Python 包,按以下步骤操作。
.tar.gz)及依赖 → 通过堡垒机上传 → 服务器离线安装。/data/python-wheels)直接安装,无需个人电脑;仓库没有的包,才走「个人电脑下载源码包 → 上传 → 安装」。全程不需要 sudo 权限,不需要去机房插 U 盘。
以安装 lme4 为例(替换成你需要的包名):
# 在个人电脑的 R 中执行
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) # 先设置镜像源
target_pkg <- "lme4"
# 获取该包及其所有依赖
deps <- tools::package_dependencies(target_pkg,
db = available.packages(),
which = c("Depends", "Imports", "LinkingTo"),
recursive = TRUE)
all_pkgs <- unique(c(target_pkg, unlist(deps)))
# 下载所有包的源码
dir.create("offline_pkgs")
download.packages(all_pkgs, destdir = "offline_pkgs", type = "source")
cat("下载完成,共", length(all_pkgs), "个包\n")
如清华镜像下载慢,把上面 options 里的地址换成官方源 https://cloud.r-project.org/ 即可。
上传操作说明见专门文档:堡垒机上传说明。
SSH 登录服务器后,在 R 中执行:
# 安装 offline_pkgs 目录下的所有包
pkg_path <- "~/offline_pkgs" # 上传到 home 的路径
pkg_files <- list.files(pkg_path, pattern = "\\.tar\\.gz$", full.names = TRUE)
install.packages(pkg_files, repos = NULL, type = "source")
安装完成后确认:
library(lme4) # 替换成你的包名,应成功加载
Bioconductor 包同样用 download.packages() 下载,只需指定 Bioconductor 源。在个人有网电脑的 R 中:
library(BiocManager)
# Bioconductor 源(含 BioCsoft、BioCann、CRAN)
bioc_repos <- BiocManager::repositories()
# 以 DESeq2 为例(替换成你需要的包名)
target_pkg <- "DESeq2"
# 获取该包及其所有依赖
deps <- tools::package_dependencies(target_pkg,
db = available.packages(repos = bioc_repos),
which = c("Depends", "Imports", "LinkingTo"),
recursive = TRUE)
all_pkgs <- unique(c(target_pkg, unlist(deps)))
# 下载所有包的源码
dir.create("offline_pkgs")
download.packages(all_pkgs, destdir = "offline_pkgs", type = "source", repos = bioc_repos)
cat("下载完成,共", length(all_pkgs), "个包\n")
上传与安装方式与普通 R 包完全相同(见步骤二、步骤三)。
服务器已配置本地 wheel 仓库 /data/python-wheels 和默认离线源,补包很简单。
登录服务器后,先激活 work 环境(若 conda 提示 command not found,先执行下面第 0 步的 source),再克隆一份自己的环境装包:
# 0. 加载 conda 并激活 work 环境(每次新登录执行一次;若已自动激活可跳过)
source /data/miniconda3/etc/profile.d/conda.sh
conda activate work
# 1. 克隆 work 到自己的环境(只需做一次;--offline 避免断网时联网卡住)
conda create -p ~/envs/myenv --clone /data/miniconda3/envs/work --offline
# 2. 激活自己的环境
conda activate ~/envs/myenv
# 3. 从本地仓库离线安装
pip install 包名
pip 已配置为从本地仓库 /data/python-wheels 离线安装。
只能安装仓库里已有的包。查看仓库有哪些包:
ls /data/python-wheels/
如果需要的包不在本地仓库,在有网的个人电脑下载源码包后上传(源码包跨平台,Windows 电脑下载也能在 Linux 服务器上编译安装):
1. 个人电脑下载源码包(含依赖):
pip download --no-binary=:all: -d my_wheels 包名
注意:不要用
--only-binary=:all:,否则 Windows 电脑会下载 Windows 版 wheel,Linux 服务器装不了。
2. 通过堡垒机把 my_wheels/ 上传到服务器 home 目录(见步骤二的上传说明)。
3. 在自己环境中离线安装(先按方式一克隆并激活自己的环境):
pip install --no-index --find-links=~/my_wheels 包名
纯 Python 包(无 C 扩展)可直接安装;带 C 扩展的包若编译报错缺系统库,联系管理员安装对应
lib*-dev。
| 问题 | 原因 | 解决 |
|---|---|---|
编译报错 xxx.h: No such file |
缺少系统依赖(lib*-dev 包) |
联系管理员安装对应的 lib*-dev |
package is not available |
个人电脑和服务器 R 版本不同 | 两台机器都用 R 4.6.x |
| 某些包从 CRAN 下载超时 | 默认镜像网络慢 | 有网电脑上换清华镜像(见步骤一) |
安装后 library() 报依赖缺失 |
上传时漏掉了某些依赖包的 tar.gz | 重新下载,确保 recursive = TRUE |
pip install 报 No matching distribution found |
本地 wheel 仓库没有该包 | 用「方式二」从有网电脑下载源码包上传后安装 |
| 下载的 wheel 服务器装不上 | Windows 电脑下了 Windows 版 wheel | 改用 --no-binary=:all: 下载源码包(见方式二) |
先在有网电脑试通流程:下载 → 上传 → 安装,确保整套流程没问题
上传后及时安装:不要上传完放几天,避免被清理
安装完记录版本:
R -e 'write.csv(as.data.frame(installed.packages()[, c("Package","Version")]),
"~/package_versions.csv", row.names=FALSE)'