2012-02-15 32 views
19

मैं अपने geoserver के लिए एक आंतरिक आरपीएम पैकेज में कुछ मानचित्र फ़ाइलों को पैक करने का प्रयास करता हूं। निर्माण के हिस्से के लिए, यह सिर्फ फाइलों की प्रतिलिपि बनाने के लिए है। मुझे लगता है कि यह उम्मीद के रूप में काम करता है। लेकिन उन 20 जीबी छवियों को पैक करने में काफी समय लगता है।rpmbuild परिवर्तन संपीड़न प्रारूप

मैंने पढ़ा है कि आरपीएम आंतरिक रूप से डेटा को संपीड़ित करता है और यह कई अलग संपीड़न एल्गोरिदम के साथ किया जा सकता है। लेकिन, मेरे पास कोई सुराग नहीं है जो मेरे आरपीएम को संपीड़ित करता है और मैं इसे कैसे प्रभावित कर सकता हूं। मैं rpmbuild आदेश के लिए किसी भी विकल्प नहीं मिल सकता है, और न ही specfile के लिए और न ही सामान्य आरपीएम विकल्पों के लिए मैं 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 

कोई सुझाव?

+0

एकमात्र संपीड़न जिसे मैं जानता हूं वह है '/ usr/lib/rpm/brp-compress' मैन पेजों को संकुचित करेगा। –

+0

चूंकि आरपीएम प्रदान किए गए इनपुट डेटा से बहुत छोटे हैं, इसलिए मुझे पूरा यकीन है कि वहां मौजूद सभी डेटा संपीड़ित हैं। मैंने यह भी पता लगाया कि एक आरपीएम में निहित ज़िप अभिलेखागार (मेरे मामले में जार फाइलों में) को फिर से संपीड़ित किया जाएगा, ताकि आरपीएम से स्थापित जार इनपुट की तुलना में अलग हो (भले ही इसकी सामग्री समान हो) .. – mkraemerx

+0

ठीक है, मुझे पहले से ही "केवल उपयोगकर्ता-नियंत्रणीय संपीड़न" के साथ prefaced होना चाहिए था ...;) –

उत्तर

18

मैं आज कुछ आरपीएम सामान के साथ काम कर रहा था और गलती से जवाब के लिए ठोकर खाई!

अपने spec फ़ाइल में इन रखो:

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

कि अभी भी gzip का उपयोग, लेकिन यह -0, एक स्तर के लिए पारित जो सिर्फ दुकान चाहिए होगा। मेरे आरपीएम पर, यह 21 एमबी से 76 एमबी तक बढ़ गया, इसलिए मुझे पूरा यकीन है कि यह आपका जवाब है!

Btw, मैंने पाया कि macro फ़ाइलों में से एक में - तुम भी bzdio और 0 से 9 के लिए किसी भी संख्या bzip2 उपयोग करने के लिए कर सकते हैं। यह आरएचईएल 4 पर था; आरपीएम के बाद के संस्करण अधिक संपीड़न विकल्पों का समर्थन करने लगते हैं; लेकिन फिर, जो आप चाहते हैं उसके लिए, उपर्युक्त होना चाहिए जो आपको चाहिए।

+0

किसी को फेडोरा 20 या RHEL7 पर इसे सत्यापित करना चाहते हैं। – mxmader

+2

उन्हें 'xz' का समर्थन करना चाहिए - देखें [यहां] (http://fedoraproject.org/wiki/Features/XZRpmPayloads)। –

3

की जांच करें फ़ाइल/usr/lib/rpm अपने निर्माण मशीन में/मैक्रो, (फ़ाइल शायद रास्ते में अंतर), यह वहाँ संपीड़न तरीकों की कुल समर्थन सूची है: उदाहरण के लिए:

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 

तो जैसे ही हारून ने कहा, आप इसे सार्वभौमिक के लिए यहां सेट कर सकते हैं, या विशेष रूप से अपने प्रोजेक्ट के लिए सेट कर सकते हैं। कल्पना।

-2

मैंने आरएचईएल 6.6 पर "% परिभाषित _binary_payload w9.xzdio" का उपयोग किया है। जैसा कि मैं समझता हूं, आरएचईएल 6 में उपयोग किया जाने वाला डिफ़ॉल्ट संपीड़न उपकरण xz है, लेकिन डिफ़ॉल्ट संपीड़न स्तर 2 प्रतीत होता है, भले ही 7 xz का डिफ़ॉल्ट होना चाहिए। मैंने इसे 9 तक लात मार दिया और कुछ विशाल आरपीएम 653 एमबी से 43 9 एमबी तक चले गए। मैं डिफ़ॉल्ट संपीड़न पर कुल 1 गीगाबाइट को बचाने में सक्षम था।

+1

यह सितंबर 2014 से ऊपर मेरी टिप्पणी में उल्लेख किया गया था। –