第一步:安装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
URL: http://soft.2xi.com/nginx/nginx-1.14.0.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires:gcc-c++,pcre,pcre-devel,zlib,zlib-devel,openssl,openssl-devel
Source: %{name}-%{version}.tar.gz
Summary: nginx is http server!
cd %{_builddir}/%{name}-%{version}
cd %{_builddir}/%{name}-%{version}
make DESTDIR=$RPM_BUILD_ROOT install
rm -rf %{_builddir}/%{name}-%{version}
\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