निर्भरता नरक से कैसे बचें?


21

मेरे पास एक उबंटू कंप्यूटर है जिसमें इंटरनेट नहीं है और इंटरनेट के साथ एक उबंटू कंप्यूटर है। बिना इंटरनेट वाले को ndiswrapper के माध्यम से ड्राइवर को स्थापित करने की आवश्यकता होती है। समस्या यह है कि ndiswrapper-dkmsजिस पर dkmsनिर्भर करता है वह कुछ चीजों पर निर्भर करता है, और वे कुछ चीजें बहुत सी चीजों पर निर्भर करती हैं, जो कि बहुत कुछ पर निर्भर करती हैं। मैंने अब तक मैन्युअल रूप से 92 निर्भरताएं डाउनलोड की हैं और मुझे अभी भी और अधिक की आवश्यकता है। मैं कोड का उपयोग कर रहा हूं

for i in $(apt-cache depends <package> | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done

जो काम पूरा हो जाता है, लेकिन केवल एक पैकेज की निर्भरता के लिए, पैकेज की निर्भरता की निर्भरता और इतने पर नहीं। यह सभी पैकेज पाने के लिए एक बहु-घंटे की लड़ाई में बदल गया है और यह वास्तव में थकाऊ है। मैं अपने ऑनलाइन कंप्यूटर पर USB ड्राइव में .deb फ़ाइलों को डाउनलोड करने के लिए इस कोड को चला रहा हूं, फिर ड्राइव को सम्मिलित करने के लिए ऑफ़लाइन कंप्यूटर पर जा रहा हूं, फिर sudo apt install ./*फ़ोल्डर में चल रहा है और सर्वश्रेष्ठ की उम्मीद कर रहा हूं । यह आमतौर पर कुछ इस तरह से बाहर थूकता है:

...
The following packages have unmet dependencies:
 binutils : Depends: binutils-common (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
            Depends: libbinutils (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
            Depends: binutils-x86-64-linux-gnu (= 2.30-21ubuntu1~18.04.1) but 2.30-21ubuntu1~18.04 is to be installed
 cpp-doc : Depends: cpp-7-doc (>= 7.4.0-1~) but it is not installable
 file : Depends: libmagic1 (= 1:5.32-2ubuntu0.2) but 1:5.32-2ubuntu0.1 is to be installed
 g++-7 : Depends: libstdc++-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
 g++-multilib : Depends: g++-7-multilib (>= 7.4.0-1~) but it is not installable
 gcc-7-multilib : Depends: lib32gcc-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
                  Depends: libx32gcc-7-dev (= 7.4.0-1ubuntu1~18.04) but it is not installable
 gfortran : Depends: gfortran-7 (>= 7.4.0-1~) but it is not installable
 glibc-doc : Depends: glibc-doc-reference (>= 2.18) but it is not installable
 libasan4-dbg : Depends: libasan4 (= 7.4.0-1ubuntu1~18.04) but it is not installable
 libatomic1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
                  Depends: libatomic1 (= 8.3.0-6ubuntu1~18.04) but it is not installable
 libbabeltrace1 : Depends: libdw1 (>= 0.126) but it is not installable
 libcc1-0 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libcilkrts5-dbg : Depends: libcilkrts5 (= 7.4.0-1ubuntu1~18.04) but it is not installable
 libfl-dev : Depends: libfl2 (= 2.6.4-6) but it is not installable
 libgcc-7-dev : Depends: libitm1 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libatomic1 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libasan4 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: liblsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libtsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libubsan0 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libcilkrts5 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
                Depends: libmpx2 (>= 7.4.0-1ubuntu1~18.04) but it is not installable
 libgcc1 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libgcc1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libgomp1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
                Depends: libgomp1 (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libitm1-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
               Depends: libitm1 (= 8.3.0-6ubuntu1~18.04) but it is not installable
 liblsan0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
                Depends: liblsan0 (= 8.3.0-6ubuntu1~18.04) but it is not installable
 libmpx2-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
               Depends: libmpx2 (= 8.3.0-6ubuntu1~18.04) but it is not installable
 libquadmath0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
                    Depends: libquadmath0 (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libstdc++6 : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
 libtsan0-dbg : Depends: gcc-8-base (= 8.3.0-6ubuntu1~18.04) but 8.2.0-1ubuntu2~18.04 is to be installed
                Depends: libtsan0 (= 8.3.0-6ubuntu1~18.04) but it is not installable
 libubsan0-dbg : Depends: libubsan0 (= 7.4.0-1ubuntu1~18.04) but it is not installable
 libumfpack5 : Depends: libcholmod3 (>= 1:4.5.2) but it is not going to be installed
 m4 : Depends: libsigsegv2 (>= 2.9) but it is not installable
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

क्या किसी को मेरी निर्भरता को बचाने के लिए एक पैकेज में निर्भरता और सभी उप-निर्भरता के लिए सभी .deb फ़ाइलों को सिर्फ एक डंप करने की विधि का पता है? धन्यवाद!



आप सीधे ईथरनेट द्वारा 2 मशीनों को नेटवर्क करने में सक्षम हो सकते हैं ताकि ऑफ़लाइन मशीन ऑनलाइन मशीनों कनेक्शन का उपयोग करें। मैं जो याद करता हूं, उससे उपयुक्त-ऑफ़लाइन प्रक्रिया बहुत अधिक सीधी लगती है; लेकिन यह उत्तर कहता है कि यह "प्लग एंड प्ले" है।
pbhj

1
जब तक आप उपयोग करते हैं Recommendsऔर Suggestsकेवल इसके बजाय Dependsमुझे उम्मीद है कि आप पूरे इंटरनेट को स्थापित करना समाप्त कर देंगे, चाहे आप किसी भी पैकेज से शुरू करें।
पाइप

1
@ N0rbert मैंने कभी उन उत्तरों को संतोषजनक नहीं पाया। मुझे पता है कि यह डुप्लिकेट सिस्टम की बात नहीं है, हालांकि।
wizzwizz4

@ N0rbert यह निर्भरता नरक स्थितियों को हल करने के लिए एक स्पष्ट सवाल नहीं है। दोनों के बीच कोई दोहराव में है जवाब , नहीं प्रश्न
रिच

जवाबों:


27

apt-offlineऑफ़लाइन निर्भरता के प्रबंधन का एक (अधिक) उपयोगकर्ता के अनुकूल तरीका पर एक नज़र डालें । आपको इसे पहले डिफाइल डाउनलोड करके और इसे अपनी ऑफ़लाइन मशीन पर स्थानांतरित करके इंस्टॉल करना होगा। आप sudo apt download apt-offlineडाउनलोडिंग को संभालने के लिए कुछ का उपयोग कर सकते हैं । स्थापना sudo dpkg -i /path/to/your/debfile.debऑफ़लाइन मशीन और सिर्फ sudo apt installआपके ऑनलाइन मशीन का उपयोग करके की जा सकती है ।

एक बार ऐसा करने के बाद, आपको वास्तविक स्थापना के लिए चीजों का एक गुच्छा तैयार करना होगा।

  1. ndiswrapperपैकेजों को स्थापित करने के लिए अपने ऑफ़लाइन सिस्टम का एक हस्ताक्षर बनाकर प्रारंभ करें :

    sudo apt-offline set offline.sig --install-packages ndiswrapper-dkms
    
  2. फ़ाइल को अपने ऑनलाइन मशीन पर कॉपी करें, और सभी आवश्यक फ़ाइलों को डाउनलोड करने के लिए ऑनलाइन मशीन पर निम्न कमांड चलाएं:

    apt-offline get offline.sig --bundle ndis-ao.zip
    
  3. अपनी ऑफ़लाइन मशीन पर वापस जिपफ़ाइल बंडल ले जाएँ और उस पर यह कमांड चलाएँ:

    sudo apt-offline install ndis-ao.zip
    

आपको ndiswrapper-dkmsइस बिंदु पर स्थापित होना चाहिए और सभी को अच्छी तरह से होना चाहिए।


यदि आपका apt-offlineपैकेज स्थापित करने में विफल रहता है, तो आश्रित पैकेजों पर ध्यान दें जो विफल रहे और उन्हें एक-एक करके हल करें (मैन्युअल रूप से आवश्यकतानुसार प्रतिलिपि)। निर्भरता नरक कष्टप्रद है, लेकिन दुर्भाग्य से यह अधिक ऑफ़लाइन प्रणाली के साथ मुद्दों में से एक है।

आप पूरी तरह निर्भरता ग्राफ apt-rdependsउत्पन्न करने के लिए एक नज़र लेने की कोशिश कर सकते हैं । इसे मिलाएं और आपके पास समस्या का एक वैकल्पिक समाधान हो सकता है, हालांकि इसके साथ मेरा परीक्षण कम से कम कहने के लिए अनिर्णायक रहा है।apt download

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