在 Ubuntu 或 Debian 上装软件你会反复碰到三个名字apt、dpkg、apt-cache。新手容易把它们当成一回事其实分工很清楚——apt 负责联网装包dpkg 负责本地解包apt-cache 负责查仓库索引。这篇把三者的语法、常用参数和配合方式讲透。一、先理清三者分工工具定位能不能联网典型用途apt上层包管理能装、卸、升级软件自动处理依赖apt-cache仓库索引查询只读本地索引搜包、看依赖、看版本dpkg底层解包不能装本地 .deb 文件、查文件归属一句话平时九成操作用 apt要查包的详细信息用 apt-cache手上有个 .deb 文件、或者要排查这个文件是谁装的才轮到 dpkg。二、apt日常主力语法格式apt[选项]子命令[包名...]常用子命令命令作用sudo apt update刷新仓库索引sudo apt upgrade升级所有可升级包sudo apt install 包名安装包sudo apt remove 包名卸载保留配置sudo apt purge 包名卸载并删配置sudo apt autoremove清理不再被依赖的孤儿包apt list --installed列已装包apt edit-sources编辑软件源示例与预期输出示例 1安装 nginxsudoaptupdatesudoaptinstall-ynginx预期输出节选Reading package lists... Done Building dependency tree... Done The following additional packages will be installed: nginx-common nginx-core Suggested packages: fcgiwrap nginx-doc The following NEW packages will be installed: nginx nginx-common nginx-core 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 577 kB of archives. ... Setting up nginx-core (1.22.0-1ubuntu1.24) ... Setting up nginx (1.22.0-1ubuntu1.24) ...示例 2卸载并清理sudoaptremove-ynginxsudoaptautoremove-yremove只删主程序配置留在/etc/nginx要连配置一起删用purge。autoremove把当初为了装 nginx 而拉进来、现在没人用的依赖一起清掉。⚠️ 常见错误新装系统直接 install 报 Unable to locate package先sudo apt update。把 update 和 upgrade 搞混update 只更新索引清单不装任何东西。apt和apt-get新脚本用apt输出更友好老文档里的apt-get install照样能跑不必照抄。三、apt-cache查仓库索引apt-cache 不联网它查的是apt update下载到本地的索引文件所以查询速度极快而且不需要 sudo。常用子命令命令作用apt-cache search 关键词按名字和描述搜包apt-cache show 包名看包的版本、依赖、描述apt-cache depends 包名看这个包依赖谁apt-cache rdepends 包名看谁依赖这个包反向依赖apt-cache policy 包名看候选版本和各仓库版本示例与预期输出搜名字带 nginx 的包apt-cachesearch nginx|head-5预期输出nginx - small, powerful, scalable web/proxy server nginx-common - nginx web/proxy server (common files) nginx-core - nginx web/proxy server (core module) nginx-doc - nginx documentation libnginx-mod-http-image-filter - nginx modules看 nginx 依赖谁apt-cachedepends nginx预期输出节选nginx Depends: nginx-core Depends: nginx-common Recommends: libnginx-mod-http-geoiprdepends是反向查询升级某个包前用它看看谁在依赖它避免删了一个公共库导致一片软件挂掉。四、dpkg底层解包工具dpkg 不联网只处理本地 .deb 文件和本地数据库。apt 装包时最后一步就是调 dpkg 把文件解开。常用参数参数作用-i 文件.deb安装本地 .deb-r 包名卸载保留配置-P 包名彻底卸载删配置-l [包名]列出已装包-L 包名列出这个包装了哪些文件-S 文件名反查某个文件属于哪个包--configure -a修复被中断的配置示例与预期输出示例 1从本地 .deb 安装sudodpkg-i./google-chrome-stable_120.0.6099.71-1_amd64.debdpkg 自己不处理依赖缺依赖时会报错。这种情况跑完这条再执行一句sudo apt -f installapt 会把缺的依赖补上sudoapt-finstall示例 2反查文件归属想知道/usr/sbin/nginx这个文件是哪个包装进来的dpkg-S/usr/sbin/nginx预期输出nginx-core: /usr/sbin/nginx示例 3列已装包dpkg-l|grepnginx预期输出节选ii nginx 1.22.0-1ubuntu1.24 amd64 small, powerful, scalable web/proxy server ii nginx-common 1.22.0-1ubuntu1.24 all nginx web/proxy server (common files)每行开头两个字母ii表示已正确安装如果看到iF、iU说明上次安装中途出错了跑sudo dpkg --configure -a修复。五、软件源在哪apt 从哪下包由两个位置决定/etc/apt/sources.list主源配置/etc/apt/sources.list.d/目录里每个.list文件是一个额外仓库。国内服务器默认官方源在国外装软件慢得受不了换清华、阿里、中科大的镜像源就能解决。改完必须sudo apt update才生效。改之前先备份原文件改坏了能退回去。六、知识扩展/var/lib/dpkg 里记了什么dpkg 的本地数据库在/var/lib/dpkg/其中status文件是纯文本记录了每个已装包的状态、依赖、维护者信息Package: nginx Status: install ok installed Priority: optional Section: httpd Architecture: amd64 Version: 1.22.0-1ubuntu1.24 Depends: nginx-core, nginx-commondpkg -l读的就是这个文件。理解这一点两个故障就有思路了装包中途断电导致数据库状态不一致用sudo dpkg --configure -a让它把没跑完的配置流程补完想强制重装某个包sudo apt install --reinstall 包名本质也是重新走一遍 dpkg 的解开和登记流程。另外区分清楚remove和purgeremove 之后/etc/nginx里的配置还在下次再装 nginx 会沿用老配置purge 才是连根拔起。生产服务器上排查为什么我改的配置不生效经常是之前 purge 没做干净。
企业数字化 ERP 产品动态
相关推荐
后门漏洞从原理到自查:网络安全入门者必看的防御指南 1. 后门到底是什么:先给它一个清晰的定义说起来挺有意思,我最早接触"后门漏洞"这个词,不是从教材上,而是帮一个朋友修电脑时听到的抱怨。他原话是"我这电脑好像被人装了个后门,总是自己动"&#x… · 2026/9/26 14:21:52
开源无代码爬虫机器人Maxun:从Docker部署到快速采集实操 做了这么多年数据采集,我越来越觉得爬虫这个活儿真正技术含量高的地方永远是少数,更多的时间都花在了重复劳动上:写选择器、调登录态、处理翻页、定时任务挂了再重跑。所以当我第一次看到 Maxun 的时候,第一反应就是"这不就是… · 2026/9/26 14:21:52
Claude Code提示词模板库:让AI编程输出稳定可预期 如果你用 Claude Code 写过超过一个项目,一定会有这种体会:同一个提示词,在不同目录下表现天差地别。不是模型不稳定,而是你每次都在重新教育它。几个月前我把高频使用的提示词整理成了一套可复用的模板库,文件名就叫c… · 2026/9/26 14:21:52
AI辅助开发如何撑起16万行代码:从Prompt到Agent的工程化实践 1. 16万行代码这个数字,到底意味着什么先把话说在前头:16万行代码不是一个"炫技"的数字,它更像一个体检报告上的指标——单看没意义,得结合上下文才知道是健康还是虚胖。我见过一个前端项目16万行里有9万行是自动生成的… · 2026/9/26 15:30:25
Jmeter+Jenkins集成:搭建自动化接口压测持续集成链路 1. 为什么非要把Jmeter和Jenkins搭在一起先说个真实场景。刚接触接口压力测试那会儿,我都是本地开着Jmeter,手动点“启动”按钮,盯着聚合报告看数字,测完手动截图、手动整理结果发给群里。一次两次还能忍,等接口越来越… · 2026/9/26 15:30:25
YOLOv5+DeepSORT高速车流统计实战:解决漏检与ID跳变 简介:本资源是一套基于YOLOv5与DeepSORT算法融合实现的高速移动目标流量统计算法源码及完整项目说明,面向计算机视觉初学者、智能交通系统开发者及AI项目实践者,解决视频流中车流与人流量实时跨线计数的实际问题。项目支持多检测线部署&#… · 2026/9/26 15:30:25
Manus 实操教学手册:用 TaoToken 统一 Key 打通多工具调用链 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 15:30:25
Open-Meteo 免费天气 API 实战指南:从一条查询到自建部署 Open-Meteo 免费天气 API 实战指南:从一条查询到自建部署 【免费下载链接】open-meteo Free Weather Forecast API for non-commercial use 项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo
你想在应用里显示天气,又不想注册申请付… · 2026/9/26 15:30:18
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46