2011-12-12 23 views
10

मैं एक साधारण उपकरण स्थापित करने के लिए एक साधारण डेबियन पैकेज बनाना चाहता हूं जो Qt4 libs पर निर्भर करता है।डेबियन पैकेज को निर्भरता कैसे स्थापित करें

नियंत्रण फ़ाइल में मैंने परिभाषित किया है कि यह Qt4 libs पर निर्भर करता है, हालांकि जब तक मैं पैकेज का परीक्षण कर रहा हूं, यह कहता है कि निर्भरता को पूरा नहीं किया जा सका।

प्रश्न:

मैं कैसे डेबियन ट्रिगर के रूप में अच्छी तरह से निर्भरता स्थापित करने के लिए उपयुक्त बना सकते हैं?

दस्तावेज नहीं मिल रहा है हालांकि मुझे पता है कि एपीटी-प्राप्त करता है।

+0

क्या आप अपने वितरण के साथ भेजे गए सामान्य Qt4 libs पर निर्भर करते हैं? क्या आप सही विवरण पोस्ट कर सकते हैं, यानी "निर्भर करता है" विनिर्देश और त्रुटियों के साथ एपीटी-कॉल कॉल? – thiton

+0

ऐसा लगता है कि आपके पैकेज सही हैं, लेकिन निर्भरता आपके द्वारा उपयोग किए जा रहे उपयुक्त दर्पण में मौजूद नहीं है। कृपया अपना पूरा त्रुटि संदेश पोस्ट करें। – Flimzy

+0

'dpkg' एक निम्न स्तर का टूल है और निर्भरता को खाते में नहीं लेता है। कार्लोस के पास gdebi का उपयोग करने का सही विचार है, क्योंकि यह निर्भरता में खींचता है जब आप इसे 'एपीटी' का उपयोग किए बिना चलाते हैं, जिसे आप थॉमस के रूप में भी इस्तेमाल कर सकते हैं। – NuclearPeon

उत्तर

1

एक तरीका आपके कंप्यूटर पर एक स्थानीय पैकेज भंडार बनाना होगा और इसे /etc/apt/sources.list में जोड़ना होगा। फिर आप अपने स्थानीय भंडार से पैकेज को एपीटी-प्राप्त के साथ इंस्टॉल कर सकते हैं और निर्भरता स्वचालित रूप से हल हो सकती है।

शायद ऐसा करने का एक आसान तरीका है, लेकिन मुझे नहीं पता कि यह क्या होगा।

12

यदि आप इसे dpkg के माध्यम से इंस्टॉल करते हैं तो यह काम नहीं करेगा क्योंकि dkpg नहीं जानता कि अतिरिक्त निर्भरता कहां मिलें। यदि आप अपना खुद का रेपो बनाते हैं तो आप इसे apt-get के माध्यम से कर सकते हैं, लेकिन यह पहली बार समय लेने वाला है (यह मुश्किल नहीं है, केवल कुछ नया "नया" जिसे सीखने के लिए कुछ समय चाहिए)।

दूसरी ओर, और समाधान आप शायद के लिए देख रहे gdebi है (यदि आप इसे स्थापित करने की आवश्यकता हो सकता है: apt-get install gdebi-core)। यह एक ऐसा उपकरण है जो पैकेज के लिए निर्भरता की जांच करता है और apt-get पर उन्हें लाने और इंस्टॉल करने के लिए कॉल करता है, और फिर अपने पैकेज को स्थापित करने के लिए dpkg पर कॉल करता है।

+0

हम्म फ़ाइल को cinst करने के लिए। मैं देखता हूं ... बात यह है। मुझे एक इंस्टॉलर बनाने की जरूरत है। उदाहरण के लिए। जब आप स्काइप डाउनलोड करते हैं तो यह एक .deb में आता है। क्या यह सभी libs को इसकी जरूरत है? क्या मुझे अपनी सभी libs को शामिल करना चाहिए? निर्भरताओं को लाने के लिए मुझे एपीटी पर भरोसा कैसे करना चाहिए? निर्भरताओं को पैक करने की समस्या यह है कि वे लक्ष्य प्रणाली के साथ गड़बड़ कर सकते हैं। क्या वितरण के लिए मान्य स्थानीय प्रतिनिधि का आपका सुझाव है। आइडिया: जब मैं .deb चलाता हूं तब मैं उस स्थानीय प्रतिनिधि को बना सकता हूं और उसके बाद पोस्ट इंस्टॉल पर एपीटी-गेट कॉल कर सकता हूं ... लेकिन यह एक वैध समाधान प्रतीत नहीं होता है ... –

+0

इंस्टॉल प्रक्रिया के दौरान, gdebi से इंस्टॉल करें apt repo और फिर 'gdebi your-package.deb' निष्पादित करें। यह उस मशीन में कॉन्फ़िगर किए गए एपीटी रिपॉजिटरीज़ से सभी निर्भरताओं को लाएगा (यदि वे रेपो में उपलब्ध हैं)। या कोई अन्य समस्या है जिसे मैं समझ नहीं पा रहा हूं? –

+0

क्या gdebi स्थापित पैकेज को संकुल के लिए निर्भरता के रूप में स्थापित करेगा जिसे मैं स्थापित करना चाहता हूं? – Trismegistos

5

यदि आप डेबियन पैकेज बना रहे हैं, तो आप debian/ निर्देशिका नियंत्रण फ़ाइलों में इसकी निर्भरता निर्दिष्ट करते हैं; मेरा मानना ​​है कि debian/control उस उद्देश्य के लिए Depends: निर्देश लेता है।

मुझे विवरण स्पष्ट रूप से नहीं पता है, लेकिन http://www.debian.org/doc/manuals/maint-guide/ पर निर्देश हैं; विशेष रूप से, http://www.debian.org/doc/manuals/maint-guide/dreq.en.html#control दिखने के लिए सही जगह प्रतीत होती है।

+0

हाय, मुझे लगता है कि 'निर्भर करता है: <कुछ निर्भरता>' केवल तभी जांच करेगा कि निर्भरता स्थापित है या नहीं और तदनुसार डेब पैकेज की स्थापना को रोक देगा। जिस समाधान का मैं खोज रहा हूं वह उन निर्भरताओं को स्वचालित रूप से डेब isntallation के हिस्से के रूप में स्थापित करना है। क्या आप इस प्रश्न पर एक नज़र डालेंगे: http://stackoverflow.com/questions/22907113/how-to-install-dependencies-while-creating-a-deb-installer – Sangram

17

आप एक स्थानीय अपार्ट भंडार बनाने से बचना चाहते हैं, तो आप कर सकते हैं:

dpkg -i mypackage.deb 
apt-get install --fix-missing 

आप एक स्थानीय भंडार बनाना चाहते हैं, तो आप इस के लिए reprepro उपयोग कर सकते हैं।

+4

# apt-get install -f -fix -missing – kellogs

+0

क्या मुझे फिर से 'sudo dpkg -i mypackage.deb' चलाया जाना चाहिए? –

0

प्रति @textshellthis answer में:

sudo apt install ./foo-1.2.3.deb 

तो बहुत सरल और क्लीनर:

उपयुक्त 1.1 (उपलब्ध Xenial में (16.04), खिंचाव) apt install भी साथ शुरू स्थानीय फ़ाइलों की अनुमति देता है।

release announcment

यह भी देखें, निर्भरता स्थापित हो जाएगा सिर्फ एक सामान्य apt install या apt-get install की तरह।

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