
大家好,接下来的一段时间我将开始学习野火的Linux系统课程并将学习到的干货逐步更新到我的CSDN博客中。没时间刷课的同学可以把我的博客喂给AI 突击一下。
目录
1、Linux软件包
1.两大类软件包
源码包(.tar.gz 压缩源码)
二进制包(deb、rpm)
2.deb 软件包目录规范(FHS 标准)
2、deb包与dpkg工具
3、构建一个helloworld的deb包
4、apt工具
apt 包管理器
常用 apt 命令
dpkg vs apt
1、Linux软件包
1.两大类软件包
源码包(.tar.gz 压缩源码)
优点
- 开源免费,可以看到源代码
- 可以自由裁剪功能,编译时开启 / 关闭模块
- 可以修改源代码,二次开发
缺点
- 安装步骤繁琐:./configure → make → make install
- 需要本地编译,编译耗时久
- 依赖库多,编译报错新手很难排查解决
本质:拿到 C/C++ 源码,自己在本机编译生成可执行程序。
二进制包(deb、rpm)
已经在别的机器编译完成,直接拿来安装,不需要本机编译。
优点
- 安装简单,一条命令即可
- 安装速度快,不用编译
缺点
- 看不到源代码,不能修改源码
- 编译时已经固定功能,无法自由裁剪模块
- 依赖问题需要包管理器处理
2.deb 软件包目录规范(FHS 标准)
| 普通程序 | /usr/bin | 普通用户可执行的二进制程序,所有用户都能调用 |
| root 权限程序 | /usr/sbin | 仅 root / 管理员使用的工具程序,普通用户一般不执行 |
| 程序配置文件 | /etc | 系统级配置,全局配置文件;软件安装后,修改这里会影响全部用户 |
| 日志文件 | /var/log | 运行产生的日志,可变数据,会不断增长 |
| 文档文件 | /usr/share/doc | 软件说明文档、README、版权信息等 |
补充:
- /etc/xxx.conf:全局配置,所有用户生效;
- ~/.xxxrc:用户私有配置,只对当前用户生效。
- /bin:系统启动必备命令(单用户模式也要用)
- /usr/bin:普通应用软件,deb 包的程序一般放这里。
2、deb包与dpkg工具
- 两种二进制包
| deb | Debian、Ubuntu、Deepin | dpkg / apt |
| rpm | RedHat、CentOS、Fedora | rpm / yum/dnf |
注意:deb 和 rpm 不能互相通用,Ubuntu 不能直接装 rpm 包,因此我们主要用deb。
- dpkg(deb 底层工具)
dpkg:本地包管理工具,只处理本地已经下载好的 deb 文件,不会自动解决依赖。 apt 是上层工具,会联网自动处理依赖,底层依然调用 dpkg。
- dpkg 常用命令
| dpkg -i xxx.deb | 安装 deb 包(本地文件) |
| dpkg -L 软件名 | 查看该软件安装到系统哪些目录(文件列表) |
| dpkg -l 软件名 | 查看软件版本、安装状态 |
| dpkg -s 软件名 | 查看软件详细信息(版本、状态、依赖) |
| dpkg -c xxx.deb | 查看deb 包内部包含哪些文件(还没安装,只是下载了deb包) |
| dpkg -r 软件名 | 卸载软件(保留配置文件) |
| dpkg -P 软件名 | 彻底卸载,删除配置文件 |
- 总结
3、构建一个helloworld的deb包
4、apt工具
apt 包管理器
旧版:apt‑get、apt‑cache 命令分散; apt 是新版整合工具,底层调用 dpkg。
- 优点:自带进度条、显示升级包数量,交互友好
- 重要:apt 可以联网自动解决依赖;dpkg 不行
常用 apt 命令
apt install 软件名 #联网安装,自动解决依赖
apt remove 软件名 #卸载,保留配置文件
apt purge 软件名 #彻底卸载,删除配置
apt show 软件名 #查看软件信息
dpkg vs apt
| dpkg | 底层工具,操作本地 deb 包 | 不自动处理依赖 |
| apt | 上层管理工具,联网 | 自动处理依赖 |





