没有网络怎么装软件?离线部署实战,一招搞定内网服务器

Linux 软件包管理从入门到实战:不再迷路于 yum、apt、rpm 之间

包管理器就是 Linux 的“应用商店”,读完这篇你也能闭眼装软件


一、为什么 Linux 装软件不像 Windows 那样“双击 exe”?

很多刚接触 Linux 的小伙伴都会有一个灵魂拷问:“我从官网下载了一个 .exe,怎么在 Linux 上打不开?”

答案是:Linux 有自己的一套软件安装逻辑——包管理器(Package Manager)

简单来理解:

  • Windows:你去官网找安装包 → 下载 .exe → 双击 → 一路“下一步”。
  • Linux(RedHat 系)dnf install nginx → 系统自动从官方仓库下载并安装。
  • Linux(Debian 系)apt install nginx → 同理。

包管理器帮你做了三件“脏活累活”

  1. 自动解决依赖——比如你要装 A,A 依赖 B 和 C,包管理器会自动把 B、C 一起装好。
  2. 从可信仓库下载——不用满网找安装包,避免下到带后门的版本。
  3. 统一卸载和更新——一条命令全部搞定,不留垃圾。

二、两大门派:RPM 系 vs DEB 系

Linux 世界分两大阵营,包格式和包管理器都不同,选系统时就决定了你用哪一套:

