2011-01-28 24 views
6

मैं अपने आरपीएम कल्पना फ़ाइल में आरपीएम फ़ाइलCentOS 5.5 - आरपीएम कल्पना फ़ाइल

/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8 

में निम्नलिखित सांकेतिक लिंक बनाने की जरूरत में प्रतीकात्मक कड़ी निर्माण:

%files 
%defattr(-,root,root) 
/lib/libcrypto.so.0.9.8 
/lib/libssl.so.0.9.8 
<other files...> 

%install 
/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8 

/lib/libcrypto। so.0.9.8e और /lib/libssl.so.0.9.8e हैं मेरे पीसी पर मौजूद है, लेकिन जब मैं अपने आरपीएम स्थापित करने के लिए कोशिश कर रहा हूँ, मैं एक त्रुटि मिली:

libcrypto.so.0.9.8 is needed by my-test-rpm-1.el5.i686 
libssl.so.0.9.8 is needed by my-test-rpm-1.el5.i686 

क्या wron जी? आरपीएम स्थापना के हिस्से के रूप में प्रतीकात्मक लिंक बनाने के लिए मुझे क्या करना है?

धन्यवाद

उत्तर

2

के रूप में जोड़कर वैकल्पिक हल मैं विकलांग स्वचालित निर्भरता प्रसंस्करण:

AutoReqProv: no 

मेरी कल्पना फाइल करने के लिए। मैं अभी भी असली समाधान की तलाश में हूं।

1

आप कल्पना फ़ाइल% पद भाग में ldconfig चलाने की आवश्यकता:

%post 
umask 007 
/sbin/ldconfig > /dev/null 2>&1 


%postun 
umask 007 
/sbin/ldconfig > /dev/null 2>&1 

यह करना चाहिए।

+0

मैंने कोशिश की, समस्या अभी भी है ... – Dima

+0

लगता है जैसे /lib/libcrypto.so.0.9.8e और /lib/libssl.so.0.9.8e% फ़ाइलों की सूची में नहीं हैं। इसके अलावा 'ln' का आपका आविष्कार उन तरीकों से संदर्भित नहीं करता है जैसे कि '/ bin/ln -sf /lib/libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8'। – ldav1s

+0

/lib/libcrypto.so.0.9.8e और /lib/libssl.so.0.9.8e openssl RPM का हिस्सा हैं। – Dima

1

1) सिम्लिंक के लिए आपको पोस्ट चरण पर ldconfig को कॉल करने की आवश्यकता नहीं है।

2) जैसा कि पहले से ही ldav1s द्वारा उल्लिखित है: सुनिश्चित करें कि आपकी फ़ाइलें% फाइल अनुभाग में सूचीबद्ध हैं।

3) एक बार फिर: यह सुनिश्चित करें कि आपकी फ़ाइलों को सूचीबद्ध किया गया है हो - विशेष रूप से अगर आप का उपयोग

की तरह कुछ
%define _unpackaged_files_terminate_build 0 

RHEL rpmbuild एक त्रुटि फ़ाइलों buildroot में पाए जाते हैं, तो जो% में सूचीबद्ध नहीं हैं के साथ समाप्त हो जाता है फाइल खंड इस परिभाषा के साथ आप व्यवहार/त्रुटि को बंद कर सकते हैं लेकिन आपको वास्तव में पता होना चाहिए कि आप वास्तव में क्या कर रहे हैं। यदि आप इस लाइन का उपयोग करते हैं तो आपको इसे अपनी स्पेक फ़ाइल से हटा देना चाहिए।

4) आरपीएम पैकेज को उपयोगकर्ता रूट के रूप में न बनाएं। यदि आप rpm_build_root का उपयोग करना भूल जाते हैं तो आप अपने लाइव सिस्टम को नष्ट नहीं करेंगे। आपका उदाहरण ऐसा लगता है कि इसे 1 99 7 के रेड हैट 4.2 की एक स्पेक फ़ाइल से लिया गया था। चूंकि 1 99 7 में रेड हैट 5 (आरएचईएल 5 नहीं!) आरपीएम/आरपीएमबील्ड कमांड RPM_BUILD_ROOT परिभाषा जानता है। मुझे लगता है कि यह आपकी समस्या है: आप buildroot का उपयोग नहीं करते हैं, लेकिन सीधे रूट एफएस में स्थापित करते हैं और उपयोगकर्ता रूट के रूप में rpmbuild चलाते हैं।

अपने उदाहरण को देखते हुए यह करने के लिए बदला जाना चाहिए: buildroot RPM docs में वर्णन किया गया का उपयोग

%install 
/bin/ln -sf libcrypto.so.0.9.8e $RPM_BUILD_ROOT/lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e $RPM_BUILD_ROOT/lib/libssl.so.0.9.8 

0

यह करने के लिए सबसे अच्छा तरीका है सिमलिंक आप स्वत: द्वारा स्कैन किया जा रहा से बनाए गए निर्भर करता है रोकने के द्वारा है & जनरेटर की आवश्यकता है: पर

%filter_provides_in libcrypto.so.0.9.8e 
%filter_provides_in libssl.so.0.9.8e 
%filter_requires_in libcrypto.so.0.9.8e 
%filter_requires_in libssl.so.0.9.8e 
%filter_setup 

अधिक जानकारी निर्भर करता है/here छानने की आवश्यकता है।