Linux离线安装软件完整步骤:零基础也能搞定内网部署
为什么需要离线安装 Linux 软件?
很多公司内部服务器出于安全限制,无法直接连接外网。
这时候想装个 Nginx、Python 包或者数据库,就需要掌握 Linux 离线安装软件完整步骤。
本文不假设你有任何网络连接,只依赖一台能上网的电脑(比如你的笔记本)和一台目标服务器。
准备工作:在联网机器上下载软件包和依赖
首先确认目标服务器的操作系统和架构,比如 x86_64 的 Ubuntu 20.04 或 CentOS 7。
然后在联网机器上执行以下操作。
对于 Debian/Ubuntu 系
使用 apt-get download 命令只下载 .deb 包而不安装:
# 先更新索引(需要网络)
sudo apt-get update
# 下载指定软件及其所有依赖到当前目录
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <软件名> | grep -v "^ " | grep -v "^<" | tr -d '[:blank:]')
比如下载 nginx:
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nginx | grep -v "^ " | grep -v "^<" | tr -d '[:blank:]')
注意:这条命令会自动将 nginx 和它需要的所有 .deb 包拉到当前目录。
如果出现依赖链太长,也可以直接用 apt-get download nginx 只下载主包,依赖手动补全(稍麻烦)。
更稳妥的方式是使用 aptitude 或 debootstrap,但对零基础用户推荐下面更简单的方法。
对于 CentOS/RHEL 系
使用 yumdownloader 工具(需要先安装 yum-utils):
# 安装 yum-utils(还需联网一次)
sudo yum install -y yum-utils
# 下载软件及其所有依赖到当前目录
sudo yumdownloader --resolve --destdir=./ <软件名>
例如下载 vim-enhanced:
sudo yumdownloader --resolve --destdir=./ vim-enhanced
下载完成后,你会看到一堆 .rpm 文件。
把这些文件打包压缩,通过 U 盘、内网共享或 scp 传到离线服务器上。
传输命令示例(在线服务器执行):
scp -r ./download_folder user@离线服务器IP:/tmp/
离线服务器安装操作
登录离线服务器,进入存放包文件的目录。
Debian/Ubuntu 安装 .deb 包
使用 dpkg -i 命令安装:
cd /tmp/download_folder
sudo dpkg -i *.deb
如果提示依赖缺失(通常会报错说某些包未安装),不要慌,运行一次强制依赖修复:
sudo apt-get install -f
注意:apt-get install -f 会尝试从本地仓库或已经下载的 .deb 中补全依赖,只要所有 .deb 包都在当前目录,一般能自动解决。
如果离线服务器完全没有网络,这一步不能连接外网,但 dpkg -i 结合 -f 只检查本地缓存,是安全的。
CentOS/RHEL 安装 .rpm 包
使用 rpm -ivh 安装(-i 安装,-v 显示详情,-h 显示进度条):
cd /tmp/rpm_packages
sudo rpm -ivh *.rpm
如果遇到依赖报错,可以用 yum localinstall 自动解决本地依赖(需要目标服务器上也有基本的 yum 仓库索引,但离线状态下仍能解析本地 .rpm 包之间的关系):
sudo yum localinstall *.rpm -y
如果是源码编译的离线安装
有些软件没有现成的二进制包,只能用源码安装。
在联网机器上下载源码包(如 .tar.gz),传到离线服务器后:
tar -xzf package.tar.gz
cd package
./configure --prefix=/usr/local/myapp
make
sudo make install
注意编译前需要安装编译工具 gcc, make 等,这些工具也需要提前离线准备好。
高频问题和避坑指南
问题1:下载依赖时出现缺少某些包
- 确认你用了
apt-cache depends或yumdownloader --resolve,而不是只下载主包。 - 对于 Ubuntu,有时依赖列表太长,可以只下载主包+常用依赖,然后在离线服务器上逐个手动
dpkg -i,缺什么再补什么。更省心的方法是用apt-get install --no-download但需要先有网络。
问题2:离线安装报错“无法解析主机”或“404”
- 确保你的命令是在 内网 服务器上执行的,并且已经关闭了系统代理(
unset http_proxy、unset https_proxy)。 - 如果使用
apt-get install -f时还尝试连接外网,可以临时断掉服务器网络或修改/etc/apt/sources.list注释掉所有源。
问题3:编译时缺少动态库(.so 文件)
- 在编译前先用
ldconfig -p | grep 库名检查是否已安装。如果缺失,同样需要下载对应的libxxx-dev或libxxx包离线安装。 - 可以先用
ldd检查一个已有的可执行文件,查看它依赖的库是否都在。
验证安装结果
安装完成后,用以下方法确认软件可用:
- 版本检查:
nginx -v
python3 --version
- which 定位路径:
which nginx
- 启动服务测试(如果是服务类软件):
sudo systemctl start nginx
systemctl status nginx
- 检查依赖库完整性(针对编译安装):
ldd /usr/local/myapp/bin/program
如果所有显示 not found 的库都解决,则安装成功。
总结
掌握 Linux 离线安装软件完整步骤 是运维必备技能。
核心要点:提前在联网机器上下载所有依赖并打包;
离线服务器上用 dpkg -i 或 rpm -ivh 批量安装;
遇到依赖问题先用 -f 或 localinstall 自动修复;
最后用版本号、服务状态验证。
按照本文步骤操作,就算零基础也能顺利完成内网部署。