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

相关推荐
小此方16 小时前
Linux网络(一):揭秘从网络发展哲学到 TCP/IP 协议栈分层设计的设计哲学
linux·网络·tcp/ip
星野爱89516 小时前
远程控制哪家安全性更高?ToDesk、UU远程、向日葵隐私屏深度测评!
linux·运维·网络
ALINX技术博客16 小时前
【黑金云课堂】FPGA技术教程Linux开发:系统定制
linux·运维·fpga开发
ShineWinsu17 小时前
对于Linux:传输层协议UDP原理的解析
linux·c++·面试·udp·协议·传输层·计算机系统
bmjwin18 小时前
一个监控脚本实时追踪记录进程隐秘连接ip方法
运维·服务器
霁月的小屋18 小时前
Docker 工程化实践(六):Docker Compose 管理多容器应用
运维·docker·容器
2601_9657984718 小时前
How to Build a Custom Artisan Store on WordPress: Crafti Theme Review
linux·服务器·数据库
mounter62518 小时前
深度解析 Linux 内核中的 iomap 子系统:历史、演进、核心机制与未来
linux·文件系统·linux kernel·kernel·iomap
luyun02020218 小时前
论坛里的小工具,吾爱出品
运维·服务器·windows
Miao1213119 小时前
工程交付指标入门:如何重新掌控软件交付
大数据·运维·devops