自定义rpm文件

第一步:安装rpmbuild

 yum install rpm-build -y

第二步:创建文件夹

mkdir /root/rpmbuild

cd mkdir /root/rpmbuild

mkdir -p BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

  • 注:
  • BUILD 编译rpm包的临时目录%_builddir
    BUILDROOT 编译后生成的软件临时安装目录%_buildrootdir
    RPMS 最终生成的可安装rpm包的所在目录%_rpmdir
    SOURCES 所有源代码和补丁文件的存放目录%_sourcedir
    SPECS 存放SPEC文件的目录(重要)%_specdir
    SRPMS 软件最终的rpm源码格式存放路径(暂时忽略掉,别挂在心上)%_srcrpmdir         

=================================================================================

第三步:开始编辑配置。

Name: myapp #软件包的名字

Version: 0.3.1  #软件包的版本

Release: %(echo `data +%Y%m%d%H%M`) #发布序列号,你可以自己定义,我这里是以时间为序号

Summary: my app #软件包的摘要信息

Group: Development #软件包的安装分类,详见/usr/share/doc/rpm-*/GROUPS文件

License: GPL v2 #软件的授权方式

URL: http://www.xx.com #源码包、公司、博客等地址

BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)#make install时使用的虚拟根目录,我这里使用mktemp创建了一个临时目录,-u表示结束后删除

%description

#关于软件包的详细说明

%prep

#主要是对源代码包的解压和打补丁,而解压常用的指令就是%setup -q

echo "prep"

%build

#该阶段执行常见的configure和make操作,常见指令如:

#%configure

#make %{?_smp_flags}

%install

#该阶段执行make install操作,它会在%_buildrootdir目录里建好目录结构,然后将需要打包到rpm软件包里的文件从%_builddir里拷贝到%_buildrootdir里对应的目录里。最常见到的指令就是:

#rm -rf %{buildroot}

%clean

#编译完成后一些清理工作,主要包括对%{buildroot}目录的清空(当然这不是必须的),通常执行诸如make clean之类的命令。 

#rm -rf %{buildroot}

%files

#主要用来说明会将%{buildroot}目录下的哪些文件和目录最终打包到rpm包里,需要打包的文件在此列出。

#另外,defattr(文件权限,用户名,组名,目录权限)用来指定权限,如: %defattr(-,root,root,-),这条指令设置缺省权限。

%pre

#安装前的准备工作

%post

#安装后的工作,如设置服务的开机启动,定时任务的设定,启动服务等等

%preun

#卸载前的工作,例如停止服务,关闭服务的开机启动,删除定时任务等

vim /root/rpmbuild/SPECS/nginx.spec

Name:nginx

Version:1.14.0

Release:el7

License: GPL

URL: http://soft.2xi.com/nginx/nginx-1.14.0.tar.gz

Group: applications/Server

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

BuildRequires:gcc-c++,pcre,pcre-devel,zlib,zlib-devel,openssl,openssl-devel

Packager: [email protected]

Autoreq: no

Source: %{name}-%{version}.tar.gz

prefix: /usr/local/nginx

Summary: nginx is http server!

%description

nginx is http server

%prep

%setup

%build

cd $OLDPWD/../

cd %{_builddir}/%{name}-%{version}

./configure --prefix=/usr/local/nginx --user=daemon --group=daemon --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --without-http_memcached_module --with-pcre --with-http_gzip_static_module --with-http_v2_module

make

%install

cd $OLDPWD/../

cd %{_builddir}/%{name}-%{version}

make DESTDIR=$RPM_BUILD_ROOT install

%clean

rm -rf $RPM_BUILD_ROOT

rm -rf %{_builddir}/%{name}-%{version}

%files

/usr/local/nginx

%pre

%post

\cp -arp /usr/local/nginx/html/nginx.conf /usr/local/nginx/conf/

mv /usr/local/nginx/html/vhosts /usr/local/nginx/conf/

mv /usr/local/nginx/html/nginx.service /usr/lib/systemd/system/nginx.service

chmod +x /usr/lib/systemd/system/nginx.service

systemctl enable nginx.service

systemctl start nginx.service

%preun

%postun

pkill nginx

rm -rf /usr/local/nginx

rm -f /usr/lib/systemd/system/nginx.service

%changelog

猜你喜欢

转载自blog.csdn.net/zhangkeloveyou/article/details/81144229