一、简介
Linux中系统大致可分为两类:
- Debian系列:Debian、Ubuntu;
- Red Hat系列:Red Hat、Centos、Fedora;
这两类系统都使用了Linux内核,最大的区别在于他们的软件包管理方式:
| 项目 | Debian | Red Hat |
|---|---|---|
| 二进制软件包 | deb | rpm |
| 包管理程序 | dpkg | rpm |
| 软件仓库 | apt | yum ( RHEL 7 之前 ) dnf ( RHEL 8 之后 ) |
除此以外, Debian 与 Red Hat 还存在一些细微差别
| 项目 | Debian | Red Hat |
|---|---|---|
| 维护方 | 社区 | 企业 ( 由 Red Hat 公司维护 ) |
| 查看系统版本 | /etc/debian_version ( 但多数时候使用 lsb_release ) | /etc/redhat-release |
| SELinux 支持 | 支持,但默认不安装 | 支持,且默认安装并启用强制模式 |
| 安全性 | 默认启用 AppArmor | 使用 SELinux |
| 官方维护软件包数量 | 多 | 少 ( 不使用 EPEL 或 ELRepo 等社区维护源 ) |
| 软件包更新速度 | 快 (对于 unstable 与 test 版本 ) 慢 (对于 stable 版本) | 非常慢 (多数时候需跟随大版本更新) |
| 技术支持 | 无 ( 社区支持 ) | 有技术支持服务 ( 由 Red Hat 公司提供技术支持 ) |
| 维护时长 | 3 年 ( 对于 unstable 与 test 版本 ) 5 年 ( 对于 stable 版本 ) | 10 年 ( 包含 LTS 支持 ) |
二、deb包管理方式
deb 是 Debian 系 Linux 使用的软件包格式,使用dpkg解压一个deb包可以看到组成部分为:
$ sudo apt-get install tree
$ dpkg -X /var/cache/apt/archives/tree_1.5.1.1-1_i386.deb fakeroot
$ cd fakeroot
$ dpkg -e /var/cache/apt/archives/tree_1.5.1.1-1_i386.deb
$ tree
.
|-- DEBIAN # 控制信息
| |-- control
| |-- md5sums
|-- usr
|-- bin # 可执行程序
| |-- tree
|-- share
|-- doc
| |-- tree
| |-- README
| |-- changelog.Debian.gz
| |-- changelog.gz
| |-- copyright
|-- man
|-- man1
|-- tree.1.gz
在安装deb包时,包内的各部分会释放到对应的系统根目录下。更多关于deb包信息可参考:制作DEB包、Debian包的潜规则
2.1 dpkg
dpkg是Debian系统中众多软件包管理工具的后端,负责依赖检测和软件安装
| dpkg命令 | 命令的功能 |
|---|---|
| dpkg -i | 安装软件包 |
| dpkg -r | 删除软件包 |
| dpkg -L | 列出软件包所有文件的列表 |
| dpkg -s | 查询软件包的状态 |
| dpkg -S | 搜索指定文件所属的软件包 |
| dpkg -l | 列出已安装的软件包 |
| dpkg --configure | 重新配置软件包 |
注:dpkg不是直接从网络上下载软件包,而是通过APT(Debian软件包管理工具)下载。
参考链接:Linux Ubuntu dpkg 命令详解
2.2 apt,apt-get
apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。
apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。
| apt 命令 | 取代的命令 | 命令的功能 |
|---|---|---|
| apt install | apt-get install | 安装软件包 |
| apt remove | apt-get remove | 移除软件包 |
| apt purge | apt-get purge | 移除软件包及配置文件 |
| apt update | apt-get update | 刷新存储库索引 |
| apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
| apt autoremove | apt-get autoremove | 自动删除不需要的包 |
| apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
| apt search | apt-cache search | 搜索应用程序 |
| apt show | apt-cache show | 显示装细节 |
当然,apt 还有一些自己的命令:
| 新的apt命令 | 命令的功能 |
|---|---|
| apt list | 列出包含条件的包(已安装,可升级等) |
| apt edit-sources | 编辑源列表 |
参考链接:Linux中apt与apt-get命令的区别与解释、史上最硬核的rpm和dpkg依赖问题解决方案
三、rpm包管理方式
RPM 二进制包命名的一般格式为: 包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:
- httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。、
- 2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号。
- 15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
- el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
- centos:表示此包适用于 CentOS 系统。
- i686:表示此包使用的硬件平台,目前的 RPM 包支持的平台如表 1 所示:
3.1 rpm工具
| 新的apt命令 | 命令的功能 |
|---|---|
| rpm -qa |grep <package_name> | 查找安装包 |
| rpm -ql <package_name> | 查找安装包路径 |
| rpm -ivh <package_name> | 安装rpm包 |
| 参考链接:Linux rpm 命令 |
3.2 yum工具
yum 解决依赖关系的基本逻辑是:yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。
| yum命令 | 命令的功能 |
|---|---|
| yum check-update | 列出所有可更新的软件清单命令 |
| yum update | 更新所有软件命令 |
| yum install <package_name> | 仅安装指定的软件命令 |
| yum install --downloadonly | 下载一个rpm包到本地 |
| yum list | 列出所有可安裝的软件清单命令 |
| yum remove <package_name> | 删除软件包命令 |
| yum search <package_name> | 查找软件包命令 |
| yum clean, yum clean all | 清除缓存目录下的软件包及旧的 headers |
| yum deplist <package_name> | 查看某个包的依赖关系 |
本文介绍了Linux中的两大系统家族——Debian和RedHat,它们在软件包管理上的主要差异,包括Debian的deb包和dpkg、apt工具,以及RedHat的rpm包、yum工具。文章详细阐述了不同系统的软件包格式、管理工具及其功能,以及两者在维护、安全性、软件更新速度和支持方面的区别。

617

被折叠的 条评论
为什么被折叠?



