linux下制作rpm包举列

本文介绍了如何在Linux环境中创建RPM软件包的完整过程,包括编写C语言代码、制作Makefile、创建spec文件以及利用rpmbuild工具生成RPM包。内容涵盖从源代码编辑、编译、安装到打包的每一步,并详细解释了spec文件的各项选项及其作用。通过这个教程,读者可以掌握redhat系Linux中RPM包的制作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:本文参照链接 https://blog.youkuaiyun.com/yongliang_w/article/details/54585516?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242 并且做了修改

1.说明:
rpm软件包主要用在Linux 的reddat系列的发行版中,因此rpm软件包只适用于redhat系.

2.编写测试代码:

1.创建一个目录
mkdir test
2.进入到上一步创建的目录下编辑文件

编辑 test.c
内容如下:
#include <stdio.h>
int main()
{
        printf("hello world!\n");
        return 0;
}

编辑Makefile
OBJ = test.o
BIN_FILE = test
BIN_PATH = /usr/local/bin
CC = gcc
CFLAGS = -O3 -g -Wall
all: $(BIN_FILE)

.c.o:
        $(CC) -c $< -o $@ $(CFLAGS)

test: $(OBJ)
        $(CC) -o $@ $^


clean:
        rm hello test test.o -f

install: all
        test -d $(RPM_BUILD_ROOT)$(BIN_PATH) || mkdir -p $(RPM_BUILD_ROOT)$(BIN_PATH)
        install -m 755 $(BIN_FILE) $(RPM_BUILD_ROOT)$(BIN_PATH)

uninstall:
        rm $(RPM_BUILD_ROOT)$(BIN_PATH)/$(BIN_FILE)

3.make ;make install 看是否有错误,是否安装到指定路径下,测试没问题则开始制作rpm软件包。

4.编写spec文件

1.编辑spec文件
Name:       test
Version:    1.0
Summary:    test
Release:    00%{?dist}
Group:      Applications/Text
Source:     %{name}-%{version}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root
URL:        www.test.com.cn
License:    GPL

%description
test rpm package
%prep
%setup
%build  
make
%install
make install
%clean
%files
/usr/local/bin/test-hello
%pre
%post
%preun
%postun

2.spce文件介绍
    spce文件可以理解为制作rpm软件包的规则,及按照什么样的规则生成怎样的软件包。
    spac文件的选项有很多,在这里只介绍常用的几个选项,另外spce文件也没有必要完全重头开始编辑,可以从其他软件包中获取,保留需要的选型,有哪些选项不懂可以单独查找资料,没有必要全部记住,当然这也不太现实。
    下面针对一些常用的参数做一个简单的说明:
    1.与软件包相关的设置
    Name:       test  #软件包的名称
    Version:    1.0   #软件包的版本
    Summary:    test  #软件摘要
    Release:    00%{?dist}   #软件包发布的号
    Group:      Applications/Text   #软件分类,属于那个类别
    Source:     %{name}-%{version}.tar.gz   #源码tar包名称
    BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root    #用于测试安装的目录 注意该路径可以用变量     RPM_BUILD_ROOT来引用,因此在上面的Makefile中我们用到了此变量,注意该变量只有在打包(rpmbuild)时才会有值。
    URL:        www.test.com.cn    #软件网站url 无关紧要,可以随便修改
    License:    GPL    #软件版权 无关紧要,可以随便修改

    2.建立软件包:
    %prep    #用于编译之前的准备工作,比如自动生成Makefile 打patch等工作,一般情况下用%setup
    %setup   #默认的编译前的准备工作(将源码解压到BUILD目录下) -q 参数 安静模式即没有输出
    %build   #用于生成应用程序 一般直接使用make 即rpmbuild会调到源码中的Makefile
    %install #应用程序的安装 如果在Makefile 中已经考虑到临时测试的安装目录(RPM_BUILD_ROOT)则可以直接 make install
 如果Makefile中没有考录RPM_BUILD_ROOT则在此处install时必须手动install,调Makefile的install是不会将文件打到包中的,推荐在Makefile中考虑到RPM_BUILD_ROOT变量,在install时直接install即可。
    %clean   #清理所有由rpmbuild创建的文件

    3.定义所有需要安装的文件
    %file   #定义所有需要安装的文件

    4.安装前后运行的脚本
    %pre    #安装前执行的脚本
    %post   #安装后执行的脚本
    %preun  #卸载前执行的脚本
    %postun #卸载后执行的脚本

注意:引用同文件中的变量的时候要用花括号“{}”。

5.制作rpm软件包

1.将test目录重命名为test-1.0   打成tar包        
    tar zcvf test-1.0.tar.gz test-1.0
2.将tar包拷贝到/root/rpmbuild/SOURCES/下,如果该路劲不存在先创建
    cp test-1.0.tar.gz  /root/rpmbuild/SOURCES/
3.将test.spec拷贝至/root/rpmbuild/SPECS/下,如果该路劲不存在先创建
    cp test.spec /root/rpmbuild/SPECS/
4.rpm安装包生成
    cd /root/rpmbuild/SPECS/ 
    rpmbuild -ba test.spec 或 rpmbuild -bb test.spec
    -ba 会生成source包(即包含源码),-bb只生成二进制包
5.生成的rpm包在/root/rpmbuild/RPMS/下,生成的带远吗的src.rpm包在/root/rpmbuild/SRPMS/下。

注:本文参照链接 https://blog.youkuaiyun.com/yongliang_w/article/details/54585516?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242 并且做了修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值