【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包管理

2 解密 Linux 包管理:apt 和 apt-get 的区别

3 Linux yum源配置以及yum命令讲解

4 制作DEB包

相关推荐
AlfredZhao5 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346611 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪13 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理