linux-rpm 打包之helloworld

关于linux下rpm打包的一个小例子,称为helloworld吧。

本文受 这个同志启发 : http://www.worldhello.net/2011/04/02/2405.html :此处致敬~

另外,本文会不断修改

 

一、rpm打包准备工作

  • rpm打包需要一个独立的打包目录

            目录结构:

            BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS

           创建该目录命令: mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS},其中,这些目录放在rpmbuild目录下。

  • 接下来需要对rpm进行配置

              echo ~/rpmbuild > ~/.rpmmacros,该命令将"~/rpmbuild"作为rpm打包目录

二、打包过程

         打包helloworld需要程序sources文件,spec文件

  • 编写helloworld源文件(hello.c)

             

#include <stdio.h>
int main()
{
    printf("Hello, World!\n");
    return 0;
}
  • 编写helloworld的spec文件(hello.spec)
BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root
# 不明白这样定义啥意思
Summary:    hello world rpm package
Name:       hello
Version:    0.1
Release:    1
Source:     hello-0.1.tar.gz
License:    GPL
Packager:   wangdonglei
Group:      Application

%description
This is a simple example for rpm package!

%prep
%setup -q

%build
gcc -o hello hello.c

%install

mkdir -p %{buildroot}/usr/local/bin
install -m 755 hello %{buildroot}/usr/local/bin/hello

%files
# 这里的路径是在buildroot虚拟根基础上的,即%{buildroot}/%{name}-%{version}-%{release}-root/usr/local/bin/hello
/usr/local/bin/hello  
  • 将文件放入相应位置并执行打包命令
# 将hello.c放入目录hello-0.1并打包该目录
tar zcvf hello-0.1.tar.gz hello-0.1
# 将hello-0.1.tar.gz 放入SOURCES下
mv hello-0.1.tar.gz /root/rpmbuild/SOURCES


             打包

rpm -ba rpmbuild/SPECS/hello.spec
  • 打包后文件

             执行打包命令后,这时会逐个运行hello.spec文件的内容,最终生成两个文件,一个包含源码的rpm包和一个二进制rpm包。

            rpmbuild/SRPMS/hello-0.1-1.src.rpm
            rpmbuild/RPMS/i386/hello-0.1-1.i386.rpm

三、总结

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值