大家好,接下来的一段时间我将开始学习野火的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、版权信息等 |
补充:
/usr是只读的系统目录:存放软件本体,安装时写入,运行时不会修改。/var是可变目录:日志、缓存、运行数据,程序运行过程会持续读写修改。/etc配置:区分全局与用户配置
/etc/xxx.conf:全局配置,所有用户生效;~/.xxxrc:用户私有配置,只对当前用户生效。- 区分
/bin和/usr/bin
/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 软件名 | 彻底卸载,删除配置文件 |
- 总结
- deb 包用于 Ubuntu/Debian 系;rpm 用于 CentOS/RHEL 系。
dpkg是底层工具,处理本地 deb,不解决依赖;apt 负责联网 + 依赖。-L看已安装文件;-c看 deb 包内部文件。-r卸载保留配置;-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 | 上层管理工具,联网 | 自动处理依赖 |