解压rpm和deb包

本文介绍了如何解压rpm和deb包,并提供了在Ubuntu和Redhat系统中查找文件所属软件包的方法。对于进行系统维护和软件包管理的人员来说非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.解压rpm包
rpm2cpio xx.rpm|cpio -idmv

2.解压deb包
dpkg-deb --fsys-tarfile ***.deb | tar xvf -
如果没有dpkg-deb命令,可使用:
ar -x ***.deb,此时会出现两个tar包,使用tar解包即可。

3.查找文件来自于哪个包
ubuntu: 
#  dlocate foo - 在已安装的包中搜索“foo”的文件。对于回答“这个文件来源于哪个包”这个问题,是非常实用的。dlocate是一个软件包,必须安装它才能使用本命令。
# dpkg -S foo - 和上面的命令一样,但相比更慢一些。他只能在Debian或Ubuntu系统下运行。另外,不需要安装dlocate包。 

Redhat:
rpm -qf foo
<think>我们参考了引用[2]引用[3]中关于解压deb的方法。用户询问如何解压deb文件,我们将提供两种常用方法:使用dpkg命令分步解压主体文件控制文件,以及使用ar命令解压(因为deb本质上是ar归档格式)。 ### 方法1:使用dpkg命令(推荐) 这种方法分为两步:解压主体文件(数据部分)解压控制信息(DEBIAN目录下的控制文件)。 1. **创建目标目录**(可选,用于存放解压后的文件): ```bash mkdir extracted_deb ``` 2. **解压主体文件(数据部分)**: 使用`dpkg -X`命令将deb中的数据文件解压到指定目录: ```bash dpkg -X your_package.deb extracted_deb/ ``` 这会将所有安装到系统的文件(如`/usr`、`/opt`等目录下的文件)解压到`extracted_deb`目录中。 3. **解压控制信息(DEBIAN目录)**: 使用`dpkg -e`命令将deb中的控制信息(位于DEBIAN目录下)解压到目标目录的DEBIAN子目录中: ```bash dpkg -e your_package.deb extracted_deb/DEBIAN ``` 这会在`extracted_deb`目录下创建DEBIAN子目录,其中含`control`、`postinst`等控制文件。 ### 方法2:使用ar命令(适用于所有ar格式归档) 由于deb实际上是ar格式的归档文件,我们可以用ar命令来解压。 1. **提取归档内容**: ```bash ar x your_package.deb ``` 执行后,会得到三个文件(通常): - `debian-binary`: deb格式版本号(如2.0) - `control.tar.xz`(或`.gz`): 含控制信息 - `data.tar.xz`(或`.gz`): 含数据文件 2. **解压控制文件**: ```bash tar -xf control.tar.xz # 如果压缩格式是xz # 或者 tar -zxf control.tar.gz # 如果压缩格式是gz ``` 解压后得到DEBIAN目录(里面是控制文件)。 3. **解压数据文件**: ```bash tar -xf data.tar.xz # 如果压缩格式是xz # 或者 tar -zxf data.tar.gz # 如果压缩格式是gz ``` 解压后得到系统文件结构(如usr、opt等目录)。 ### 示例:完整解压过程(方法1) 假设我们有一个名为`example.deb`的,要解压到`example`目录: ```bash # 创建目录 mkdir example # 解压数据部分 dpkg -X example.deb example/ # 解压控制信息 dpkg -e example.deb example/DEBIAN ``` ### 验证解压结果 查看解压后的目录结构: ```bash tree example/ ``` 应该会看到类似以下结构: ``` example/ ├── DEBIAN │ ├── control │ ├── postinst │ └── ... ├── usr │ ├── bin │ │ └── ... ├── opt │ └── ... └── ... ``` ### 注意事项 - **权限问题**:解压后的文件可能保留原有权限,如果需要修改,请使用`chmod`调整。 - **压缩格式**:不同版本的deb可能使用不同的压缩格式(如gzip、xz),解压时需注意。 ### 相关问题 1. 如何查看deb中的文件列表而不解压? 2. 如何修改解压后的deb内容并重新打? 3. 解压deb时遇到权限错误怎么办? 4. 如何从deb中提取特定文件? 5. 如何查看deb的依赖信息而不安装它? > 提示:更多高级操作可参考`dpkg``ar`的man手册[^2][^3]。</think>### 如何解压 DEB 文件(两种方法) #### 方法一:使用 dpkg 命令(推荐) 这是官方推荐的标准方法,能完整保留所有文件控制信息: 1. **创建解压目录** ```bash mkdir deb_extract ``` 2. **解压主体文件**(程序文件、资源等) ```bash dpkg -X your_package.deb deb_extract/ ``` > 解压后的文件结构会保留原始路径(如 `/usr/bin`, `/etc` 等)[^2] 3. **解压控制信息**(DEBIAN目录) ```bash dpkg -e your_package.deb deb_extract/DEBIAN ``` > 这会提取 `control`, `postinst` 等关键配置文件[^3] 4. **查看解压结果** ```bash tree deb_extract/ ``` 典型结构: ``` deb_extract/ ├── DEBIAN │ ├── control │ ├── postinst │ └── ... ├── usr │ ├── bin │ └── share └── ... ``` #### 方法二:使用 ar 命令(底层方法) DEB 本质是 ar 格式的压缩,可直接解压: ```bash ar x your_package.deb ``` 解压后得到三个文件: 1. `debian-binary` - DEB 格式版本(通常是 "2.0") 2. `control.tar.xz` - 控制文件压缩 3. `data.tar.xz` - 主体文件压缩 手动解压控制文件: ```bash tar -xf control.tar.xz ``` 手动解压主体文件: ```bash tar -xf data.tar.xz ``` #### 验证解压结果 ```bash # 查看文件列表 find deb_extract -type f | less # 检查控制文件内容 cat deb_extract/DEBIAN/control ``` #### 常见问题解决 | 问题现象 | 解决方案 | |----------|----------| | `dpkg: error: cannot access archive` | 检查文件路径是否正确,使用绝对路径 | | 解压后缺少 DEBIAN 目录 | 确保执行了 `dpkg -e` 步骤 | | 解压文件权限错误 | 使用 `sudo` 执行命令 | > 💡 专业提示:解压后修改内容可用 `dpkg-deb -b` 重新打(参考[如何重新打 DEB](https://chat.gpt.bz))[^3] --- ### 相关问题 1. 如何查看 DEB 内容而不解压? 2. 解压后如何修改 DEB 的控制信息? 3. DEB 解压出现权限错误怎么办? 4. 如何从 DEB 中提取单个文件? 5. DEB RPM 解压方式有何区别?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值