82

インターネットに接続されていないマシンにパッケージをインストールしようとしています。私がやりたいのは、インターネットに接続されたマシンにすべてのパッケージと依存関係をダウンロードしてから、すべてをオフラインのコンピューターにスニーカーネットで接続することです。

私はとで遊んでいますが、パッケージapt-getapt-cache依存関係を一挙に選択したディレクトリにダウンロードするための迅速で簡単な方法がわかりません。どうすればいいですか?私はこの問題に正しく取り組んでいますか?依存関係の多いオフラインパッケージをどのようにインストールしますか?

4

11 に答える 11

95

マークされた回答には、ダウンロードを実行しているマシンで使用可能なパッケージがターゲットマシンと異なる可能性があり、したがってパッケージセットが不完全である可能性があるという問題があります。

これを回避してすべての依存関係を取得するには、次を使用します。

apt-get download $(apt-rdepends <package>|grep -v "^ ")

から返された一部のパッケージは、ダウンロードapt-rdependsするための正確な名前で存在しませんapt-get download(たとえばlibc-dev)。そのような場合は、それらの正確な名前を除外します(^<NAME>$たとえばlibc-dev-bin、存在する他の関連する名前がスキップされないように、必ず使用してください)

apt-get download $(apt-rdepends <package>|grep -v "^ " |grep -v "^libc-dev$")

ダウンロードしたら、.debインターネットのないマシンにファイルを移動してインストールできます。

sudo dpkg -i *.deb
于 2014-12-14T12:53:52.597 に答える
49

同じ質問がすでにここで答えられています: debianパッケージの再帰的な依存関係をリスト/ダウンロードする方法は?

試す:

PACKAGES="wget unzip"
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
  --no-conflicts --no-breaks --no-replaces --no-enhances \
  --no-pre-depends ${PACKAGES} | grep "^\w")
于 2017-08-03T16:21:41.357 に答える
42
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>
于 2012-12-07T05:40:16.707 に答える
21

このaptitude --download-only ...アプローチは、インターネット接続が手元にあるDebianディストリビューションがある場合にのみ機能します。

そうでない場合は、切断されたDebianマシンで次のスクリプトを実行する方が良いと思います。

apt-get --print-uris --yes install <my_package_name> | grep ^\' | cut -d\' -f2 >downloads.list

downloads.listファイルを接続されたLinux(またはLinux以外)のマシンに移動し、次のコマンドを実行します。

wget --input-file myurilist

これにより、すべてのファイルが現在のディレクトリにダウンロードされます。その後、それらをUSBキーにコピーして、切断されたDebianマシンにインストールできます。

クレジット:http ://www.tuxradar.com/answers/517

于 2014-10-07T14:59:44.053 に答える
9

これにより、すべてのDebsが現在のディレクトリにダウンロードされ、候補が見つからなくても失敗しません。

また、sriptを実行するためにsudoは必要ありません!

nano getdebs.sh && chmod +x getdebs.sh && ./getdebs.sh

#!/bin/bash

package=ssmtp

apt-cache depends "$package" | grep Depends: >> deb.list

sed -i -e 's/[<>|:]//g' deb.list

sed -i -e 's/Depends//g' deb.list

sed -i -e 's/ //g' deb.list

filename="deb.list"

while read -r line
do
    name="$line"
    apt-get download "$name"
done < "$filename"

apt-get download "$package"

注:これを例として使用したのは、実際にSSMTPのDepsをDLしようとしていて、debconf-2.0で失敗したためですが、このスクリプトで必要なものが得られました。

于 2016-10-11T00:02:18.423 に答える
8

(上記のすべてに基づいて)私のために働いたやや単純化された(そして私のために働いた)方法
依存関係の階層は1レベルよりも深くなる可能性があることに注意してください

パッケージの依存関係を取得する

$ apt-cache depends mongodb | grep Depends:
  Depends: mongodb-dev
  Depends: mongodb-server

URLを取得する:

sudo apt-get --print-uris --yes -d --reinstall install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-tools | grep "http://" |  awk '{print$1}' | xargs -I'{}' echo {} | tee files.list
wget --input-file files.list
于 2015-07-27T06:08:43.957 に答える
5

すでにシステムにインストールされているかどうかapt-cache depends package に関係なく、必要なすべてのパッケージを取得していました。したがって、常に正しく機能します。 コマンドapt-cacheの動作は言語によって異なるため、システムでこのコマンドを試して、コマンドを調整する必要があります。apt-cacheはあなたのパッケージに依存 しますあなたが得る英語のシステムでは:

