> For the complete documentation index, see [llms.txt](https://huataihuang.gitbook.io/cloud-atlas-draft/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://huataihuang.gitbook.io/cloud-atlas-draft/os/linux/redhat/package/install_yum_build_dependencies_with_yum-builddep.md).

# 通过yum-builddep安装所有从SRPM编译RPM包所依赖软件包

> 在没有知晓这个工具之前，编译一个rpm包的时候，非常痛苦 -- 通过一次次尝试，探索出编译某个软件所依赖的`xxx-devel`软件包，并一一手工安装 -- 效率及其低下。然而，终于发现了这个工具...

在`yum-utils`软件包中提供了一个`yum-builddep`工具，这个工具可以安装所有从SRPM编译RPM包所需要的依赖软件包：

```
yum-builddep <package name>
```

> 注意：这个`<package name>`对应的源代码RPM(SRPM)必须位于yum仓库或者本地源代码SRPM包。(请参考[从源代码ROM（SRPM）编译RPM包](https://github.com/huataihuang/cloud-atlas-draft/tree/6f3204fffc11cf006abd394631e2598d98b415c3/os/linux/redhat/package/rebuild_rpm_from_srpm/README.md))
>
> 不过，我测试的方法，似乎时在

## 安装举例

> 以下以编译`libvirt`软件包为例：

* 首先下载libvirt源代码RPM

```
yumdownloader --source libvirt
```

> 也遇到非常奇怪的报错

```
Loaded plugins: fastestmirror
No source RPM found for libvirt-0.8.2-29.el5_9.1.i386
No source RPM found for libvirt-0.8.2-29.el5_9.1.x86_64
```

只好手工下载srpm `wget http://vault.centos.org/5.11/os/Source/libvirt-0.8.2-29.el5_9.1.src.rpm`，效果是一样的

* 执行分析安装以来的编译软件

```
sudo yum-builddep libvirt-0.8.2-29.el5_9.1.src.rpm
```

系统将自动找到对应的依赖编译包

## 在CentOS 5上尝试安装CentOS 6的SRPM（失败）

* CentOS 5不能使用CentOS 6的SRPM包进行分析安装对应的依赖软件包

由于CentOS 6的软件包的打包签名方法改成了SHA1，和原有的CentOS 5签名使用的MD5不兼容，会出现如下报错

```
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 signature: NOKEY, key ID c105b9de
...
um.Errors.MiscError: Could not open local rpm file: libvirt-0.10.2-62.el6.src.rpm
```

则采用忽略

```
yum --nogpgcheck localinstall libvirt-0.10.2-62.el6.src.rpm
```

依然报错

```
Examining libvirt-0.10.2-62.el6.src.rpm: libvirt-0.10.2-62.el6.src
Cannot add package libvirt-0.10.2-62.el6.src.rpm to transaction. Not a compatible architecture: src
Nothing to do
```

尝试采用rpm安装

```
$ sudo rpm -ivh libvirt-0.10.2-62.el6.src.rpm 
warning: libvirt-0.10.2-62.el6.src.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID c105b9de
   1:libvirt                warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
########################################### [100%]
error: unpacking of archive failed on file /usr/src/redhat/SOURCES/libvirt-0.10.2.tar.gz;5a14f4ca: cpio: MD5 sum mismatch
```

由于显示MD5 sum mismatch，所以改为忽略MD5报错强制安装，不过依然没有成功

```
rpm -ivh --nomd5 libvirt-0.10.2-62.el6.src.rpm
```

## 参考

* [Installing yum build dependencies with yum-builddep](https://possiblelossofprecision.net/?p=949)
