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
BIN_FILE = test-hello
BIN_PATH = /usr/local/bin
all:
gcc test_hello.c -o $(BIN_FILE)
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)
unstall:
rm $(RPM_BUILD_ROOT)$(BIN_PATH)/$(BIN_FILE)
clean:
rm $(BIN_FILE) -rf
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/rpmbuid/SOURCE/下,如果该路劲不存在先创建
cp test-1.0.tar.gz /root/rpmbuid/SOURCE/
3.将test.spec拷贝至/root/rpmbuid/SPECS/下,如果该路劲不存在先创建
cp test.spec /root/rpmbuid/SPECS/
4.rpm安装包生成
cd /root/rpmbuid/SPECS/
rpmbuild -ba test.spec 或 rpmbuild -bb test.spec
-ba 会生成source包(即包含源码),-bb只生成二进制包
5.生成的rpm包在/root/rpmbuid/RPMS/下,生成的带远吗的src.rpm包在/root/rpmbuid/SRPMS/下。