依存関係の地獄から逃げるには?


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

パッケージの依存関係の依存関係ではなく、1つのパッケージの依存関係についてのみジョブを実行します。これは、すべてのパッケージを取得するための数時間の戦いに変わり、非常に退屈です。このコードを実行してオンラインコンピューターの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ファイルを単一のフォルダーにダンプして正気を保つ方法を知っていますか?THX!



また、オフラインマシンがオンラインマシン接続を使用するように、イーサネットで2台のマシンを直接ネットワーク化することもできます。私が思い出すところから、apt-offlineプロセスははるかに簡単に聞こえます。しかし、この答えは「プラグアンドプレイ」であると言っています。
pbhj

1
長い間使用のようにRecommendsしてSuggests唯一の代わりに、Depends私はあなたが全体のインターネットにあなたがからスタートパッケージに関係なくインストール終わるだろう期待しています。
パイプ

1
@ N0rbertこれらの答えが満足できるものだとは思いません。しかし、それが重複システムのポイントではないことを知っています。
wizzwizz4

@ N0rbertこれは、依存関係の地獄の状況を解決するための明らかな質問ではありません。2つの間のどんな重複も答えであり、質問ではない。
リッチ

回答:


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パッケージのインストールに失敗した場合は、失敗した依存パッケージをメモし、1つずつ解決します(必要に応じて手動でコピーします)。依存関係の地獄は迷惑ですが、残念ながらそれはオフラインシステムの問題の1つです。

apt-rdepends同様に、完全な依存関係グラフを生成することもできます。これを組み合わせるapt downloadと、問題に対する代替ソリューションが得られるかもしれませんが、これでの私のテストは控えめに言っても決定的ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.