リポジトリから現在のディレクトリにdebファイルをダウンロードするaptコマンドはありますか?


46

私は、インストールトリガー(postinst、postrm)またはパッケージの特定の部分(/usr/shareandなど/etc)に頻繁に興味があります。現在、次のコマンドを実行してソースコードを取得しています。

apt-get source [package-name]

欠点は、このファイルは多くの場合バイナリパッケージよりもはるかに大きく、インストールツリーを反映しないことです。

現在、http//packages.ubuntu.com/からパッケージをダウンロードしています。

  1. 検索する [package-name]
  2. パッケージを選択してください
  3. ダウンロードするにはamd64 / i386をクリックしてください
  4. 実際のファイルをダウンロードする

これには時間がかかりすぎて、シェルが本当に好きな人として、次の(想像上の)コマンドのようなことをしたいと思います。

apt-get get-deb-file [package-name]

私はapt-getマニュアルページでこのようなものを見つけることができませんでした。私が見つけた最も近いものは--download-onlyスイッチでしたが、これはパッケージを/var/cache/apt/archives(ルート権限が必要です)現在のディレクトリではなくに置きます。


ファイルを保存しないマシンの違い:ssh debianmachine1 "dpkg --get-selections" | diff-<(dpkg --get-selections)
スコットロバート

debgetパッケージから使用できますdebian-goodies
Shayan

回答:


59

あなたは使用することができるdownloadのサブコマンドをaptapt-getaptitude。たとえば、$ PKG目的のパッケージである場合、次のいずれかが実行されます。

apt-get download $PKG
apt download $PKG
aptitude download $PKG

これにはルート権限は必要ありません。また、とを使用apt-getして近似することもできますwget

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

ただし、これにより、パッケージのインストールに必要なすべてのパッケージが取得されるため、代わりに制限を試みることができます。

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

また、wget行を関数に入れて、パッケージ名をパラメーターとしてコマンドapt-downloadとして使用できるようにすることもできます。

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq $1 | cut -d"'" -f2); }

変更に注意してください。$ PKGは$ 1に置き換えられ、-cパラメーターは中断されたダウンロードの継続を可能にします。


1
素晴らしい、これは私が探しているものです。私のシステムでaptitudeを維持するもう1つの理由は、提供されていない他の便利なコマンドaptですaptitude changelog $PKG
レーケンシュタイン

4
更新:Natty(正確にはaptバージョン0.8.11)から、このaptitude download機能も利用可能になりaptました:apt-get download $PKG
-Lekensteyn

甘い、私の古いapt v0.8.10にもかかわらず動作します
rogerdpack

--print-urlsオプションを廃止したようです
erjoalgo 14

--print-urlsオプションはまだそこにあります
kumarharsh 14

8
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

注意:

宛先フォルダーにpartialという名前のフォルダーを作成する必要があります。


そんなに悪い音はしません。オプションはによって記述されるようman apt.confです。フォルダーの作成を避けたい。
レケンステイン

興味がありますが、なぜフォルダを作成しないのですか?
mount.cifs

パッケージを永久に保存する必要はありませんし、フォルダーを作成することも避けてください。
レーケンシュタイン

このソリューションはパッケージの削除も要求することに注意したいだけです(たとえば/etc/apt/sources.list、新しいパッケージにバージョンを変更する場合、後のパッケージをダウンロードする目的で)-このような場合、wget上記の方法は、 「トンは...何かを削除したい
sdaau

5

Ubuntu 14.04(aptパッケージバージョン1.0.1ubuntu2、私は信じています)にapt-getは、現在のディレクトリにdownload指定されたパッケージをダウンロードするコマンドが含まれています.deb

たとえば、ファイルマネージャーをダウンロードするとしますRanger

$ apt-get download ranger

結果:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb

これは完璧です。私が試した他のすべてのソリューションapt installは、すべての依存関係の要件を満たすことができない場合は機能しません。いじくり回すのに.debファイルが欲しかった!
ラジエル

3

リストからすべてのdebパッケージをダウンロードする場合は、次を実行できます。

cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget

1行に1つのパッケージ名を入れるだけです。requirements.txtファイルのように。たとえば、次のようなコンテンツの場合:

apache2-mpm-event
curl
dmidecode
ethtool
libapache2-mod-wsgi
libapache2-mod-python

お役に立てれば。;)


2

sudo apt-get install devscripts

dget [package-name]


これは質問に対する答えを提供しません。著者に批判や説明を求めるには、投稿の下にコメントを残してください。
s3lph

どうして答えが得られないのですか?これにより、アーカイブから現在のディレクトリにdebがダウンロードされます。それはまさに質問が何であったかではありませんか?
マイケルテリー

もう少し詳細が役立つ場合があります。これは技術的に答えとしての資格がありますが、それでも3つ以上のコマンドを提供することができます。
s3lph

:: shrug ::ここでの他の回答とは異なり、これには条件や注意事項はありません。簡単な質問に対する簡単な答えです。
マイケルテリー

0

/var/cache/apt/archives世界中で読める。後apt-get -d、そこからホームディレクトリに展開します。dpkg -e /var/cache/apt/archives/foo_version.deb fooホームディレクトリで実行すると、制御ファイルがにダンプされfoo/ます。


この方法の問題は、ダウンロードにはまだ管理者権限が必要だということです。ホームディレクトリにファイルを取得するためだけにこのような極端な操作を行うのはばかげているようです。
エンドリューク

.debsを開くことは問題ではなく、ダウンロードすることです。バグかもしれませんが、/ var / cache / apt / archives`のパッケージもumaskの影響を受けます。私は027のumaskを設定したので、パッケージを/var/cache/apt/archives読むことができません。パッケージの内容を調べるだけなので、一度ダウンロードするだけです/tmp
-Lekensteyn

0

debgetパッケージに含まれているコマンドを使用できますdebian-goodies

以下でインストールします:

sudo apt install debian-goodies

以下を使用してパッケージをダウンロードします。

debget <package_name>

例えば:

debget debian-goodies

debian-goodies_0.79_all.deb現在のディレクトリにダウンロードされます(pwd現在の作業ディレクトリを印刷します)。


debian-goodies便利なコマンドがたくさん付属しています。askubuntu.com
Shayan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.