编写spec文件,将tar.gz文件制作为rpm包

1.安装相关rpm-build包
2.编写相关的spec文件,以tengine-2.3.1为例子
tengine-2.3.1.spec文件内容如下:

%define name tengine
%define Version 2.3.1
Name: %{name}
Version: %{Version}
Release: 1%{?dist}
Summary:tengine rmp package production

Group: Applications/Archiving
License:  GPLv2
URL: https://tengine.taobao.org
Source0: https://tengine.taobao.org/download/%{name}-%{Version}.tar.gz

BuildRequires:  gcc
Requires: gcc gcc-c++ autoconf automake

%description
Custom tengine rpm package
%prep
rm -rf $RPM_BUILD_DIR/tengine-%{Version}
tar -xvf $RPM_SOURCE_DIR/tengine-%{Version}.tar.gz
%setup -q

%build
./configure --user=www-data --group=www-data --prefix=%{_sysconfdir}/nginx --sbin-path=%{_sbindir}/nginx --error-log-path=%{_localst
atedir}/log/nginx/error.log --conf-path=%{_sysconfdir}/nginx/nginx.conf --pid-path=/run/nginx.pid
make %{?_smp_mflags}

%install
make install DESTDIR=%{buildroot}

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%{_sbindir}/nginx
%config(noreplace) %{_sysconfdir}/nginx/*

%doc

%changelog

其中自定义宏变量必须使用define来声明,其中默认的宏变量有如下:

%{_sysconfdir} ==> /etc
%{_prefix} ==>  /usr
%{_localstatedir} ==> /var
%{_exec_prefix} ==>  %{_prefix}
%{_bindir} ==> %{_exec_prefix}/bin
%{_lib} ==> lib (lib64 on 64bit systems)
%{_libdir} ==> %{_exec_prefix}/%{_lib}
%{_libexecdir}==> %{_exec_prefix}/libexec
%{_sbindir} ==> %{_exec_prefix}/sbin
%{_sharedstatedir}  ==> /var/lib
%{_datadir}  ==> %{_prefix}/share
%{_includedir} ==> %{_prefix}/include
%{_oldincludedir} ==> /usr/include
%{_infodir} ==> /usr/share/info
%{_mandir} ==> /usr/share/man
%{_initddir} ==> %{_sysconfdir}/rc.d/init.d

%{_topdir}  %{getenv:HOME}/rpmbuild
%{_builddir}  %{_topdir}/BUILD
%{_rpmdir}  %{_topdir}/RPMS
%{_sourcedir}  %{_topdir}/SOURCES
%{_specdir}  %{_topdir}/SPECS
%{_srcrpmdir}  %{_topdir}/SRPMS
%{_buildrootdir}  %{_topdir}/BUILDROOT

详细参照https://docs.fedoraproject.org/en-US/packaging-guidelines/RPMMacros/#RPM_directory_macros

原文地址:https://blog.51cto.com/smly1989/2419004

时间: 2024-10-24 12:38:21

编写spec文件,将tar.gz文件制作为rpm包的相关文章

linux一次性解压多个.gz或者.tar.gz文件

对于解压多个.gz文件的,用此命令: for gz in *.gz; do gunzip $gz; done 对于解压多个.tar.gz文件的,用下面命令: for tar in *.tar.gz; do tar xvf $tar; done

Windows下python的tar.gz文件安装

windows下下载了django,PIL,web.py发现都是tar.gz格式的文件,网上查找也非常系统的方法,总结一下其他大神的方法,归纳于此. 首先下载tar.gz文件,比如web.py,下载后是一个tar.gz文件,用好压或其他解压软件解压,你会看到目录里有一个setup.py文件,这时,在地址栏输入%comspec%,这样会出现该目录下的提示符,再写Python.exe setup.py install,回车即可.(前提,环境变量已设置,否则无法使用)

[Linux] 解压tar.gz文件,解压部分文件

遇到数据库无法查找问题原因,只能找日志,查找日志的时候发现老的日志都被压缩了,只能尝试解压了   数据量比较大,只能在生产解压了,再进行查找 文件名为*.tar.gz,自己博客以前记录过解压方法: http://www.cnblogs.com/garinzhang/archive/2013/04/23/3037147.html 使用tar –zxvf *.tar.gz无法解压,明明好好的tar.gz文件能这样解压的,为什么不能解压?   后来想了想,是不是先要解压*.gz文件,使用gunzip

windows下解压tar.gz文件

最近做的一个项目,使用小工具代替人工提交到网站并获取结果. 在开发过程中碰到了一个问题. 网站返回的格式为tar.gz文件.第一个想到的方式是直接用第三方工具,使用的是7z.但用户那里使用的系统为win10,不以管理员身份运行会没有调用第三方工具的权限.遂决定用库解决该问题. 这里记录下windows下解压tar.gz的一些问题. 其实tar.gz是两次封装. 第一次是tar打包(这里不会压缩,文件反而会更大),第二次是gz文件的算法压缩. 解压GZ文件使用的是zlib库. 这里说一下zlib的

使用tar命令批量解压*.tar.gz文件

如何将/usr/local/src 下的所有*.tar.gz 文件批量解压到/usr/local/soft目录下 首先进入到/usr/local/soft ...#cd /usr/local/soft ...#ls /usr/local/usr/*.tar.gz | xargs -n1 tar xzvf

解压tar.gz文件报错gzip: stdin: not in gzip format解决方法

解压tar.gz文件报错gzip: stdin: not in gzip format解决方法 在解压tar.gz文件的时候报错 1 2 3 4 5 [[email protected] Downloads]$ tar -zxvf clion-141.351.4.tar.gz gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 原来原因是这个

Linux中下载、解压、安装.tar.gz文件

一.将解压包发送到linux服务器上: 1.在windos上下载好.tar.gz文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项] [下载地址] wget常用参数: -b:后台下载(默认下载到当前目录) -O:用自定义的名字保存下载文件.下载下来的文件默认会用“下载地址的最后一个“/”符号后面的字符串来命名”,而我们可以使用“-O 新文件名” 来重新命名. -limit-rate:限速下载,如wget --limit-rat

tar.gz文件压缩解压方法

文件的压缩及解压命令老是记不住,所以简单做了一下整理. 1.tar.gz文件解压 # tar cvfz backup.tar.gz /xxx/ -c, --create create a new archive -v, --verbose verbosely list files processed -f, --file [HOSTNAME:]F use archive file or device F (default /dev/rmt0) -z, --gzip, --ungzip filte

tar.gz文件命名及压缩解压方法

tar.gz文件命名 tar是把文件打成一个包,并不压缩; gz是用gzip把打成包的.tar文件压缩; 所以成了一个.tar.gz的文件 压缩 # tar cvfz backup.tar.gz /xxx/ -c, --create               create a new archive -v, --verbose               verbosely list files processed -f, --file [HOSTNAME:]F               u