$ apt-cache depends yourpackage
node
  Depends: libax25
  Depends: libc6


ドイツのシステムでは、次のようになります。ノード

  Hängt ab von: libax25
  Hängt ab von: libc6


用語が付いた英語版:
" Depends:"このコマンドで
は、用語 " yourpackage"を希望に合わせて2回変更する必要があります。これに注意してください!

$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "  Depends:" |  sed 's/  Depends://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list



そして、 「Hängt ab von:」という用語が付いたドイツ語版では、このコマンドで「」という用語を2回希望に
合わせて変更する必要があります。これに注意してください! このテキストは、このコマンドで2回使用されます。言語に適合させたい場合は、このテキストに注意してください。yourpackage

$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "Hängt ab von:" |  sed 's/  Hängt ab von://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list


downloads.listにリンクのリストが表示
されます。リストを確認し、フォルダーに移動してリストを実行します。

$ cd yourpathToYourFolder

$ wget --input-file downloads.list


必要なすべてのパッケージは次のとおりです。

$ ls yourpathToYourFolder
于 2015-06-06T16:41:30.573 に答える
4

これにより、すべてのパッケージと依存関係(まだインストールされていません)が選択したディレクトリにダウンロードされます。

sudo apt-get install -d -o Dir::Cache=/path-to/directory/apt/cache -o Dir::State::Lists=/path-to/directory/apt/lists packages

確認/path-to/directory/apt/cacheして/path-to/directory/apt/lists存在します。-o Dir::Cacheポイントをに設定しない場合は/var/cache/aptDir::State::Listsポイント/var/lib/apt/lists使用可能なパッケージのインデックスファイルを保持します)をポイントします。

どちら-oのオプションも、インストールの代わりに更新とアップグレードで使用できます。

-d別のマシンで、' 'なしで同じコマンドを実行します

于 2019-02-13T16:03:10.933 に答える
2

私はあなたが素晴らしい太ったUSBHDとネットへの良い接続を持っていると仮定しています。apt-mirrorを使用して、基本的に独自のDebianミラーを作成できます。

http://apt-mirror.sourceforge.net/

于 2012-12-07T04:23:55.070 に答える
0

システムにすでに依存関係がインストールされている可能性があるという警告を受け入れる場合、最も簡単な方法はapt-get install --simulate <your_package>を実行することです。これにより、最初にインストールするすべてのdepsが一覧表示され、次にパッケージ、次にapt-get download <the_list_of_packages>


たとえば、xubuntu-21.04 MINIMAL INSTALLのqt5-gtk2-platformthemeの場合、(apt-get install --simulateの後に)次のようになります。

libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5svg5 libqt5widgets5 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 l10n

次に、選択したフォルダーにCDを挿入し、apt-get download <the_list_above>を実行すると、すべてのd/wがそこにあります。その後、dpkg -i*.debを実行できます

于 2021-08-30T19:16:35.187 に答える
0

@onnoによって与えられたコマンドによって、すべての競合する依存関係(依存関係が見つかりません)の除外を補完および自動化します。

apt-get download $(apt-rdepends <package>|grep -v "^ " |grep -v "^conflictiv-dependency$")

少なくともUbuntuの場合、エラーメッセージの形式は次のとおりです。

E: Can't select candidate version from package <package> as it has no candidate

次のスクリプトは、見つからない依存関係を除く、見つかったすべての依存関係をダウンロードします。

#!/bin/bash
rm -f error.txt
apt download $(apt-rdepends $1 | grep -v "^ ") 2> error.txt
#IF THERE WAS ERRORS (DEPENDENCIES NOT FOUND)
if [ $(cat error.txt | wc -l) -gt 0 ]
then
    partial_command="\("
    while read -r line
    do
        conflictive_package="$(awk '{split($0,array," "); print array[8]}' <<< $line)"
        partial_command="$partial_command$conflictive_package\|"
    done < error.txt
    
    partial_command="$(awk '{print substr($0, 1, length($0)-2)}' <<< $partial_command)\)"
    eval "apt download \$(apt-rdepends $1 | grep -v '^ ' | grep -v '^$partial_command$')"
fi
rm error.txt
于 2022-02-20T02:20:43.120 に答える