कैसे डाउनलोड करें .deb पैकेज और सभी निर्भरताएँ?


14

इस विषय के बारे में मुझे मिले सभी उत्तरों के लिए, समाधान एक निश्चित कंप्यूटर ए में बनाना था, जहां मुझे पैकेज स्थापित करने की आवश्यकता है, एक फाइल जिसमें सभी निर्भरताएं हैं और फिर इसे दूसरे कंप्यूटर में डाउनलोड करना है, चलो इसे बी कहते हैं।

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

मैं वास्तव में अपने कंप्यूटर में बहुत अधिक अनावश्यक .deb फ़ाइलों के बारे में परवाह नहीं करता हूं, और मैं वास्तव में परवाह नहीं करता हूं, अगर मैं 10gb सॉफ़्टवेयर स्थापित करने के लिए 1gb फ़ाइलों को संग्रहीत करने जा रहा हूं।

इसलिए, मैं किसी भी संभावित निर्भरता को डाउनलोड करना चाहता हूं। वहाँ किसी मैं यह कर सकता हूँ?


जवाबों:


22

मैं इसके साथ जाऊंगा:

apt-get download PACKAGE && apt-cache depends -i PACKAGE | awk '/Depends:/ {print $2}' | xargs apt-get download

फिर आप इसे dpkg -i *.debउस निर्देशिका में स्थापित कर सकते हैं जिसे आपने इन डाउनलोड किया है।


1
मुझे लगता है कि इसने काम किया, बहुत-बहुत धन्यवाद। मैं इसे फिर से धन्यवाद करने के लिए वापस आने से पहले थोड़ा और परीक्षण
करूँगा

क्या आप मुझे समझा सकते हैं कि awk और xargs कमांड क्या करते हैं? मैं सिर्फ लिनक्स का उपयोग करना शुरू कर रहा हूं और मैंने इन 2 आदेशों को पहले कभी नहीं देखा है
एबरनार्ड्स

apt-cache depends -iपैकेज के लिए महत्वपूर्ण निर्भरता के लिए जाँच करेगा। इसे तभी निष्पादित किया apt-get download PACKAGEजाएगा जब आप अपने द्वारा जोड़े गए पीपीए रिपॉजिटरी में से पैकेजेज को खोजने में सफल होंगे /etc/apt/sources.list। अब, apt-cache depends -i PACKAGEफॉर्म का आउटपुट है Depends: dependency-name। हमें केवल निर्भरता के नामों की आवश्यकता है, इसलिए जो जाग रहा है - वह केवल दूसरा स्ट्रिंग प्राप्त कर रहा है। उदाहरण के लिए, करने का प्रयास करें apt-cache depends -i vim | awk '{print $2}' । ध्यान दें, & # के दाईं ओर की पूरी रेखा को एक कथन माना जा सकता है
सर्गी कोलोडियाज़नी

1
धन्यवाद! लेकिन मैंने कुछ शोध किया, और मैंने apt-cache के कुछ आउटपुट को हटाने के लिए कमांड sed '/ ^ </ d' का उपयोग किया, यह निर्भर करता है, यह पहले से ही अच्छा था, लेकिन अब यह हर मामले में काम कर रहा है। आपका बहुत बहुत धन्यवाद!
ebernardes

dpkg -i *.debयह बहुत अच्छा नहीं है, यह निर्भरता क्रम द्वारा पैकेज स्थापित नहीं करता है। इसलिए, आपको सभी पैकेज को स्थापित करने के लिए कई बार रिट्रीटी की आवश्यकता हो सकती है। वैसे भी वर्कअराउंड करने के लिए?
मिथिला

1

क्या यह एक बार की बात है, या कुछ और जिसे आप अपडेट रखना चाहते हैं? क्या आप ज्यादातर ऑनलाइन काम कर रहे हैं, और सिर्फ अपने सभी पैकेजों का एक स्थानीय बैकअप चाहते हैं, केवल मामले में?

ऐसी कई सेवाएँ हैं जो आप उस अधिनियम को APT प्रॉक्सी / कैश के रूप में स्थापित कर सकते हैं। आप अपने स्थानीय कैश पर एपीटी को इंगित करते हैं, यह इंटरनेट से डाउनलोड करेगा, और सभी पैकेजों की स्थानीय रूप से कैश्ड कॉपी रखेगा। यह बहुत उपयोगी हो सकता है यदि आपके पास पैकेज के समान चयन के साथ आपके नेटवर्क पर बहुत सारे कंप्यूटर हैं।

