एक ही फाइल लिखने वाले दो पैकेज कैसे स्थापित करें


14

मेरे पास दो पैकेज हैं जो प्रत्येक / usr / bin / ffprobe बनाते हैं। उनमें से एक देब मल्टीमीडिया रिपॉजिटरी से ffmpeg है, जबकि दूसरा ffmbc 0.7-rc5 स्रोत से बनाया गया है। हाथ से लुढ़का हुआ एक व्यापार-महत्वपूर्ण है, और हम इसे केवल स्रोत से स्थापित करने के लिए उपयोग करते हैं जहां यह आवश्यक था। मैं केवल यह मान सकता हूँ कि यह ffmpeg फ़ाइल को बंद कर देगा, और कभी कोई बुरा प्रभाव नहीं पड़ा।

सिद्धांत रूप में, यह हमारे ffmbc पैकेज के लिए फ़ाइल को ffmpeg पैकेज से अधिलेखित करने के लिए स्वीकार्य होना चाहिए। वहाँ दोष यह है कि ffmpeg के लिए एक अद्यतन ffmbc बाइनरी को अधिलेखित कर देगा। क्या इसे समेटने का कोई आसान तरीका है?

जवाबों:


12

डेबियन आधारित सिस्टमों में DPKG (apt के नीचे) कमांड dpkg- divert का उपयोग करके विविधताएं हो सकती हैं

dpkg-divert डायवर्स की सूची को सेट और अपडेट करने के लिए उपयोग की जाने वाली उपयोगिता है।

फ़ाइल विविधताएँ dpkg (1) को उसके स्थान पर फ़ाइल स्थापित करने के लिए नहीं, बल्कि एक डायवर्ट किए गए स्थान के लिए बाध्य करने का एक तरीका है। ... सिस्टम प्रशासक इसका उपयोग कुछ पैकेज की कॉन्फ़िगरेशन फ़ाइल को ओवरराइड करने के लिए भी कर सकते हैं, या जब भी कुछ फ़ाइलें (जो 'कॉनफ़ाइल्स' के रूप में चिह्नित नहीं होती हैं) को dpkg द्वारा संरक्षित करने की आवश्यकता होती है, जब उन फ़ाइलों के पैकेज का एक नया संस्करण स्थापित किया जाता है ।

तो अपने मामले के लिए आप एक विविधता का सेटअप करने के लिए इस तरह की कमांड का उपयोग कर सकते हैं। (मैंने परीक्षण नहीं किया है, मैन पेज की जाँच करें और सत्यापित करें कि यह सही लगता है।)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

8

एक और उपाय जो मैंने पाया वह यह था कि मैंने ffmbc पैकेज का निर्माण कैसे किया। आम तौर पर स्थापित फ़ाइलों के अंतिम रास्तों को बदलने के उद्देश्य से एक वैकल्पिक उपसर्ग पास करना संभव है:

./configure --prefix=/usr/local

डेबियन पैकेज के लिए, यह $ {पैकेज} / डेबियन / रूल्स फ़ाइल में निम्नानुसार जाता है:

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

Ffmbc फ़ाइलों को लगाकर /usr/local, मैं ffmpeg फ़ाइलों को अंदर रख सकता हूं /usrऔर प्रत्येक पैकेज को स्वतंत्र रूप से अपडेट करने की अनुमति दे सकता हूं ।


3
संकुल को कुछ भी स्थापित नहीं करना चाहिए /usr/local- यह एक नीति का उल्लंघन है। /usr/localपैकेज प्रबंधन के तहत फाइलों को रखने और मैन्युअल रूप से स्थापित फ़ाइलों को अलग करने के लिए इसका पूरा बिंदु । निम्नलिखित एफएचएस
Onlyjob

-1

एक ही फ़ाइल (ओं) को प्रदान करने वाले संकुल को एक दूसरे के साथ संघर्ष करना चाहिए - यह नहीं है कि यह एक बग है (कृपया ऐसे मामलों की रिपोर्टिंग पर विचार करें)। यदि आप स्रोतों से सॉफ़्टवेयर बनाते हैं और उपयोग make install(या समान) स्थापित करते हैं, तो सुनिश्चित करें कि यह /usr/localपैकेज प्रबंधन के साथ संघर्ष से बचने के लिए जाता है ।

कृपया ध्यान दें कि deb-multimedia.org आधिकारिक संकुल के साथ टकराव पैदा करने के लिए अनौपचारिक रिपॉजिटरी कुख्यात है।

यदि आपको जिस सॉफ्टवेयर की आवश्यकता है, वह डेबियन के लिए पैक नहीं किया गया है, तो आप पैकेजिंग अनुरोध RFP जमा कर सकते हैं, लेकिन पहले मौजूदा अनुरोधों के लिए जाँच करें ।

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