标签: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