【Linux系统】安装包 deb | rpm

Linux安装包 deb 与 rpm 对比

  • Debian - pkdk
  • Red Hat - rpm

包内部结构

deb包内部结构


Package 包名(tree)、Version 版本(1.5.1.1-1)、Architecture 目标机架构(i386 386及以后)、Maintainer 维护者(Ubuntu MOTU Developers)、Original-Maintainer 原维护者(Florian Ernst)、Installed-Size 安装后大小(92K)、Depends 依赖软件包(libc6 不低于 2.6-1 版本)、Section 包分类(工具)、Priority 优先级(可选)、Description 包描述、Homepage 软件主页

rpm包内部结构

依赖关系类型

bash 复制代码
# DEB 依赖类型
Depends:        # 必须的依赖
Recommends:     # 推荐的依赖(默认安装)
Suggests:       # 建议的依赖(手动安装)
Enhances:       # 增强其他包的功能
Pre-Depends:    # 必须在配置前安装的依赖
Breaks:         # 会破坏此包的包
Conflicts:      # 冲突的包
Replaces:       # 替换的包
Provides:       # 虚拟包提供

# RPM 依赖类型
Requires:       # 必须的依赖
Recommends:     # 推荐的依赖(DNF支持)
Suggests:       # 建议的依赖(DNF支持)
Enhances:       # 增强依赖(DNF支持)
Conflicts:      # 冲突的包
Obsoletes:      # 废弃的包
Provides:       # 虚拟包提供

包构建对比

bash 复制代码
# 1. DEB 构建环境
sudo apt install build-essential devscripts debhelper dh-make
# 创建构建目录结构
dh_make --createorig -s -n -p myapp_1.0

# 2. DEB 构建流程
cd myapp-1.0/
dpkg-buildpackage -us -uc  # 不签名
# 生成:
# myapp_1.0-1_amd64.deb     # 二进制包
# myapp_1.0-1_amd64.changes # 变更日志
# myapp_1.0-1.dsc          # 源代码描述
# myapp_1.0.orig.tar.gz    # 原始源代码

# 3. DEB 规范检查
lintian package.deb           # 检查DEB包规范
debc package.deb              # 查看包内容
bash 复制代码
# 1. RPM 构建环境
sudo yum install rpm-build rpmdevtools
# 创建构建目录结构
rpmdev-setuptree
# 目录结构:
# ~/rpmbuild/
#   ├── SOURCES/    # 源代码
#   ├── SPECS/      # spec文件
#   ├── BUILD/      # 构建目录
#   ├── RPMS/       # 二进制RPM
#   └── SRPMS/      # 源码RPM

# 2. RPM 构建流程
rpmbuild -ba myapp.spec
# 生成:
# ~/rpmbuild/RPMS/x86_64/myapp-1.0-1.x86_64.rpm   # 二进制RPM
# ~/rpmbuild/SRPMS/myapp-1.0-1.src.rpm           # 源码RPM

# 3. RPM 规范检查
rpmlint myapp.spec           # 检查spec文件
rpmlint package.rpm          # 检查RPM包
rpm -qpi package.rpm         # 查看包信息

操作命令对比

bash 复制代码
rpm -qa|grep 包名 # 验证是否已经安装了某个软件

包管理工具对比

安装工具对比

deb - apt

apt 包含了apt-get ,apt更适合日常使用,而apt-get更受脚本开发。

bash 复制代码
apt-cache depends [软件名] # 查询依赖

Rhel - yum

  • RPM 包安装的最大的缺点: 依赖性太强
  • yum是一个专门为了解决包的依赖关系而存在的软件包管理器

使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装

yum 查询命令
bash 复制代码
yum list #查询所有已安装和可安装的软件包
yum list [包名] #查询执行软件包的安装情况
yum search [关键字]#从 yum 源服务器上查找与关键字相关的所有软件包
yum info [包名] #查询执行软件包的详细信息
yum deplist [软件名] # 查询软件依赖的其他命令,库等等
yum 安装
bash 复制代码
yum -y install [包名]
yum 升级
bash 复制代码
yum -y update
yum -y update [特定软件包]
yum卸载
bash 复制代码
yum remove [包名]

使用实例

Debian - pkdk

  • deb 是 Debian 系 Linux 使用的软件包格式,使用dpkg管理。dpkg 是 Debian 的"原生"包管理软件
解包
bash 复制代码
dpkg -X # 将 deb 包的内容文件释放出来
dpkg -e # 将 deb 包的控制信息释放出来
打包

准备:

bash 复制代码
1. control 配置 # 见包内部结构,路径为DEBIAN/control
2. md5sums 文件 #软件包中各文件的 md5 校验值 md5sum `find usr -type f` > DEBIAN/md5sums

打包:

bash 复制代码
cd ..
dpkg -b fakeroot/ foo.deb
# 输出foo.deb
安装
bash 复制代码
sudo dpkg -i foo.deb

Rhel - rpm

选择建议

bash 复制代码
# 选择 DEB/APT 如果:
1. 你是新手或桌面用户
2. 需要最新软件版本
3. 使用 Ubuntu 云服务器
4. 开发桌面或移动应用
5. 需要广泛的社区支持

# 选择 RPM/DNF 如果:
1. 企业服务器环境
2. 需要长期稳定支持
3. 金融/政府机构
4. 已有 Red Hat 技术栈
5. 需要商业技术支持

参考:

1\] [【Linux】rpm,deb包管理](https://blog.csdn.net/SGchi/article/details/131470745?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogOpenSearchComplete~Rate-8-131470745-blog-155538748.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogOpenSearchComplete~Rate-8-131470745-blog-155538748.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=9) \[2\] [解密 Linux 包管理:apt 和 apt-get 的区别](https://www.sysgeek.cn/apt-vs-apt-get/) \[3\] [Linux yum源配置以及yum命令讲解](https://learnku.com/articles/48649) \[4\] [制作DEB包](https://ziboyi.github.io/%E5%88%B6%E4%BD%9CDEB%E5%8C%85/)

相关推荐
CodeByV40 分钟前
【Linux】线程从内核到实战:本质、控制逻辑与封装指南
linux
Xの哲學42 分钟前
Linux设备管理:从内核驱动到用户空间的完整架构解析
linux·服务器·算法·架构·边缘计算
繁华似锦respect1 小时前
C++ unordered_map 底层实现与详细使用指南
linux·开发语言·c++·网络协议·设计模式·哈希算法·散列表
大聪明-PLUS1 小时前
在 C++ 中开发接口类
linux·嵌入式·arm·smarc
IT 乔峰2 小时前
linux部署DHCP服务端
linux·运维·网络
__beginner__2 小时前
docker安装influxdb
运维·docker·容器
IDC02_FEIYA2 小时前
服务器带宽怎么计算最大并发?服务器带宽计算公式
运维·服务器
lifejump2 小时前
NAT应用实验
运维·服务器
菜鸟小九2 小时前
mysql运维(日志)
运维·数据库·mysql