Bağımlılık cehennemi kaçış nasıl?


21

İnternetsiz bir Ubuntu bilgisayarım ve internet bağlantılı bir Ubuntu bilgisayarım var. İnternet olmadan bir ndiswrapper ile bir sürücü yüklenmesini gerektirir. Sorun olduğunu ndiswrapper-dkmsbağlıdır dkmsbirkaç şeye bağlıdır ve hangilerinin birkaç şey daha, vb bağlıdır şeylerin, bir çok bağlıdır. Şimdiye kadar 92 bağımlılığı manuel olarak indirdim ve hala daha fazlasına ihtiyacım var. Kodu kullanıyorum

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

hangi işi yapar, ancak yalnızca bir paketin bağımlılıkları için, paketin bağımlılıklarının bağımlılıkları vb. Bu, tüm paketleri almak için çok saatlik bir kavgaya dönüşmüştür ve gerçekten sıkıcıdır. .Deb dosyalarını çevrimiçi bilgisayarımdaki USB sürücüsüne indirmek, daha sonra sürücüyü takmak için çevrimdışı bilgisayara taşımak, daha sonra sudo apt install ./*klasörde çalışmak ve en iyisini ummak için bu kodu kullanıyorum . Genellikle böyle bir şey tükürür:

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

Paket bağımlılıkları ve tüm alt bağımlılıkları için tüm .deb dosyalarını sadece akıl sağlığımı korumak için tek bir klasöre dökmek için bir yöntem bilen var mı? Teşekkürler!



Çevrimdışı makine çevrimiçi makineler bağlantısını kullanması için, 2 makineyi doğrudan ethernet ile de bağlayabilirsiniz. Hatırladığım kadarıyla apt-offline işlemi çok daha basit geliyor; ama bu cevap , "tak ve çalıştır" olduğunu söylüyor.
pbhj

1
Sürece kullandıkça Recommendsve Suggestsyerine sadece Dependsben olursa olsun başlamak hangi paket bütün internet yüklemeden bitireceğiz bekliyoruz.
boru

1
@ N0rbert Bu cevapları hiç tatmin edici bulmadım. Bunun yinelenen sistemin amacı olmadığını biliyorum.
wizzwizz4

@ N0rbert Bu bağımlılık cehennemi durumları çözmek için açık bir soru değil. İkisi arasındaki herhangi bir çoğaltma sorunun cevabı , soru değil .
Zengin

Yanıtlar:


27

Bir göz atın apt-offlineçevrimdışı bağımlılıkları yönetmenin (diğer) kullanıcı dostu bir şekilde. İlk önce debfile dosyasını indirerek ve çevrimdışı makinenize aktararak kurmanız gerekir. sudo apt download apt-offlineİndirme işlemek gibi bir şey kullanabilirsiniz . sudo dpkg -i /path/to/your/debfile.debÇevrimdışı makinede ve sadece sudo apt installçevrimiçi makinenizde kurulum yapılabilir .

Bu yapıldıktan sonra, gerçek kurulum için bir sürü şey hazırlamanız gerekir.

  1. ndiswrapperPaketleri yüklemenizi isteyen çevrimdışı sisteminizin bir imzasını oluşturarak başlayın :

    sudo apt-offline set offline.sig --install-packages ndiswrapper-dkms
    
  2. Dosyayı çevrimiçi makinenize kopyalayın ve gerekli tüm dosyaları indirmek için çevrimiçi makinede aşağıdaki komutu çalıştırın:

    apt-offline get offline.sig --bundle ndis-ao.zip
    
  3. Zipfile paketini çevrimdışı makinenize geri getirin ve bu komutu çalıştırın:

    sudo apt-offline install ndis-ao.zip
    

ndiswrapper-dkmsBu noktada kurulmuş olmalı ve her şey yolunda olmalı.


Senin Eğer apt-offlinepaket, o başarısız bağımlı paketlerin yapmak notu yüklemek ve onları teker teker çözmeye başarısız (gerektiğinde el ile kopyalama). Bağımlılık cehennemi sinir bozucu, ama ne yazık ki bu daha çevrimdışı bir sistem ile sorunlardan biri.

Tam bir bağımlılık grafiği apt-rdependsoluşturmak için de bakmaya çalışabilirsiniz . Bunu bir araya getirin ve sorunla ilgili alternatif bir çözüme sahip olabilirsiniz, ancak bununla yaptığım testler en azından söyleyemem.apt download

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.