compression - 압축 - rpmbuild spec file



rpmbuild는 압축 형식을 변경합니다. (2)

필자는 내부 rpm 패키지에 geoserver에 대한 맵 파일을 압축하려고합니다. 빌드 부분에서는 파일을 복사하는 것입니다. 나는 이것이 예상대로 작동한다고 생각한다. 그러나 20GB의 이미지를 압축하는 데는 오래 걸립니다.

내가 rpm을 내부적으로 데이터를 압축하고 여러 가지 압축 알고리즘으로 할 수있는 읽었습니다. 그러나, 나는 압축기가 선택한 rpm과 내가 이것을 어떻게 영향을 줄 수 있는지에 대한 단서가 없다. rpmbuild 명령이나 specfile, rpmbuild --showrc 나열 할 수있는 일반 rpm 옵션에 대한 옵션을 찾을 수 없습니다. rpmbuild --showrc

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

어떤 제안?


RHEL 6.6에서 "% define _binary_payload w9.xzdio"를 사용했습니다. 알다시피, RHEL 6에서 사용되는 기본 압축 도구는 xz이지만 7은 xz의 기본값이라고 생각되지만 기본 압축 수준은 2로 나타납니다. 나는 9까지 그것을 걷어 찼고 어떤 거대한 RPM은 653MB에서 439MB로 갔다. 기본 압축에 비해 총 1 기가 바이트를 저장할 수있었습니다.


나는 RPM 물건으로 오늘 일하고 있었고, 우연히 나중에 대답을 우연히 발견했다!

spec 파일에 다음 내용을 넣으십시오.

%define _source_payload w0.gzdio
%define _binary_payload w0.gzdio

그래도 gzip 사용할 것이지만 레벨을 위해 -0 을 전달하면 저장해야합니다. 내 RPM에서는 21MB에서 76MB로 자랐으므로 이것이 당신의 대답이라고 확신합니다!

BTW, macro 파일 중 하나에서 발견했습니다. bzip2 를 사용하기 위해 bzdio0 에서 9 까지의 숫자를 사용할 수도 있습니다. 이것은 RHEL4에있었습니다. 최신 버전의 RPM은 더 많은 압축 옵션을 지원합니다. 그러나 다시, 당신이 원하는 것을 위해, 위의 것은 당신이 필요로하는 것이어야합니다.