Windows 常从网页下载安装程序,Ubuntu 更推荐从软件仓库(Repository)安装软件包(Package)。系统会记录软件版本、依赖关系和更新来源,因此升级、卸载和安全修复更统一。Ubuntu 最常见的是 deb 软件包,由高级软件包工具(Advanced Packaging Tool,APT)管理;此外还有自带依赖并在沙箱中运行的 Snap。
一、先分清 update 和 upgrade
新装服务器首先执行:
sudo apt update
apt list --upgradable
sudo apt upgrade
apt update 只更新本机的软件包索引(Package index),相当于刷新“商店目录”,不会直接升级已安装程序。apt upgrade 才根据新索引安装可升级版本。两条命令顺序不能反。
升级前阅读变更摘要,尤其注意是否会移除软件包、重启服务或安装新内核。-y/--assume-yes 会自动回答“是”,个人测试机可以方便使用,生产服务器不应在没看清变更时随便加。
普通软件更新不等于发行版升级(Release upgrade)。从一个 Ubuntu 大版本升级到另一个版本通常使用 do-release-upgrade,风险和准备工作都更多,不要把它和 apt upgrade 混为一谈。
二、搜索、查看和安装软件
以网络扫描工具 nmap 为例:
apt search nmap
apt show nmap
apt policy nmap
sudo apt install nmap
search 按关键词搜索;show 显示描述、依赖和大小;policy 显示已安装版本、候选版本(Candidate)及来源;install 才真正安装。多个软件包可以写在同一命令后,用空格分隔。
验证安装结果:
command -v nmap
nmap --version
dpkg -L nmap | less
command -v 告诉你命令实际位于哪里,dpkg -L 列出这个包安装的文件。若想知道某个现有文件属于哪个包,可执行 dpkg -S /etc/host.conf。
三、卸载、清理与配置文件
sudo apt remove nmap
sudo apt purge nmap
sudo apt autoremove
remove 删除程序但通常保留系统级配置;purge 连配置一起删除;autoremove 清理不再需要、原先作为依赖自动安装的软件包。执行 purge 或 autoremove 前一定阅读待删除清单,数据库、Web 服务等软件的业务数据也不一定随包管理器一起删除,仍需单独备份和检查。
如果只是想清理下载缓存,可先查看占用,再执行:
du -sh /var/cache/apt/archives
sudo apt clean
四、安装本地 deb 文件
从可信官网得到 .deb 文件后,优先让 APT 安装:
cd ~/Downloads
sudo apt install ./example.deb
路径前的 ./ 很重要,它告诉 APT 这是本地文件。APT 会尝试从已配置的软件仓库补齐依赖。sudo dpkg -i example.deb 也能安装,但 dpkg 不负责在线解析依赖,因此新手优先使用 APT。
下载第三方包时要核对官网域名、CPU 架构(Architecture,如 amd64、arm64)和校验值(Checksum)。不要执行“关闭签名检查”之类的命令来绕过安全提示。
五、Snap 适合什么场景
Snap 包通常把依赖一起封装,通过通道(Channel)发布,并默认自动刷新。基本命令是:
snap find 软件名
sudo snap install 软件名
snap list
sudo snap remove 软件名
deb 与系统结合更紧密,服务器基础组件通常优先用官方 APT 仓库;Snap 适合希望自带依赖、跨发行版一致的软件。两种格式可能提供同名程序,排障时要先确认程序来自哪里:
command -v 程序名
snap list | grep 程序名
dpkg -l | grep 程序名
六、服务器更新的稳妥顺序
- 先确认备份或虚拟机快照可用。
- 用
df -h确认磁盘空间,避免升级中途写满。 - 执行
sudo apt update,再查看apt list --upgradable。 - 在业务低峰执行
sudo apt upgrade。 - 用
systemctl --failed检查失败服务。 - 若
/var/run/reboot-required存在,安排维护窗口重启,而不是在业务高峰立刻重启。
软件源越多,依赖冲突和供应链风险越高。优先使用 Ubuntu 官方仓库;添加第三方仓库前确认维护者、签名密钥、支持的 Ubuntu 版本和卸载办法。
七、安装后如何确认服务真的可用
安装服务器程序不等于服务已经正常对外工作。以 Nginx 为例,可以依次检查软件版本、服务状态、监听端口和本机访问:
nginx -v
systemctl status nginx --no-pager
ss -lntp | grep ':80'
curl -I http://127.0.0.1/
systemctl status 中的 active (running) 表示进程正在运行;ss 用于确认端口(Port)是否监听;curl -I 只请求响应头,适合快速验证 HTTP。若本机正常而其他电脑无法访问,再检查防火墙、服务器 IP、路由和端口映射,不要反复卸载重装软件。
服务日志通常可通过 systemd 日志查看:
journalctl -u nginx -n 50 --no-pager
journalctl -u nginx -f
第一条显示最近 50 行,第二条持续跟踪;按 Ctrl+C 停止。不同软件还可能在 /var/log/ 下保存自己的日志。
八、第三方仓库为什么要谨慎
有些安装教程会让你添加个人软件包档案(Personal Package Archive,PPA)或厂商仓库。仓库中的软件和更新将获得在系统中安装文件的能力,因此它不是普通网页收藏,而是一项长期信任。添加前至少确认:域名是否属于项目官方、是否支持你的 Ubuntu 版本、签名密钥从哪里取得、仓库停用时如何回退。
不要继续使用 apt-key 这种已经弃用的全局信任方式。现代做法通常把密钥放入单独的 keyring 文件,并在软件源的 Signed-By 字段中限定使用范围。具体命令应以软件厂商针对当前 Ubuntu 版本发布的官方说明为准。
如果只是为了一个简单工具,先执行 apt search 看官方仓库是否已有可用版本。少一个第三方源,日后的版本升级、依赖处理和安全审计就简单一些。
九、记录自己安装了什么
临时测试软件很容易忘记。可以查看手动安装标记和 APT 历史:
apt-mark showmanual | less
less /var/log/apt/history.log
日志可以回答“什么时候装了什么、升级了什么”,但不能替代变更记录。正式服务器每次安装或删除软件,最好写下目的、执行时间和回退办法。几个月后的排障往往就靠这些记录节省时间。
常见报错也可以先按方向分类:Temporary failure resolving 多半是 DNS 或网络问题;404 Not Found 可能是索引过旧,先运行 apt update;NO_PUBKEY 或签名无效涉及仓库信任,应该核对官方安装说明,不能关闭签名验证;No space left on device 则先用 df -h 和 df -i 检查磁盘容量与 inode。分清类型再处理,比反复换软件源更有效。
本文为面向初学者的中文学习整理。资料来源:Ubuntu Server 官方文档:Managing your software。
评论一下?