2011-04-10 11 views
26

से कल्पना फ़ाइल निकालने वहाँ सेrpm पैकेज

rpm --scripts -qp my-great-app-1.1.2.rpm 

किसी भी तरह से rpm पैकेज से कल्पना फ़ाइल निकालने के लिए (मैं केवल RPM फाइल)

नहीं (इस वाक्य रचना कल्पना फ़ाइल नहीं मिल है केवल आरपीएम से स्क्रिप्ट)

+0

क्या आप वाकई कल्पना फ़ाइल आरपीएम में संग्रहीत किया जाता है? एक .src.rpm में, निश्चित रूप से, लेकिन एक सामान्य आरपीएम के लिए मैं इसके बारे में निश्चित नहीं हूं। – Mat

+0

इसलिए यदि मेरे पास केवल आरपीएम फ़ाइल है जहां मैं spec फ़ाइल प्राप्त कर सकता हूं, तो कृपया – jon

+0

स्रोत RPM, या उस पैकेज के मुखपृष्ठ की तलाश करें। – Mat

उत्तर

6

कल्पना फ़ाइलें आमतौर पर आरपीएम में नहीं हैं। वे स्रोत आरपीएम में हैं।

+0

क्या मैं फिर से spec फ़ाइल के बिना आरपीएम का पुनर्निर्माण कर सकता हूं? – jon

+0

@ जेन: AFAIK, इसे "बनाना" संभव नहीं है। लेकिन, मुझे लगता है कि, आप बाइनरी आरपीएम में पैक की गई फ़ाइलों को देखकर बस एक इंस्टॉलेशन सेक्शन के साथ एक स्पेक फ़ाइल लिख सकते हैं। –

+0

"पैक की गई फाइलों को देखकर द्विआधारी आरपीएम में "कृपया समझाएं? – jon

12

कल्पना फ़ाइल बाइनरी RPMs में संग्रहीत नहीं है जब तक कि बंडल विशेष रूप से किसी कारण से यह शामिल है (और वहाँ वास्तव में ऐसा करने के लिए कोई कारण नहीं है)। जानकारी जिन्हें आप एक द्विआधारी आरपीएम से प्राप्त कर सकते हैं जानकारी है कि rpm -qi <package> रिटर्न, और कहा कि rpm -ql <package> सूचियों फ़ाइलें है। यदि आपको उससे अधिक की आवश्यकता है, तो आपको स्रोत पैकेज ढूंढना होगा। गूगल/विक्रेता की वेब साइट आप के लिए है कि प्रदान करने के लिए विफल रहता है, वहाँ किसी को भी सक्षम द्वारा पैक कुछ भी Packager क्षेत्र में उपलब्ध कराई गई जानकारी से संपर्क किया जाना चाहिए।

$ rpm --qf '%{Packager}\n' -q redhat-release 
Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> 
$ rpm --qf '%{Packager}\n' -q cfengine-community 
CFEngine AS ([email protected]) 

वहाँ आप एक वेबसाइट और एक ईमेल पता, क्रमशः, जहाँ आप एक युक्ति फ़ाइल या SRPM फाइल के बारे में पूछ सकते हैं: उदाहरण के लिए, यहाँ एक पैकेज है कि RHEL के साथ जहाजों और एक तीसरी पार्टी के विक्रेता से एक पैकेज है।

5

आप

yumdownloader --source < something.rpm 

तो इस्तेमाल कर सकते हैं:

rpm2cpio packagename | cpio -ivd 
+5

यह केवल उन फ़ाइलों को प्राप्त करता है जो इंस्टॉल किए जाएंगे, न कि spec फ़ाइल। –

+1

rpm -i pkg.src.rpm इसे rpmbuild निर्देशिका – qrtt1

15

स्थापित rpmrebuild और अपने आरपीएम फ़ाइल या अपने पहले ही स्थापित पैकेज की कल्पना फ़ाइल निकालने।

उदाहरण:

rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm 
rpmrebuild -s hercules.spec hercules 
+10

पर निकालेगा rpmrebuild के कोड को देखकर और फिर वास्तव में इसका परीक्षण, यह spec फ़ाइल को "निकालने" नहीं देता है; यह अधिकांश spec फ़ाइल (हेडर, लॉग, प्री/पोस्ट स्क्रिप्ट) को पुन: उत्पन्न करता है। लेकिन, पुनर्निर्माण के लिए गंभीर रूप से, यह वास्तव में% prep या% निर्माण खंड नहीं मिलता है; यह सिर्फ उन लोगों को उनके डिफ़ॉल्ट मानों पर छोड़ देता है (जो क्रमशः "साफ करें" और "इंस्टॉल करें" हैं)। मुझे संदेह है क्योंकि यह आरपीएम में संग्रहीत नहीं है। इसलिए, यह सबसे सामान्य मामलों में काम करना चाहिए, ऐसा लगता है कि यह सार्वभौमिक रूप से काम नहीं करेगा (जटिल संकलन चरणों वाले संकुल के लिए esp।)। :/ – dannysauer

+0

डैनिसॉयर: निश्चित रूप से, वास्तव में यह कोई निष्कर्षण नहीं है क्योंकि यह spec फ़ाइल का पुनर्निर्माण है ("निकालने" सवाल था)। यह कल्पना आरपीएम पैकेज का हिस्सा नहीं है और इसलिए पुनर्निर्माण "spec टेम्पलेट" प्राप्त करने का एकमात्र तरीका है। लेकिन यह कई मामलों में एक अच्छा प्रारंभिक बिंदु हो सकता है। अतीत में यह कभी-कभी बाइनरी आरपीएम पैकेज को ठीक करने में मेरी मदद करता था। – reichhart

1

rpmrebuild अपने दोस्त है।

rpmrebuild -e -p <rpm_file> 

चूंकि यह एक संपादक में spec फ़ाइल खोलता है, तो आप आरपीएम स्पेक में भी परिवर्तन कर सकते हैं।

+1

rpmrebuild पहले से ही 2 साल पहले उल्लेख किया गया था – reichhart

2

प्रति @ Rumplestiltskin का जवाब, मूल कल्पना फ़ाइलें स्रोत RPMs जो निकाला जा सकता है में पाए जाते हैं। स्रोत आरपीएमएस प्राप्त करने के लिए, निम्न चलाएं:

yum install yum-utils # Only required if yumdownloader is not installed 
yumdownloader --source <package name, like 'emacs-nox'> 

यह पैकेज को वर्तमान निर्देशिका में स्थापित करेगा। इसे निकालने के लिए:

rpm2cpio <package name>.src.rpm | cpio -civ '*.spec' 

.spec फ़ाइल आपकी वर्तमान निर्देशिका में होगी।

यदि आप किसी कारण से यम-यूटिल स्थापित नहीं कर सकते हैं, तो /etc/yum.repos.d/ में फ़ाइलों को देखें और स्रोत आरपीएम रिपॉजिटरीज़ का संदर्भ देने वाले अनुभागों को देखें। आप अपने ब्राउज़र में baseurl के मानों को टाइप कर सकते हैं और मैन्युअल रूप से स्रोत पैकेज की खोज कर सकते हैं। .spec निकालने के लिए अभी भी rpm2cpio की आवश्यकता है।

संबंधित मुद्दे