วิธีการหลบหนีนรกพึ่งพา


21

ฉันมีคอมพิวเตอร์ Ubuntu ที่ไม่มีอินเทอร์เน็ตและคอมพิวเตอร์ Ubuntu ที่มีอินเทอร์เน็ต อันที่ไม่มีอินเทอร์เน็ตจำเป็นต้องมีไดรเวอร์ที่จะติดตั้งผ่าน 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

ซึ่งทำให้งานเสร็จ แต่สำหรับการอ้างอิงของแพ็กเกจเดียวไม่ใช่การขึ้นต่อกันของการพึ่งพาของแพ็กเกจและอื่น ๆ นี่กลายเป็นการต่อสู้หลายชั่วโมงเพื่อรับแพ็คเกจทั้งหมดและมันน่าเบื่อจริงๆ ฉันใช้รหัสนี้เพื่อดาวน์โหลดไฟล์. deb ไปยังไดรฟ์ USB บนคอมพิวเตอร์ออนไลน์ของฉันจากนั้นย้ายไปที่คอมพิวเตอร์ออฟไลน์เพื่อแทรกไดรฟ์จากนั้นเรียกใช้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 เครื่องโดยตรงผ่านทางอีเธอร์เน็ตเพื่อให้เครื่องออฟไลน์ใช้การเชื่อมต่อกับเครื่องออนไลน์ จากสิ่งที่ฉันจำได้กระบวนการที่ฉลาดแบบออฟไลน์นั้นตรงไปตรงมามากขึ้น แต่คำตอบนี้บอกว่ามันเป็น "plug and play"
pbhj

1
ตราบใดที่คุณใช้RecommendsและSuggestsแทนที่จะเป็นเพียงDependsฉันคาดหวังว่าคุณจะจบลงด้วยการติดตั้งอินเทอร์เน็ตทั้งหมดไม่ว่าคุณจะเริ่มจากแพ็คเกจใด
ท่อ

1
@ N0rbert ฉันไม่เคยพบคำตอบที่น่าพอใจ ฉันรู้ว่านั่นไม่ใช่จุดของระบบซ้ำซ้อน
wizzwizz4

@ N0rbert นั่นไม่ใช่คำถามที่ชัดเจนสำหรับการแก้ไขสถานการณ์นรกพึ่งพา การทำสำเนาระหว่างสองใด ๆ อยู่ในคำตอบไม่ได้คำถาม
รวย

คำตอบ:


27

ดูapt-offlineวิธีการที่เป็นมิตรกับผู้ใช้ในการจัดการการพึ่งพาแบบออฟไลน์ คุณจะต้องติดตั้งก่อนโดยดาวน์โหลด debfile และโอนไปยังเครื่องออฟไลน์ของคุณ คุณสามารถใช้สิ่งที่ต้องการ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. ย้ายไฟล์ zipfile กลับไปที่เครื่องออฟไลน์ของคุณแล้วรันคำสั่งนี้:

    sudo apt-offline install ndis-ao.zip
    

คุณควรndiswrapper-dkmsติดตั้ง ณ จุดนี้และทั้งหมดควรจะดี


หากapt-offlineแพ็กเกจของคุณไม่สามารถติดตั้งได้ให้จดบันทึกแพ็กเกจที่ขึ้นต่อกันซึ่งล้มเหลวและแก้ไขทีละชุด (คัดลอกด้วยตนเองตามต้องการ) นรกพึ่งพาได้น่ารำคาญ แต่น่าเสียดายที่เป็นหนึ่งในปัญหากับระบบออฟไลน์เพิ่มเติม

คุณสามารถลองดูapt-rdependsและสร้างกราฟการพึ่งพาที่สมบูรณ์ รวมเข้ากับสิ่งนี้apt downloadและคุณอาจมีทางเลือกอื่นในการแก้ไขปัญหาแม้ว่าการทดสอบของฉันกับสิ่งนี้จะไม่สามารถสรุปได้ว่าจะพูดน้อยที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.