मेरे पसंदीदा एप कैश लगभग है , लेकिन एप्टी-कैचर-एनजी और कुछ अन्य भी हैं। प्रत्येक में मामूली अंतर होता है कि कैशिंग को कैसे कॉन्फ़िगर किया जा सकता है।

मैं हमेशा अपने डेबियन आधारित सिस्टम के निर्माण के लिए न्यूनतम नेटस्टोन इंस्टालर का उपयोग करता हूं, जिसका अर्थ है कि मेरे एप्ट कैश में आमतौर पर मेरे सिस्टम को पूरी तरह से बनाने के लिए लगभग सभी पैकेज हैं।


यह एक ऐसी चीज है जिसे मैं बस के मामले में रखना चाहता हूं, अगर मुझे जल्दी से कुछ सॉफ्टवेयर इंस्टॉल करने की आवश्यकता है, भले ही यह पुराना संस्करण हो, इससे पहले कि मैं बाद में अपडेट कर सकता हूं। मैं जाँच करूँगा कि, धन्यवाद :)
ebernardes

0

अजगर कार्यक्रम के बाद चलाएं:

import subprocess
package=input("insert package name:")
t=subprocess.run(["apt-cache", "depends", "-i", package], stdout=subprocess.PIPE)
if t.stderr or t.returncode:
    print(t.stdout)
    exit(t.stderr)
#print(":", t.stdout)
needed_pacages=t.stdout.split(b"Depends: ")
print(package, "depends of", needed_pacages)
for choices in needed_pacages:
    one_choice_made=False
    for needed_package in choices.split(b"\n"):
        needed_package=needed_package.strip(b"\n ")
        t=subprocess.run(["apt-get", "download", needed_package])
        if t.stderr or t.returncode:
            print("ERROR: Status: {p.returncode}, stdout: {p.stdout}, stderr: {p.stderr}".format(p=t), "package name:", needed_package)
        else:
            one_choice_made = True
            #print("downloaded",vajalik_pakk)
            break
    if not one_choice_made:
        print("could not get one of dependecies", choices)

1
और यह स्वीकृत उत्तर से बेहतर क्यों है?
राल्फफ्रीडेल

0

पायथन 3 कार्यक्रम के बाद चलाएं:

import subprocess
olemas_olevad_pakid=set()
def r(pakk):
    t=subprocess.run(["apt-get", "download", pakk])
    if t.stderr or t.returncode:
        #print("could not load package: Status: {p.returncode}, stdout: {p.stdout}, stderr: {p.stderr}".format(p=t), "paki nimi:", pakk)
        return False
    olemas_olevad_pakid.add(pakk)
    t=subprocess.run(["apt-cache", "depends", "-i", pakk], stdout=subprocess.PIPE)
    if t.stderr or t.returncode:
        print(t.stdout)
        exit(t.stderr)
    #print(":", t.stdout)
    needed_pacages=t.stdout.split(b"Depends: ")[1:]
    #print(pakk, "needs packages:", needed_pacages)
    for choices in needed_pacages:
        one_choice_made=False
        for needed_package in choices.split(b"\n"):
            needed_package=needed_package.strip(b"\n ")
            if needed_package in olemas_olevad_pakid or r(needed_package):
                one_choice_made=True
                break
        if not one_choice_made:
            print("PROBLEM: could not download any of", choices)
            return False
    return True
#for pakk in packages_to_download:
#    print("pakk:",pakk)
#    r(pakk)
r(input("package name:"))

यह सभी आश्रितों की सभी आश्रितों को न केवल तत्काल निर्भरताएँ डाउनलोड करेगा। लेकिन उन्हें स्थापित करना dpkg -i *.debविफल रहा। हो सकता है क्योंकि apt-cache depends -i packageगलत सूचना देता है या कुछ। कुछ फ़ाइलों को अभी भी स्थापित करने के लिए इंटरनेट कनेक्शन की आवश्यकता होती है।


यह विफल हो सकता है क्योंकि dpkg संकुल को सही क्रम में स्थापित नहीं कर रहा है। जब तक सभी निर्भरताएँ स्थापित नहीं हो जाती तब तक आप कुछ बार dpkg को पुनः प्राप्त करना चाह सकते हैं।
काला उल्लू काई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.