少し前に、Ubuntuでソフトウェアをオフラインでインストールする方法について説明しました 。そのガイドでは、インターネット対応システムでパッケージをダウンロードし、インターネット接続が遅いかまったくない別のシステムにパッケージをインストールする方法を説明しました。このチュートリアルでは、Ubuntu、Debian、Pop OS、およびその他のDEBベースのシステムで依存関係のあるパッケージをローカルにダウンロードする方法を説明します。
この方法を使用して、.deb
実際にインストールせずに、必要なすべての依存関係とともにパッケージ化します。このようにして、1つのシステムからパッケージをダウンロードし、後で同じシステム自体またはインターネットに接続されていない他のシステムにインストールできます。さまざまなアーキテクチャシステムのパッケージをダウンロードすることもできます。たとえば、64ビットシステムから32ビットパッケージをダウンロードしたり、その逆を行ったりすることができます。
Ubuntuでローカルに依存関係のあるパッケージをダウンロードする
これは2つの方法で実行できます。このガイドは、Ubuntu16.04および18.04LTSデスクトップエディションでテストしました。以下に説明するように、問題なく機能しました。
方法1:
これは、以下に示す他の方法よりも最も単純でわかりやすい方法です。
依存関係をすべてインストールせずにパッケージをダウンロードするには、次のコマンドを実行します。
$ sudo apt-get install --download-only <package_name>
たとえば、 Vimをダウンロードしましょう 次のコマンドを使用して、必要なすべての依存関係をインストールせずにパッケージ化します。
$ sudo apt-get install --download-only vim
出力例:
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: ctags vim-doc vim-scripts The following NEW packages will be installed: vim 0 upgraded, 1 newly installed, 0 to remove and 82 not upgraded. Need to get 1,152 kB of archives. After this operation, 2,852 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 vim amd64 2:8.0.1453-1ubuntu1.1 [1,152 kB] Fetched 1,152 kB in 3s (372 kB/s) Download complete and in download only mode
上記の出力でわかるように、Vimパッケージはすべての依存関係をダウンロードしましたが、実際にはインストールしていません。
ダウンロードしたすべてのファイルは、 /var/cache/apt/archives
に保存されます。 ディレクトリ。
キャッシュフォルダ全体をUSBにコピーするか、ネットワーク経由でパッケージをインストールするシステムに転送するだけです。
ダウンロードしたパッケージをインストールするには、キャッシュフォルダーに移動し、以下に示すようにインストールします。
$ sudo dpkg -i *
見る?とても簡単です!
ただし、この方法は、パッケージのダウンロードに使用するシステムにメインパッケージまたはその依存関係がローカルにインストールされていない場合にのみ機能します。
同じシステム自体にすでにインストールされているパッケージをダウンロードしようとすると、次のような出力が表示されます。
$ sudo apt-get install --download-only vim Reading package lists... Done Building dependency tree Reading state information... Done vim is already the newest version (2:8.0.1453-1ubuntu1.3). 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
このような場合は、 "apt-rdepends
を使用してください " すべてのパッケージをダウンロードします。 apt-rdepends
の場合 まだインストールされていない場合は、次のコマンドを使用してインストールしてください:
$ sudo apt install apt-rdepends
次に、コマンドを使用して、メインパッケージ(この場合はVim)とすべての依存関係をダウンロードします:
$ apt download $(apt-rdepends vim | grep -v "^ ")
このコマンドは、必要なすべてのパッケージを再帰的にダウンロードします。
以下のようなエラーが発生した場合に備えて:
E: Can't select candidate version from package debconf-2.0 as it has no candidate
代わりに次のコマンドを試してください:
$ apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
このコマンドは、必要なすべてのパッケージを含むVimをダウンロードし、現在の作業ディレクトリに保存します。
ダウンロードしたすべてのパッケージをインストールするには、次のコマンドを実行します:
$ sudo dpkg -i *
方法2:
まず、ダウンロードしたいパッケージの依存関係をダウンロードします。
パッケージのすべての依存関係のリストを表示するには、たとえば Python 、実行:
$ sudo apt-cache depends python
出力例:
python PreDepends: python-minimal Depends: python2.7 Depends: libpython-stdlib Conflicts: <python-central> Breaks: update-manager-core Suggests: python-doc Suggests: python-tk Replaces: python-dev
依存関係のあるPythonパッケージをローカルディスクにダウンロードしましょう。
これを行うには、最初にパッケージを保存するディレクトリを作成します。
$ mkdir python
ディレクトリに移動します:
$ cd python
そして実行します:
$ for i in $(apt-cache depends python | 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
上記のコマンドは、必要なすべての依存関係とともにPythonパッケージをダウンロードし、それらを現在の作業ディレクトリに保存します。このコマンドは、エラーを errors.txt
にも保存します。 ファイル。
'ls
を使用してダウンロードしたファイルを表示してみましょう 'コマンド:
$ ls
出力例:
errors.txt libpython-stdlib_2.7.11-1_amd64.deb python2.7_2.7.11-7ubuntu1_amd64.deb python-doc_2.7.11-1_all.deb python-minimal_2.7.11-1_amd64.deb python-tk_2.7.11-2_amd64.deb
上記の出力にあるように、すべての依存関係を含むpythonパッケージがダウンロードされています。
それらをUSBドライブにコピーし、以下に示すように、任意のオフラインシステムにPythonパッケージをインストールするだけです。
USBドライブをマウントし、ドライブをマウントした場所に移動し、次のコマンドを実行してPythonをインストールします。
$ sudo dpkg -i *
おすすめの記事:
- CentOSのすべての依存関係を持つRPMパッケージをダウンロードする方法
特定のアーキテクチャの依存関係を持つパッケージをローカルにダウンロードする
上記のコマンドで64ビットパッケージがダウンロードされていることに気付くかもしれません。 64ビットのUbuntuシステムからダウンロードしているからです。 32ビットアーチシステムのパッケージをダウンロードしたい場合はどうなりますか?それも可能です!
まず、次のコマンドを使用して、Ubuntuシステムで必要なアーキテクチャを有効にします。
$ sudo dpkg --add-architecture i386
アーキテクチャを追加しない場合、パッケージをダウンロードしようとすると、次のエラーメッセージが表示されます。
E: No packages found
選択したアーキテクチャを有効にした後、次のコマンドを実行して、特定のアーキテクチャ関連のパッケージをダウンロードします。
$ for i in $(apt-cache depends python:i386 | 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
上記の出力にあるように、アーキテクチャを追加しました'i386
' 'apt-cache
を使用 ' コマンド。
出力例:
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python-minimal i386 2.7.11-1 [28.2 kB] Fetched 28.2 kB in 1s (25.8 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python2.7 i386 2.7.11-7ubuntu1 [220 kB] Fetched 220 kB in 1s (116 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 libpython-stdlib i386 2.7.11-1 [7,664 B] Fetched 7,664 B in 0s (13.3 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python-tk i386 2.7.11-2 [28.0 kB] Fetched 28.0 kB in 1s (24.8 kB/s)
ダウンロードしたパッケージを確認しましょう。
$ ls
出力例:
errors.txt libpython-stdlib_2.7.11-1_i386.deb python2.7_2.7.11-7ubuntu1_i386.deb python-minimal_2.7.11-1_i386.deb python-tk_2.7.11-2_i386.deb
見る?上記のコマンドは、32ビットパッケージのみをダウンロードしました。
これで、Ubuntuシステムで依存関係のあるパッケージをダウンロードする方法をマスターしました。これらの方法は、すべてのDEBベースのシステムで同じです。
関連記事:
- Ubuntuでパッケージの再帰的な依存関係をダウンロードする方法
- システム内で何も変更せずにLinuxコマンドをシミュレートする方法