linux下制作rpm包举列"/>
linux下制作rpm包举列
声明:本文参照链接 =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 -finstall: alltest -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
License: GPL%description
test rpm package
%prep
%setup
%build
make
%install
make install
%clean
%files
/usr/local/bin/test-hello
%pre
%post
%preun
%postun2.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 #软件网站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/下。
注:本文参照链接 =distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242 并且做了修改
更多推荐
linux下制作rpm包举列
发布评论