gdebi बनाम dpkg: gdebi स्वचालित रूप से लापता निर्भरता कैसे प्राप्त करता है? क्या मैं .deb संकुल के अन्य सभी संस्थापनों के लिए gdebi का उपयोग कर सकता हूँ?


15

हाल ही में मैं अपने Ubuntu को लुबंटू में 15.04 को फिर से स्थापित करने के लिए हुआ। इसलिए मैं Skype स्थापना के लिए खोज रहा था और यह अच्छा ट्यूटोरियल मिला ।

यह वास्तव में अच्छा था। यह से स्काइप देब की आधिकारिक पैकेज डाउनलोड किया यहाँ

चूँकि मैंने gdebiपहले से स्थापित नहीं किया है, इसलिए मैंने प्रयोग कियाsudo su -c apt-get install gdebi

फिर skype-ubuntu-precise_4.3.0.37-1_i386.debgdebi कमांड का उपयोग करके इंस्टॉल किया गयाsudo su -c gdebi skype-ubuntu*4*.deb

वाह, gdebi ने मेरे लिए सब कुछ किया, पारंपरिक Apt PPA मैनुअल लिंक जोड़ के बिना एक परेशानी मुक्त चीज़ क्या है जो शायद मेरे सिस्टम अपडेट / सॉफ़्टवेयर इंस्टॉलेशन को भी तोड़ देगी।

लेकिन अगर मैं इसका उपयोग करके स्थापित करने का प्रयास करता हूं dpkg -i

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype

इतना निर्भरता के मुद्दे। ओह, मैंने अभी-अभी गुड्डी और विकिपीडिया को गुगली दी है

जीडीबी एक एपीटी उपकरण है जिसका उपयोग कमांड-लाइन और जीयूआई पर किया जा सकता है। [४४] GDebi dpkg कमांड की तरह कमांड लाइन के माध्यम से एक स्थानीय .deb फ़ाइल स्थापित कर सकता है, लेकिन निर्भरता को हल करने के लिए रिपॉजिटरी तक पहुंच के साथ।

मेरा आश्चर्य है

(1) gdebi कैसे स्थापित करता है। निर्भरता Apt PPA लिंक का उपयोग किए बिना निर्भरता के साथ .deb संकुल को विन्यास फाइल में मैन्युअल रूप से जोड़ा जाता है?

(२) क्या मैं एक ही gdebi कमांड का उपयोग कर सकता हूँ ( sudo su -c gdebi my.deb) Apt PPA को जोड़े बिना अन्य सभी .deb पैकेजों को स्थापित करने के लिए या क्या मुझे इस तरह का प्रारूप बदलना होगा: sudo su -c my*n*.debजहाँ n सॉफ्टवेयर का संस्करण है, आदि?

कृपया आम शब्दों में समझाएं ताकि मुझे मिल सके।

जवाबों:


10

वास्तव gdebiमें dpkgजोड़ा कार्यक्षमता के साथ एक फ्रंट-एंड है कि यह रिपॉजिटरी में निर्भरता पैकेज के लिए जांच कर सकता है और उन्हें एक-ऑपरेशन में स्थापित कर सकता है, जबकि dpkg -iमैन्युअल रूप से दो ऑपरेशन की आवश्यकता होती है (बाद में apt-get -f install)।

प्रश्न 1:

1) कैसे gdebi ऐसा करते हैं? Apt PPA लिंक का उपयोग किए बिना निर्भरता के साथ .deb पैकेज स्थापित करें जो कॉन्फ़िगरेशन फ़ाइलों में मैन्युअल रूप से जोड़े गए हैं?

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

उदाहरण के लिए, आप एक .deb फ़ाइल के मेटाडेटा का उपयोग करके जांच कर सकते हैं dpkg --info package-name.deb

और फिर यह निर्भरता मानचित्र के निर्माण के लिए इन सूचनाओं का उपयोग करता है और स्थानीय रूप से उपलब्ध .deb फ़ाइलों को चिह्नित करता है और पहले से डाउनलोड की गई और .debइंटरनेट से अन्य फ़ाइलों को डाउनलोड करता है।

ध्यान दें कि, आवश्यक पैकेजों को कम से कम एक रिपॉजिटरी में उपलब्ध होना चाहिए (उचित संस्करण के साथ), जो सिस्टम में कॉन्फ़िगर किए गए हैं।

फिर यह एक सामान्य एपे इंस्टॉलेशन की तरह आगे बढ़ता है। अंतर यह है कि यह मुख्य .deb फ़ाइल को फिर से डाउनलोड नहीं करता है

प्रश्न 2:

(२) क्या मैं एक ही gdebi कमांड का उपयोग कर सकता हूँ ( sudo su -c gdebi my.deb) PPA को जोड़े बिना अन्य सभी डिबेट पैकेज को स्थापित करने के लिए? या क्या मुझे प्रारूप बदलना है sudo su -c myn.debजहाँ n सॉफ्टवेयर का संस्करण है आदि?

