【发布时间】:2012-03-06 17:27:27
【问题描述】:
我尝试在内部 rpm 包中为我们的地理服务器打包一些地图文件。对于构建部分,这只是复制文件。我认为这按预期工作。但是打包这 20GB 的图像需要很长时间。
我读到 rpm 会在内部压缩数据,这可以通过几种不同的压缩算法来完成。但是,我不知道我的 rpm 选择哪种压缩方式以及如何影响它。我找不到 rpmbuild 命令的任何选项,也找不到 specfile 的选项,也找不到我可以用rpmbuild --showrc 列出的常规 rpm 选项。
我对 rpmbuild 和规范文件不是很有经验,但是在阅读了 rpm.org 上的大量手册页和教程后,我没有更多的想法。
我使用的规范文件如下所示:
%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
有什么建议吗?
【问题讨论】:
-
我知道的唯一压缩是
/usr/lib/rpm/brp-compress将压缩手册页。 -
由于 RPM 比提供的输入数据小得多,我很确定那里的所有数据都被压缩了。我什至发现 RPM 中包含的 zip 档案(在我的情况下为 jar 文件)将被再次压缩,因此从 RPM 安装的 jar 与输入相比是不同的(即使它的内容相同)..
-
好的,我应该以“唯一的用户可控压缩”作为开头... ;)
标签: compression rpm rpmbuild rpm-spec