码迷,mamicode.com
首页 > 系统相关 > 详细

Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

时间:2019-11-21 14:00:52      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:version   master   执行文件   x86   files   vim   arch   cos   reboot   

首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root身份才能够制作。在新版本的CentOS中,可以在一般用户主目录下新建rpmbuild目录作为rpmbuild工具的工作目录。并且,在新版本中,发行商建议为了防止系统函数库或其他文件损坏,不要使用root身份去制作rpm软件包。

 

准备步骤:

一、uname -a 查看linux内核版本和参数;kernel-devel版本一定要和使用的内核一致

uname -a
Linux Zxl.LOCAL 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

二、下载Intel x722网卡Linux驱动  https://downloadcenter.intel.com/download/22283/Intel-Ethernet-Adapter-Complete-Driver-Pack?product=139350

wget https://downloadmirror.intel.com/24693/eng/iavf-3.7.61.20.tar.gz

 

三、必要工具的安装

其中包括make工具,若你的待安装包使用C语言写的,还需要安装gcc编译程序。最重要的是要安装rpmbuild工具。如果没有yum也可以从http://rpm.pbone.net/ 下载RPM包

命令如下:

yum install make
yum install gcc
yum install rpmbuild
yum install kernel-devel-2.6.32-504.16.2.el6.x86_64

 

四、创建制作rpm的工作目录

为了创建制作rpm的工作目录,你需要在一般用户身份的主目录下新建如下结构的目录:

rpmbuild目录,还有该目录下六个目录,包括:BUILD、BUILDROOT、RPMS、SOURCES、SPECS、SRPMS,命令如下:

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

各个目录的一般用途如下简介:

BUILD 编译rpm包的临时目录
BUILDROOT 编译后生成的软件临时安装目录
RPMS 最终生成的可安装rpm包的所在目录
SOURCES 所有源代码和补丁文件的存放目录
SPECS 存放SPEC文件的目录(重要)
SRPMS 软件最终的rpm源码格式存放路径


五、制作源代码文件tarball生成

这里主要利用《鸟哥的LINUX私房菜》中提供的源代码进行演示。将自己的源代码打包,其中可以包括可执行文件、脚本文件、用户使用手册、配置文件还有一些其他文件。然后将打包好的压缩包放在SOURCES目录下。

tar -zcv -f iavf-3.7.61.20.tar.gz iavf-3.7.61.20        #假设主目录下存在待打包的包括源代码的目录=>iavf-3.7.61.20
cp iavf-3.7.61.20.tar.gz ~/rpmbuild/SOURCES          #将打包好的源代码拷贝到SOURCES目录下

 

六、新建*.spec的设置文件

这个spec文件的设置是整个打包过程中最重要的一环,必须仔细设置。在SPECS目录下新建该目录,并且进入该文件进行设置,其中文件中各个宏名(例如%install)的具体含义请参考文献【4】

 cd ~/rpmbuild/SPECS
 vim iavf.spec
1 Name:           iavf
2 Version:        3.7.61.20
3 Release:        1%{?dist}
4 Summary:        Calculate sin and cos value
5 
6 License:        GPL
7 URL:            http://linux.vbird.org
8 Source0:        %{name}-%{version}.tar.gz9 
10 
11 %description
12 This package will let you input your name and calculate sin and cos value
13 
14 %prep
15 %setup -q
16 
17 
18 %build                                      #执行编译命令,编译后会在BUILD目录下存在暂时文件
19 make
20 
21 %install                     
22 rm -rf %{buildroot}
23 mkdir -p %{buildroot}/usr/local/bin         #将编译完成源代码试安装在~/rpmbuild/BUILDROOT目录下,其中的宏%{buildroot}=~/rpmbuild
24 make install RPM_INSTALL_ROOT=%{buildroot}
25 
26 %files                                      #最终在安装生成的rpm软件包时的安装目录
27 /usr/local/bin/iavf
28 29 30 %changelog 31 * Wed Jul 4 2018 VBird Tsai <vbird@mail.vbird.idv.tw> 0.1 32 - Build the program

 

七、编译成为RPM和SRPM

输入如下命令,在最后出现exit 0表示生成成功。

rpmbuild -ba iavf.spec

 

八、安装和测试

输入rom命令进行安装和测试。

rpm -ivh ~/rpmbuild/RPMS/x86_64/iavf-3.7.61.20-1.x86_64.rpm  #安装iavf
rpm -ql iavf                                                 #查找iavf的安装路径
rpm -qi iavf                                                 #查询iavf相关信息

 

九、注意事项

在/usr/local/bin目录中不能有同名目录或者文件存在

 

十、参考文献

【1】https://www.cnblogs.com/masterpanda/p/5700453.html

【2】https://access.redhat.com/sites/default/files/attachments/rpm_building_howto.pdf

【3】https://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

【4】https://docs.fedoraproject.org/quick-docs/en-US/creating-rpm-packages.html#con_rpm_spec_file_overview

 

十一、参考网卡驱动安装手册,如果编译驱动环境ok可以直接使用  rpmbuild -tb iavf-<x.x.x>.tar.gz 完成RPM包制作。

Building and Installation
=========================

To build a binary RPM package of this driver
--------------------------------------------
Note: RPM functionality has only been tested in Red Hat distributions.

1. Run the following command, where <x.x.x> is the version number for the
   driver tar file.

   # rpmbuild -tb iavf-<x.x.x>.tar.gz

   NOTE: For the build to work properly, the currently running kernel MUST
   match the version and configuration of the installed kernel sources. If
   you have just recompiled the kernel, reboot the system before building.

2. After building the RPM, the last few lines of the tool output contain the
   location of the RPM file that was built. Install the RPM with one of the
   following commands, where <RPM> is the location of the RPM file:

   # rpm -Uvh <RPM>
       or
   # dnf/yum localinstall <RPM>

NOTES:
- To compile the driver on some kernel/arch combinations, you may need to
install a package with the development version of libelf (e.g. libelf-dev,
libelf-devel, elfutilsl-libelf-devel).
- When compiling an out-of-tree driver, details will vary by distribution.
However, you will usually need a kernel-devel RPM or some RPM that provides the
kernel headers at a minimum. The RPM kernel-devel will usually fill in the link
at /lib/modules/uname -r/build.

 

Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

标签:version   master   执行文件   x86   files   vim   arch   cos   reboot   

原文地址:https://www.cnblogs.com/zhangxinglong/p/11904922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!