【Linux】rpm,deb包管理

本文介绍了Linux中的两大系统家族——Debian和RedHat,它们在软件包管理上的主要差异,包括Debian的deb包和dpkg、apt工具,以及RedHat的rpm包、yum工具。文章详细阐述了不同系统的软件包格式、管理工具及其功能,以及两者在维护、安全性、软件更新速度和支持方面的区别。

一、简介

Linux中系统大致可分为两类:

  • Debian系列:Debian、Ubuntu;
  • Red Hat系列:Red Hat、Centos、Fedora;

这两类系统都使用了Linux内核,最大的区别在于他们的软件包管理方式:

项目DebianRed Hat
二进制软件包debrpm
包管理程序dpkgrpm
软件仓库aptyum ( RHEL 7 之前 ) dnf ( RHEL 8 之后 )

除此以外, Debian 与 Red Hat 还存在一些细微差别

项目DebianRed Hat
维护方社区企业 ( 由 Red Hat 公司维护 )
查看系统版本/etc/debian_version ( 但多数时候使用 lsb_release )/etc/redhat-release
SELinux 支持支持,但默认不安装支持,且默认安装并启用强制模式
安全性默认启用 AppArmor使用 SELinux
官方维护软件包数量少 ( 不使用 EPELELRepo 等社区维护源 )
软件包更新速度快 (对于 unstabletest 版本 ) 慢 (对于 stable 版本)非常慢 (多数时候需跟随大版本更新)
技术支持无 ( 社区支持 )有技术支持服务 ( 由 Red Hat 公司提供技术支持 )
维护时长3 年 ( 对于 unstabletest 版本 ) 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 installapt-get install安装软件包
apt removeapt-get remove移除软件包
apt purgeapt-get purge移除软件包及配置文件
apt updateapt-get update刷新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt autoremoveapt-get autoremove自动删除不需要的包
apt full-upgradeapt-get dist-upgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索应用程序
apt showapt-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 yum源配置以及yum命令讲解

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值