1、rpmbuild 安装
1 2 3 4 5 6 7
| yum install make yum install gcc yum install rpm-build yum install rpmdevtools rpmdev-setuptree
rpmbuild --showrc | grep topdir
|
2、创建用户用于打包
1 2 3 4 5 6 7 8 9 10 11 12 13
| useradd rpmuser su - rpmuser
vi ~/.rpmmacros %_topdir /home/rpmuser/rpmbuild
mkdir ~/rpmbuild
cd ~/rpmbuild mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
|
3、整理源码
rpmbuild安装完成以后我门就需要将我们的源码放到 SOURCE 文件夹下。我门的源码可能是一个tar.gz 的包、也可能是几个文件。tar.gz源码包的名字格式应该为 helloword-1.0.0.tar.gz (其实就是名字-版本号.tar.gz)
4、编写Spec
在SPECS文件夹下新建 xxx.spec 打包脚本,将源码编译打包成rpm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| vi xxx.spec
Name: hellorpm Version: 1.0.0 Release: 1%{?dist} Summary: helloword
License: GPL URL: Packager: abel Source0: %{name}-%{version}.tar.gz
BuildRoot: %_topdir/BUILDROOT
BuildRequires: gcc,make Requires: python-apscheduler >= 2.1.2-1.el7,python-daemon >= 1.6-1.el7 %description %prep #打包开始 %setup -q
%build ./configure \\ %{?_smp_mflags}
%install rm -rf %{buildroot} cp -rp %_topdir/BUILD/%{name}-%{version}/* $RPM_BUILD_ROOT
%pre
%post
%preun
%postun
%clean rm -rf %{buildroot}
%files %defattr (-,root,root,-) /etc/hello/word/helloword.c
%changelog
|
5、打包
1 2 3 4 5 6 7 8
| rpmbuild -ba 既生成src.rpm又生成二进制rpm -bs 只生成src的rpm -bb 只生二进制的rpm -bp 执行到pre -bc 执行到 build段 -bi 执行install段 -bl 检测有文件没包含
|
6、bugfix
- rpmbuild: Empty %files file debugsourcefiles.list
解决方法:在gcc的时候添加-g选项生成debuginfo信息
https://bugzilla.redhat.com/show_bug.cgi?id=1583329
7、demo测试
创建项目
1 2 3 4 5 6 7
| #include <stdio.h>
int main () { printf("Test Main\\n"); return 0; }
|
1 2 3 4 5 6
| OBJS = main.c main: ${OBJS} gcc -g -o main ${OBJS} install: install -m 755 main $(RPM_INSTALL_ROOT)/usr/local/bin/main
|
创建文件夹
1 2 3
| mkdir ~/rpmbuild cd ~/rpmbuild mkdir -p BUILD SPECS RPMS SOURCES SRPMS
|
创建main-0.1.spec
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Summary: test rpm Name: main Version: 0.1 Release: 1 License: GPL Group: NONE Source: main-0.1.tar.gz Url: <http://www.bencorn.com> Packager: Lin BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description exercise: how to use rpm and rpmbuild
%prep %setup -q
%build make
%install rm -rf %{buildroot} mkdir -p %{buildroot}/usr/local/bin make install RPM_INSTALL_ROOT=%{buildroot}
%files /usr/local/bin/main
%changelog * Sun Aug 1 23:13:44 EDT 2021 bencorn <1143005768@qq.com> 0.1 - build the program
|
执行命令
1
| rpmbuild -ba main-0.1.spec
|
结果
