उबंटू स्रोत पैकेज निर्भरता पेड़


10

मेरे पास कुछ पैकेज हैं। चलो उन्हें बुलाओ A.deb, B.debऔर C.deb। प्रत्येक पैकेज में एक समान स्रोत पैकेज A.dscऔर A.tar.gz, B.dscऔर B.tar.gz, C.dscऔर होता है C.tar.gz। पैकेज एक दूसरे पर निर्भर करते हैं: C.debपर निर्भर करता है B.debऔर B.debपर निर्भर करता हैA.deb

यदि मैं संशोधित करता हूं A.deb, तो मुझे पुनर्निर्माण करने की आवश्यकता है B.debया यह काम नहीं करेगा। उसी के लिए चला जाता है B.debऔर C.deb। क्या इस प्रक्रिया को स्वचालित करने का कोई तरीका है? वहाँ शायद एक उपकरण या स्क्रिप्ट है कि यह मेरे लिए क्या करेंगे? यदि नहीं, तो मैं इसे स्वयं कैसे कर सकता हूं?

इसके अलावा, मेरे पैकेज नहीं हैं।


2
आप कह रहे हैं "C.deb B.deb पर निर्भर करता है और B.deb, A.deb पर निर्भर करता है", इसलिए मुझे लगता है कि आप बाइनरी पैकेज की बात कर रहे हैं? क्या आप A में बाहरी लाइब्रेरी के खिलाफ B के संकलन की बात कर रहे हैं? यदि ऐसा है तो बस पैकेज को फिर से बनाने की आवश्यकता नहीं होनी चाहिए , यह देखते हुए कि ए के डेवलपर (एस) ने इस तरह के पुस्तकालय के इंटरफ़ेस को नहीं बदला है (इसलिए यह ए के मैन्टेनर (एस) पर निर्भर है, बी के मैन्टेनर के लिए नहीं) (यदि आप उन सभी के डेवलपर हैं, तो बस अपने इंटरफ़ेस से ए अज्ञेय के कार्यान्वयन को यथासंभव अधिक से अधिक रखें, ताकि यह सुनिश्चित हो सके कि इसकी अधिकतम क्षमता)।
कोस

1
मैं लिनक्स पर इस स्तर पर सामान नहीं करता हूं, लेकिन मुझे लगता है कि इसके makeलिए आविष्कार किया गया था। एक मेकफाइल में ऐसे नियम शामिल हैं जो यह निर्धारित करते हैं कि क्या बदल दिया गया है जिसके आधार पर पुन: निर्माण / पुनर्निर्माण की आवश्यकता है।
जो

1
@xiaodongjie - आप एक प्रिय व्यक्ति हैं जो एक प्रिय प्रश्न है - तो क्या आप पहले से ही बैश और बैश-स्क्रिप्टिंग जानते हैं? --- - इस तरह आप स्विच-केस लूप के साथ एक छोटी स्क्रिप्ट लिख सकते हैं और फिर एक लिफ्ट में अलग-अलग मामलों में पैकेज के बारे में क्या कर सकते हैं। मेरी स्क्रिप्ट नहीं है। तुम ऐसे दिमागदार हो जैसे हम दिमागदार हो - हंसो। - यह स्क्रिप्ट निश्चित रूप से एक डेमॉन की तरह स्थापित की जा सकती है (स्वचालित रूप से काम करने के लिए)।
dschinn1001

1
एक @ जो ने कहा: उपयोग करें make, और जैसा कि आपने खुद कहा, @xiaodongjie, मेक टारगेट परिणामी पैकेज होंगे, पैकेज-टू-पैकेज निर्भरता घोषित होने के साथ, और प्रत्येक लक्ष्य के लिए संबंधित कार्रवाई वह कमांड होगी जो पैकेज बनाती है । स्थापित करें make-docऔर info makeइसके बारे में सभी पढ़ने के लिए टाइप करें ।
राल्फ रोन्क्क्विस्ट

1
निर्माण प्रक्रिया के लिए एक उपनाम बनाने के बारे में क्या?
विल्हेम इरास्मस

जवाबों:


3

आप निर्माण निर्भरता के साथ मेकफाइल की घोषणा करेंगे, उदाहरण के लिए निम्नानुसार:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

ध्यान दें कि कमांड इंडेंटेशन एक TAB है।

इसके साथ Makefile, आप कमांड का उपयोग करेंगे

make

और यह काम करेगा कि कौन से संकुल का निर्माण करना है और किस क्रम में, और फिर उन्हें बनाना है, यह सब फाइलों के टाइमस्टैम्प पर निर्भर करता है। उदाहरण के लिए, यदि B.tar.gzबाद में टाइमस्टैम्प की तुलना में B.deb(यानी पैकेज Bमें नया स्रोत है), तो यह पहले B.debपुनर्निर्माण का कारण होगा, और जैसा कि बाद में इस पर मुहर लगाई C.debजाएगी, यह C.debफिर से बनने का कारण होगा ।


1

ठीक है, हो सकता है कि मैं आपकी बात को पूरी तरह याद कर रहा हूँ, लेकिन ऐसा लगता है कि आप पैकेज ए को फिर से जमा कर रहे हैं और पैकेज बी और सी को फिर से जोड़ना चाहते हैं, जो कि हम बस हमारे लिए एक मेकफाइल होगा ।


क्या आप अधिक विस्तार से बता सकते हैं?
xiaodongjie

या कोई भी उदाहरण।
xiaodongjie
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.