Bagaimana cara menghindari ketergantungan neraka?

21

Saya memiliki komputer Ubuntu tanpa internet dan komputer Ubuntu dengan internet. Yang tanpa internet memerlukan driver untuk diinstal melalui ndiswrapper. Masalahnya adalah itu ndiswrapper-dkmstergantung pada dkmsmana tergantung pada beberapa hal, dan beberapa hal itu tergantung pada banyak hal, yang bergantung pada lebih banyak, dan seterusnya. Saya telah mengunduh 92 dependensi secara manual sejauh ini dan saya masih membutuhkan lebih banyak. Saya sudah menggunakan kode

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

yang menyelesaikan pekerjaan tetapi hanya untuk satu dependensi paket, bukan dependensi dependensi paket dan sebagainya. Ini telah berubah menjadi pertarungan multi-jam untuk mendapatkan semua paket dan itu sangat membosankan. Saya telah menjalankan kode ini untuk mengunduh file deb ke drive USB di komputer online saya, kemudian pindah ke komputer offline untuk memasukkan drive, kemudian berjalan sudo apt install ./*di folder dan berharap yang terbaik. Biasanya meludahkan sesuatu seperti ini:

...
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.

Apakah ada yang tahu metode untuk hanya membuang semua file deb untuk paket dependensi dan semua subdependensi ke dalam satu folder untuk menyimpan kewarasan saya? Terima kasih!

TriVoxel
sumber
Anda juga dapat menghubungkan 2 mesin secara langsung dengan ethernet sehingga mesin offline menggunakan koneksi mesin online. Dari apa yang saya ingat, proses apt-offline terdengar jauh lebih mudah; tetapi jawaban ini mengatakan "plug and play".
pbhj
1
Selama Anda menggunakan Recommendsdan Suggestsbukan hanya Dependssaya harapkan Anda akan akhirnya menginstal seluruh internet tidak peduli paket mana yang Anda mulai.
pipa
1
@ N0rbert Saya belum pernah menemukan jawaban yang memuaskan. Saya tahu bahwa itu bukan inti dari sistem duplikat.
wizzwizz4
@ N0rbert Itu bukan pertanyaan yang jelas untuk menyelesaikan situasi neraka ketergantungan. Duplikasi apa pun di antara keduanya ada dalam jawaban , bukan pertanyaan .
Kaya

Jawaban:

27

Lihatlah apt-offline, cara (lebih banyak) yang ramah pengguna untuk mengelola dependensi offline. Anda harus menginstalnya terlebih dahulu dengan mengunduh berkas debfile dan mentransfernya ke mesin offline Anda. Anda dapat menggunakan sesuatu seperti sudo apt download apt-offlinemenangani pengunduhan. Instalasi dapat dilakukan menggunakan sudo dpkg -i /path/to/your/debfile.debdi mesin offline dan hanya sudo apt installdi mesin online Anda.

Setelah selesai, Anda harus menyiapkan banyak hal untuk instalasi yang sebenarnya.

  1. Mulailah dengan membuat tanda tangan dari sistem offline Anda meminta menginstal ndiswrapperpaket:

    sudo apt-offline set offline.sig --install-packages ndiswrapper-dkms
    
  2. Salin file ke mesin online Anda, dan jalankan perintah berikut pada mesin online untuk mengunduh semua file yang diperlukan:

    apt-offline get offline.sig --bundle ndis-ao.zip
    
  3. Pindahkan bundel zipfile kembali ke mesin offline Anda dan jalankan perintah ini di atasnya:

    sudo apt-offline install ndis-ao.zip
    

Anda seharusnya sudah ndiswrapper-dkmsmenginstal pada titik ini dan semua harus baik-baik saja.


Jika apt-offlinepaket Anda gagal diinstal, catat paket dependen yang gagal dan atasi satu per satu (menyalin secara manual sesuai kebutuhan). Ketergantungan neraka memang menyebalkan, tapi sayangnya itu salah satu masalah dengan sistem yang lebih offline.

Anda dapat mencoba mengambil melihat apt-rdependsjuga untuk menghasilkan lengkap grafik ketergantungan. Kombinasikan ini dengan apt downloaddan Anda mungkin memiliki solusi alternatif untuk masalah ini, meskipun pengujian saya dengan ini tidak meyakinkan untuk sedikitnya.

Kaz Wolfe
sumber