特性RedHat 系Debian 系
代表发行版RHEL、CentOS、Rocky、FedoraDebian、Ubuntu、Deepin
包格式.rpm.deb
上层包管理器dnf(旧版 yumapt
底层工具rpmdpkg
仓库配置文件/etc/yum.repos.d/*.repo/etc/apt/sources.list/etc/apt/sources.list.d/*.sources

⚠️ 新手避坑.rpm 包不能装在 Ubuntu 上,.deb 包也不能装在 Rocky 上。格式不通用,强行安装会报依赖地狱。


三、底层工具:RPM 和 DPKG——最基础的“搬运工”

dnfapt 这些“智能管家”出现之前,rpmdpkg 是最底层的打包工具。它们负责把软件包解压并复制到系统对应目录,但不会自动解决依赖

3.1 RPM 命令实战(Rocky/CentOS 系列)

安装本地 .rpm

# -i 安装,-v 显示详情,-h 显示进度条
sudo rpm -ivh nginx-1.20.1-28.el9.x86_64.rpm

但现实中你很可能遇到这个场景(新手翻车现场):

[root@magedu ~]# rpm -ivh nginx-1.20.1-28.el9.x86_64.rpm
error: Failed dependencies:
    nginx-core = 2:1.20.1 is needed by nginx-2:1.20.1
    nginx-filesystem = 2:1.20.1 is needed by nginx
    rocky-logos-httpd is needed by nginx

这就是典型的“依赖缺失”——nginx 这个包需要其他几个包才能正常工作,而 rpm 不会帮你去下载它们,只会直接报错退出。

正确的做法:把缺失的依赖包一起下载到同一目录,一次性全部安装:

# 假设把所有依赖 rpm 放在同一目录下
sudo rpm -ivh *.rpm

常用 RPM 查询操作(非常实用):

操作命令用途
查看某个包安装了哪些文件rpm -ql nginx排查配置文件路径
某个文件属于哪个包rpm -qf /etc/nginx/nginx.conf误删文件时找来源
查看包详细信息rpm -qi nginx查看版本、简介、官网
列出所有已安装包rpm -qa配合 grep 过滤用

3.2 DPKG 命令实战(Ubuntu/Debian 系列)

Ubuntu 的底层工具是 dpkg,用法和 rpm 非常相似:

# 安装本地 .deb 包
sudo dpkg -i wget_1.21.4-1ubuntu4.3_amd64.deb

# 如果报依赖缺失,需要手动修复(apt 会帮你补装)
sudo apt install -f   # 修复依赖,这条命令非常救命!

# 查询已安装包
dpkg -l | grep nginx

# 查看包安装了哪些文件
dpkg -L nginx

# 查看文件属于哪个包
dpkg -S /etc/nginx/nginx.conf

经典踩坑:你手动下载了一个 .deb 包,用 dpkg -i 装完后提示依赖缺失,一脸懵。记住万能解救命令sudo apt install -f,它会自动把缺的依赖补上,不用重装整个系统。


四、智能管家:DNF 和 APT——自动搞定一切

rpmdpkg 是“手自一体”的手动挡,而 dnfapt 是自动挡——它们会连接远程仓库,自动解决依赖,一条命令装好所有东西。

4.1 Rocky Linux 的 DNF

Rocky 9/10 里虽然还能敲 yum,但它实际已经指向了 dnf。所以直接养成习惯用 dnf

日常最常用的命令

# 安装软件(-y 表示自动确认)
sudo dnf -y install nginx vim

# 删除软件
sudo dnf remove nginx

# 更新某个软件到最新版
sudo dnf update nginx

# 搜索软件包(不知道全名时用)
sudo dnf search nginx

# 查看软件包详情(版本、介绍、大小、依赖)
sudo dnf info nginx

# 查看某个命令属于哪个包(极其实用!)
sudo dnf provides /usr/bin/nginx
sudo dnf provides */netstat

# 列出已安装的所有包
sudo dnf list installed

# 查看操作历史,可以回滚
sudo dnf history
sudo dnf history undo 5   # 撤销第5次操作

包组安装(适合装开发环境):

# 查看所有包组
sudo dnf group list

# 安装全套开发工具(gcc、g++、make、cmake 等)
sudo dnf groupinstall -y "Development Tools"

清理缓存(磁盘空间告急时常用):

sudo dnf clean all

4.2 Ubuntu 的 APT

Ubuntu 的 aptapt-get 的升级版,命令更简洁直观:

# 更新软件源列表(换源后必须执行)
sudo apt update

# 升级所有可升级的包(生产环境慎用!)
sudo apt upgrade -y

# 安装软件
sudo apt -y install nginx

# 删除软件(保留配置文件)
sudo apt remove nginx

# 彻底删除(连配置文件一起删)
sudo apt purge nginx

# 搜索
sudo apt search nginx

# 查看详情
sudo apt show nginx

# 查看该包依赖了谁(我依赖谁)
sudo apt depends nginx

# 查看谁依赖了这个包(谁依赖我)
sudo apt rdepends nginx

# 自动清理无用的依赖包
sudo apt autoremove

# 清理下载的缓存 .deb 文件
sudo apt autoclean

新手最容易搞混的两对命令

对比命令效果
remove vs purgeapt remove nginx删软件,但保留 /etc/nginx 配置
apt purge nginx删软件,配置文件也一起干掉
autoremove vs autocleanapt autoremove删除不再被任何包依赖的“孤儿”包
apt autoclean只删缓存里过时的旧版本 .deb 文件

💡 工作场景:如果你只是想重装软件,用 remove 即可保留原有配置;如果是彻底清理环境,用 purge


五、本地包安装——离线环境怎么办?

很多企业的生产服务器是不能联网的,这时候需要提前把包和所有依赖下载好,拷到服务器上离线安装

Rocky 系离线安装

# 只下载不安装(存到默认缓存 /var/cache/dnf/)
sudo dnf install --downloadonly nginx

# 下载到指定目录
sudo dnf install --downloadonly --downloaddir=/tmp/rpms nginx

# 查看下载好的 rpm 包
ls -lh /tmp/rpms/
# 输出类似:
# nginx-1.20.1-28.el9.x86_64.rpm
# nginx-core-1.20.1-28.el9.x86_64.rpm
# nginx-filesystem-1.20.1-28.el9.noarch.rpm
# rocky-logos-httpd-90.17-1.el9.noarch.rpm

拿到这些 .rpm 文件后,拷到离线服务器上,用 rpm -ivh *.rpm 全部装完。

Ubuntu 系离线安装

# 只下载不安装
sudo apt install --download-only nginx

# 所有 .deb 包会存到 /var/cache/apt/archives/
ls -lh /var/cache/apt/archives/*.deb

# 如果想把依赖也一起下载完整,可以用 apt-get 的 -d 参数
sudo apt-get -d install nginx

/var/cache/apt/archives/ 下的 .deb 文件拷到离线机器,用 dpkg -i *.deb 安装,如果报依赖缺失,再执行 sudo apt install -f(前提是离线机器挂了本地镜像源)。


六、更换镜像源——让下载速度起飞

官方源在国外,国内访问龟速。换国内镜像源是入门第一课,也是你入职后第一个可能接触的运维操作。

6.1 Rocky Linux 换源

第一步:备份原配置(好习惯,防止改崩了回不去)

sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

第二步:配置阿里云源(国内最稳定)

sudo cat > /etc/yum.repos.d/rocky.repo << 'EOF'
[baseos]
name=Rocky Linux $releasever - BaseOS
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever

[appstream]
name=Rocky Linux $releasever - AppStream
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever

[extras]
name=Rocky Linux $releasever - Extras
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever
EOF

第三步:刷新缓存

sudo dnf makecache

6.2 Ubuntu 换源(26.04 代号 resolute,24.04 代号 noble)

Ubuntu 新版把源配置移到了 /etc/apt/sources.list.d/ubuntu.sources,格式也变了:

# 备份原文件
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak

# 替换为阿里云源
sudo cat > /etc/apt/sources.list.d/ubuntu.sources << 'EOF'
Types: deb
URIs: https://mirrors.aliyun.com/ubuntu/
Suites: resolute resolute-updates resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: https://mirrors.aliyun.com/ubuntu/
Suites: resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF

# 刷新源列表
sudo apt update

⚠️ 超重要提醒resolute 是 Ubuntu 26.04 的代号,如果你用的是 24.04,要把 resolute 全部改成 noble不同大版本的源不通用! 26.04 的包强装在 24.04 上会导致 glibc 等核心库版本冲突。


6.3 扩展知识:EPEL 仓库(Rocky/CentOS 专属宝箱)

EPEL(Extra Packages for Enterprise Linux)是 Fedora 社区维护的“附加软件包仓库”,里面有很多官方源没有的软件,比如 certbothtopansible 等。

启用 EPEL 源

sudo dnf -y install epel-release

替换为阿里云 EPEL 镜像(提升下载速度):

sudo cat > /etc/yum.repos.d/epel.repo << 'EOF'
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-$releasever
EOF

sudo dnf makecache

6.4 进阶操作:添加 Nginx 官方源

如果你想安装最新版 Nginx(而不是 Rocky/Ubuntu 自带的老版本),可以添加 Nginx 官方源:

sudo cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

# 安装最新版 Nginx
sudo dnf -y install nginx

七、两大包管理器命令速查对比表

操作Rocky(DNF)Ubuntu(APT)
安装dnf install nginxapt install nginx
删除(保留配置)dnf remove nginxapt remove nginx
彻底删除dnf remove nginx(配置需手动删)apt purge nginx
更新单个包dnf update nginxapt install nginx --only-upgrade
更新所有dnf updateapt upgrade
搜索dnf search nginxapt search nginx
查看详情dnf info nginxapt show nginx
查看命令属于哪个包dnf provides */nginxapt-file search /usr/sbin/nginx(需安装 apt-file)
清理缓存dnf clean allapt autoclean
仅下载不安装dnf install --downloadonlyapt install --download-only

八、课后思考题(帮助巩固)

  1. dnf installrpm -ivh 的核心区别是什么?
    (提示:依赖解决、网络下载、自动化程度)

  2. 为什么要更换镜像源?
    (提示:速度、可用性、网络环境)

  3. apt removeapt purge 有什么区别?分别什么场景用?

  4. 离线服务器(没有外网)如何安装 nginx 及其依赖?
    (提示:--downloadonly + 拷包 + rpm -ivhdpkg -i

  5. Rocky 9 和 Rocky 10 的软件源通用吗?为什么?

  6. Ubuntu 24.04(noble)和 26.04(resolute)的软件源能混用吗?为什么?


九、总结

  • Linux 装软件靠包管理器,分 rpm/dpkg(底层)和 dnf/apt(上层智能管家)。
  • 日常操作无脑用 dnfapt,依赖自动解决,省心省力。
  • 只有离线或特殊场景才用 rpm -ivhdpkg -i,此时需要自己处理依赖。
  • 换镜像源是必学技能,国内用户优先选阿里云、清华或中科大。
  • Rocky 用 DNF,Ubuntu 用 APT,命令不同但逻辑相通,学一个另一个触类旁通。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值