我尝试将geoserver的一些地图文件打包到一个内部rpm包中。对于构建部分,这只是复制文件。我认为这和预期的一样。但是打包这20 to的图像需要非常长的时间。
我读到过rpm对数据进行内部压缩,这可以通过几种不同的压缩算法来实现。但是,我不知道我的rpm选择哪种压缩,以及我如何影响这一点。我找不到用于rpmbuild命令的任何选项,也找不到specfile的任何选项,也找不到我可以用rpmbuild --showrc
列出的常规rpm选项
我对rpmbuild和specfiles不是很有经验,但在阅读了大量关于rpm.org的手册页和教程后,我没有更多的想法。
我使用的specfile如下所示:
%define debug_package %{nil}
%global mapsversion 0.9
# If this is a snapshot, put the date here and uncomment
#global snapshot_version 20100519
# This is the version in a form acceptable
# an an RPM version string (i.e. no '-')
# Hier werden die Makros definiert.
%global rpmversion %(echo %{mapsversion} | tr '-' '_')
%global pkgversion %{mapsversion}%{?snapshot_version:-SNAPSHOT}
%global pkgname %{name}
Name: geoserver-maps-part2
Version: %{rpmversion}
Release: 1%{?dist}
Summary: Swiss Maps for GeoServer
Group: Application/ourApp
License: Copyright (c) 2011
URL: http://doc.polyalert.local
#Source0: %{name}-%{version}.tgz
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: geoserver
%define mapshome /opt/geoserver/swisstopo
%define mapssource /home/user/polyalert_env/geoserver/swisstopo
%description
Swiss Maps for GeoServer
%prep
%build
/bin/true
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{mapshome}
cp -a %{mapssource}/pk100 $RPM_BUILD_ROOT%{mapshome}
%clean
rm -rf $RPM_BUILD_ROOT
%pre
%post
%preun
%files
%{mapshome}/pk100
%changelog
* Tue Feb 14 2012 user - 1.0
- First version of specfile
我这样调用rpmbuild:
rpmbuild -bb --define "_topdir $TOP_DIR" --define "_gpg_name ourkey" --define "_signature gpg" --sign $TOP_DIR/SPECS/$SPEC_FILE_NAME $RPM_BUILD_PARAMETER
有什么建议吗?
发布于 2012-04-21 09:28:10
我今天正在处理一些RPM的东西,偶然发现了答案!
将以下内容放入spec
文件中:
%define _source_payload w0.gzdio
%define _binary_payload w0.gzdio
它将仍然使用gzip
,但传递一个级别的-0
,它应该只是存储。在我的RPM上,它使它从21MB增长到76MB,所以我很确定这就是你的答案!
顺便说一句,我发现在其中一个macro
文件中-你也可以使用bzdio
和从0
到9
的任何数字来使用bzip2
。这是在RHEL4上实现的;更高版本的RPM似乎支持更多的压缩选项;但同样,对于您想要的,以上内容应该是您所需要的。
发布于 2014-09-16 15:45:12
请检查构建机器中的/usr/lib/rpm/macros文件(该文件的路径可能不同),它包含压缩方法的总支持列表:例如:
329 # Compression type and level for source/binary package payloads.
330 # "w9.gzdio" gzip level 9 (default).
331 # "w9.bzdio" bzip2 level 9.
332 # "w7.xzdio" xz level 7, xz's default.
333 # "w7.lzdio" lzma-alone level 7, lzma's default
334 #
335 #%_source_payload w9.gzdio
336 #%_binary_payload w9.gzdio
因此,正如Aaron所说,您可以在此处将其设置为通用的,或者专门为您的项目设置的。规范。
发布于 2015-11-06 01:13:19
我在RHEL6.6上使用了"%define _binary_payload w9.xzdio“。据我所知,RHEL 6中使用的默认压缩工具是xz,但默认压缩级别似乎是2,尽管7应该是xz的默认压缩级别。我把它踢到9,一些巨大的RPM从653MB增加到439MB。与默认压缩相比,我总共节省了1千兆字节。
https://stackoverflow.com/questions/9292243
复制相似问题