पीपीए एक कारण से मौजूद हैं। मुख्य कारण वे संकुल के नवीनतम संस्करण प्रदान करते हैं। और ये उच्च संस्करण पैकेज आमतौर पर उप-पैकेजों के उच्च संस्करणों पर भी निर्भर करता है, जो कि सामान्य रूप से पीपीए से भी परोसा जाता है, मानक उबंटू भंडार से नहीं।

उदाहरण परिदृश्य:

मान लीजिए, मां- पैकेज नामक पैकेज2.0 में मानक उबंटू रिपॉजिटरी का उच्चतम संस्करण है, और यह मदर-पैकेज संस्करण 2 के चाइल्ड-पैकेज नामक पैकेज पर निर्भर करता है । यह भी मान लीजिए, कुछ पीपीए संस्करण के मद -पैकेज प्रदान करता है, 3.0जिस पर आवश्यकता होती child-packageहै 3.0, वे दोनों उस पीपीए रिपॉजिटरी के माध्यम से उपलब्ध हैं।

समस्या यह है, यदि आप अब रिपॉजिटरी पेज से मदर-पैकेज-3.0 . deb डाउनलोड करते हैं और इसे स्थापित करने का प्रयास करते हैं gdebi, तो आप gdebiअसफल हो जाएंगे ।

क्योंकि, माँ-पैकेज-3.0.deb फ़ाइल की जाँच करने पर gdebiपता चलता है कि इस माँ -पैकेज को संस्करण 3.0या उच्चतर के बाल-पैकेज की आवश्यकता है , लेकिन यह केवल संस्करण का स्थान जानता है 2.0। यह जहां संस्करण लाने के लिए पता नहीं है 3.0की बच्चे के पैकेज से। यह अपेक्षित है क्योंकि, आपने उस सिस्टम को नहीं बताया जहां आपको यह नवीनतम मदर-पैकेज मिलता है । दूसरे शब्दों में, आपने उस PPA को शामिल करने के लिए रिपॉजिटरी सूची को कॉन्फ़िगर नहीं किया था ।

तो, स्पष्ट जवाब इस सवाल का है यह निर्भर करता हैयदि आवश्यक निर्भरता पहले से कॉन्फ़िगर किए गए रिपॉजिटरी में पाई जा सकती है, तो स्थापना सफल होगी । लेकिन यदि नहीं, तो यह इस उच्चीकृत संस्करण पैकेज को स्थापित करने में विफल रहेगा। इसलिए आपको अभी भी PPA की आवश्यकता है और इन सभी को मैन्युअल रूप से किए बिना सबसे आसान तरीका है।

दूसरे प्रश्न का दूसरा भाग मेरे लिए मायने नहीं रखता था


5

मेरे पास कुछ अनुप्रयोगों के साथ एक ही मुद्दा था, स्काइप उनमें से एक होने के साथ, ये बाहरी पैकेज या लाइब्रेरी फ़ाइलों पर निर्भर करता है जिन्हें मैन्युअल रूप से स्थापित करने की आवश्यकता होती है।

मेरे द्वारा उपयोग की गई समस्या को ठीक करने के लिए:

sudo dpkg -i skype.deb

और फिर बाहरी पुस्तकालयों के लिए संकेत दिए जाने के बाद जैसे आपके आउटपुट में है, मैंने टाइप किया है:

sudo apt-get install -f

यह आवश्यक संकुल को डाउनलोड करता है और सभी के द्वारा स्काइप स्थापित करता है।


2

हर .deb पैकेज में निर्भरताओं की एक सूची होती है (संगत संस्करण संख्या के साथ)।

मैं एक पायथन रीडर नहीं हूं, लेकिन स्रोत कोड aptउस सूची को प्राप्त करने के लिए कॉल करता है। यह स्पष्ट रूप से निर्भरता की निर्भरता खोजने के लिए पुनरावर्ती रूप से उतरने के लिए मिला है, लेकिन aptस्पष्ट रूप से ऐसा कर सकते हैं।

एक बार जब सभी निर्भरताएं काम कर जाती हैं और उन्हें सही क्रम में रखा जाता है (कुछ निर्भरता स्थापित होने से पहले अन्य निर्भरता स्थापित करने की आवश्यकता होती है), aptतो बस निर्भरता स्थापित करने के लिए कहा जाता है। फिर गडेबी को एक तर्क के रूप में जो पैकेज दिया गया था वह स्थापित है।

निर्भरता और लक्ष्य पैकेज दो कारणों से दो कार्यों में स्थापित किए गए हैं। स्थानीय स्थापित करने के लिए उपयुक्त कॉल का पहला प्रारूप .deb रिपॉजिटरी से निर्भरता स्थापित करने के लिए उपयुक्त कॉल से भिन्न होता है। दूसरा, कॉल को अलग करना यह सुनिश्चित करता है कि लक्ष्य पैकेज से पहले निर्भरता सभी स्थापित हो।

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