web-dev-qa-db-ja.com

すべての依存関係とパッケージをディレクトリにダウンロードする方法

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

私はapt-getおよびapt-cacheしかし、私はパッケージと依存関係を自分の選んだディレクトリに一気にダウンロードするための迅速で簡単な方法を見つけていません。どうすればいいですか?この問題について正しく対処していますか?多くの依存関係があるオフラインパッケージをどのようにインストールしますか?

56
user583507
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>
36
metalheart

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

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

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

同じ質問がすでにここで答えられています: 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")
20
panticz

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

PS私は基本的にブログの記事をコピーしました。なぜなら、それはあまり読めなかったので、そして投稿が消える場合に備えて。

18
FSp

私のために働いた方法をいくらか単純化した(そして私のために働いたもの)(上記すべてに基づいて)
依存関係の階層は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
8
ozma

これにより、すべての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のDL Depsを試みており、debconf-2.0で失敗したため、これを例として使用しましたが、このスクリプトで必要なものが得られました。

8

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

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


ドイツのシステムでは次のようになります:node

  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:"
このコマンドで用語「yourpackage」を希望するものに2回変更する必要があります。これに注意してください!
このテキストは、このコマンドで2回使用されます。言語に合わせて調整する場合は、この点に注意してください。

$ 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
4
michbau

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

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

1

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

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/aptを指し、Dir::State::Lists/var/lib/apt/listsを指します(使用可能なパッケージのインデックスファイルを保持します

両方の-oオプションは、インストールの代わりに更新およびアップグレードで使用できます。

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

0
jjvs