RPM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux 分发版(distribution)的常见的软件包管理器。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。

1 准备

首先请准备一个银河麒麟服务器操作系统,可直接从麒麟官网申请下载

一、首先安装rpm打包工具

1、yum install rpmdevtools

二、创建rpm工作空间

2、rpmdev-setuptree

可以看到运行了这个命令之后,在$HOME家目录下多了一个叫做rpmbuild的文件夹,里边内容如下:

$ tree rpmbuild
rpmbuild
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

 SPECS下是RPM包的配置文件,是RPM打包的“图纸”,这个文件会告诉rpmbuild命令如何去打包。“宏代码”这一列就可以在SPEC文件中用来代指所对应的目录,类似于编程语言中的宏或全局变量。当然~/rpmbuild这个文件夹也是有宏代码的,叫做%_topdir

 

打包的过程有点像是流水线,分好几个工序:
1. 首先,需要把源代码放到%_sourcedir中;
2. 然后,进行编译,编译的过程是在%_builddir中完成的,所以需要先把源代码复制到这个目录下边,一般情况下,源代码是压缩包格式,那么就解压过来即可;
3. 第三步,进行“安装”,这里有点类似于预先组装软件包,把软件包应该包含的内容(比如二进制文件、配置文件、man文档等)复制到%_buildrootdir中,并按照实际安装后的目录结构组装,比如二进制命令可能会放在/usr/bin下,那么就在%_buildrootdir下也按照同样的目录结构放置;
4. 然后,需要配置一些必要的工作,比如在实际安装前的准备啦,安装后的清理啦,以及在卸载前后要做的工作等等,这样也都是通过配置在SPEC文件中来告诉rpmbuild命令;
5. 还有一步可选操作,那就是检查软件是否正常运行;
5. 最后,生成的RPM包放置到%_rpmdir,源码包放置到%_srpmdir下。

2.创建SPEC文件

在Spec目录下新建spec文件,示例如下
vim test.spec
Name:       test		
Version:	1.0
Release:	1%{?dist}
Summary:	test

Group:		Applications/Editors
License:	GPT

%description
test

%prep
echo "extract tar package"

%build
echo "make"

%install
echo "make install"
pwd
mkdir -p $RPM_BUILD_ROOT/etc             ps:根据实际需要创建安装目录
cp -rf /root/test $RPM_BUILD_ROOT/etc/test   ps:将需要打包的文件复制到安装目录

%clean
echo "clean"

rm -rf $RPM_BUILD_ROOT

%pre
echo "start to install test demo"

%post

echo "finsh to install test demo"

%preun

echo "start to uninstall test demo"

%postun

echo "finsh to uninstall test demo"

#package file to rpm
%files
%defattr(-,root,root)    ps:定义安装文件的权限
/etc/test		ps:定义RPM包内,那些文件需要被安装,此文件必须在打包空间存在
%doc



%changelog

3.开始打包

rpmbulid -ba xxx.spec

即可在RPMS目录下生成RPM包

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