rpmbuild 编译安装ceph 使用src.rpm包方法

如果你需要修改某些软件的源码,这个软件恰好在源里有rpm.src包,但手动编译安装源码过程的众多依赖会让人头皮发麻,这个时候跟随src.rpm上到源里的spec文件就可以完美的解决这个问题

要想使用rpmbuild需要yum install rpm-build

一、src.rpm包与rpm包

a.xxx.src.rpm 

这是包含a源码的rpm包,换句话说,就是还没有编译成二进制的原始代码。它只是以rpm包的方式存在。

a.xxx.rpm

这是已经经过编译包装完成的 rpm 文件。就是可以直接安装到你的系统中运行的目标文件。我们使用file命令来看一下这个包的类型。

那他们有什么关联呢?

 src.rpm包可以经过编译,生成rpm包。并且它们是一对一或者一对多的关系。换句话说,就是一个src.rpm包可以编译出一个rpm包,或者一个src.rpm包可以编译出多个rpm包。

比如git-2.9.5-3.fc25.src.rpm ,就编译出来下面6个包:

git-2.9.5-3.fc25.i686.rpm

git-core-2.9.5-3.fc25.i686.rpm

git-core-doc-2.9.5-3.fc25.i686.rpm

git-daemon-2.9.5-3.fc25.i686.rpm

git-debuginfo-2.9.5-3.fc25.i686.rpm

git-svn-2.9.5-3.fc25.i686.rpm

二、src.rpm源码包的使用

方法一:

rpm -ivh ceph-14.2.22-2.1.lns8.src.rpm
ls /root/rpmbuild/SOURCES
ls /root/rpmbuild/SPECS  


该方法会在root目录下生产rpmbuild目录,里面有SOURCE和SPEC两个目录,其中ceph源码就在SORCE/目录下。spec文件放在 SPEC下

重复使用方法一解压会覆盖上一次的rpmbuild目录。

方法二:

rpm2cpio kernel-3.10.0-957.1.3.el7.src.rpm | cpio -div


该方法是把方法一中的两个目录中内容放在了一起,并且统一放到了当前解压目录中。
 

三、使用rpmbuild编译安装源码

默认情况下 rpmbuild -ba ceph.spec即可自动编译

将rpmbuild提示所需的依赖安装完毕后即可

但是有时候会出现根目录下空间不足以满足编译需求,这时候就可以设置rpmbuild文件到/home下

注意 不要使用以下命令为 rpm 创建安装树:

rpmdev-setuptree

使用下面给出的命令在要构建 rpm 的位置创建 rpm 树:

我在/home目录下执行

mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

现在,将文件夹中的适当文件复制为 specs 和 tar.gz 并在 rpmbuild 目录中运行以下命令:

/root/rpmbuild/SPECS/ceph.spec  /root/rpmbuild/SOURCES/*文件复制到新建的目录下 

sudo rpmbuild --define "_topdir `pwd`" -v -ba SPECS/{*spec_file.specs*}

四、个人编译记录

编译安装ceph版本14.2.22  rpmbuild -ba ceph.spec 提示所需依赖 

CUnit-devel cmake expat-devel fuse-devel gcc-c++ gmock-devel gperf gperftools-devel gtest-devel java-devel junit keyutils-libs-devel leveldb-devel libaio-devel libbabeltrace-devel libcap-ng-devel libcurl-devel libnl3-devel liboath-devel librabbitmq-devel librdkafka-devel libudev-devel libxml2-devel lttng-ust-devel lz4-devel ncurses-devel nss-devel openldap-devel openssl-devel perl python3-Cython python3-devel python3-sphinx redhat-lsb-core selinux-policy-devel sharutils snappy-devel xfsprogs-devel xmlstarlet yasm
 

yum install -y 上面所有的依赖 --skip-broken 跳过不能安装的

某些依赖需要使能 vim  /etc/yum.repos.d/Loongnix-PowerTools.repo 将enable改为1

nss需要3.53.1版本 yum --showduplicates search nss-devel 

将对应的包复制下来 yum install即可

再执行rpmbuild -ba ceph.spec即可,/root空间不足  ,使用三中的方法 将rpmbuild改到/home下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白白白头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值