
一般的なダウンロードとインストール、apt(適性など)の機能に関するものではなく、スクリプトされたものです。ダウンロードパッケージファイル。
dget
これを行うツールを見つけましたが、本当にうまくいきます。しかし残念ながら/etc/apt/sources.list
。
これは可能ですか?実はdget
こんな機能が一番いいのに、しかし、ここでリポジトリURLを指定することもできます。
PS:スクリプトを提供していただきありがとうございます。しかし、私はこのタスクにDebianツールを使用することを好みます。非常に シンプル仕事。外部使用のためのビルドスクリプトの一部になります。どの不必要な複雑さにより、余裕のない付随費用が発生します。 Debian ツールで行う必要があります。
PS2。最後に、システム全体のリポジトリを更新しますdget
。
答え1
私が見つけることができるすべてのツールは、ローカルapt
情報(および/etc/apt/sources.list
最後の実行apt-get update
で定義されたリポジトリなど)を使用します。説明はあまり難しくありません。ストレージフォーマットしかし。
救う
#!/bin/sh
# Downloads a package from a repository
# dlpkg repo distro suite arch package
for arch in all "${4}"; do
curl "${1}/dists/${2}/${3}/binary-${arch}/Packages.xz" | xz -d | "$(dirname $0)/pkgfilename" -v "PACKAGE=${5}" | while read filename; do
curl -O "${1}/${filename}"
done
done
のようにdlpkg
、そして
#!/usr/bin/awk -f
/Package:/ {
package = $2
}
package == PACKAGE && /Filename:/ {
print $2
}
as でpkgfilename
実行可能にし、次のコマンドを実行してパッケージをダウンロードできます。
./dlpkg <repository URL> <distribution> <suite> <architecture> <package>
例えば
./dlpkg http://ftp.fr.debian.org/debian unstable main amd64 libc6
Packages
ファイルが標準の順序(Package
before)Filename
ではなくリポジトリを処理する必要がある場合は、次のAWKスクリプトを使用できます。
#!/usr/bin/awk -f
BEGIN {
filename = ""
}
/^$/ {
filename = ""
stanza = 0
}
/Package:/ {
if ($2 == PACKAGE) {
stanza = 1
if (filename != "") {
print filename
stanza = 0
}
}
}
/Filename:/ {
filename = $2
if (stanza == 1) {
print filename
filename = ""
}
}
エラー処理はなく、読者の練習問題のままにしておきます。署名確認もできません。
答え2
最新バージョンのDebianまたは他のディストリビューションを実行するためにaptを使用している場合はそれを使用できますapt-get
。apt-get.conf
使用しないように、次の設定を名前のファイルに入れてください
Dir::Etc::main ".";
Dir::Etc::Parts "./apt.conf.d";
Dir::Etc::sourcelist "./sources.list";
Dir::Etc::sourceparts "./sources.list.d";
Dir::State "./apt-tmp";
Dir::State::status "./apt-tmp/status";
Dir::Cache "./apt-tmp";
必要な書類を準備してください。
mkdir -p apt-tmp/lists/partial
touch apt-tmp/status
apt-get -c apt.conf update >/dev/null
その後、次のコマンドを使用してパッケージを現在のディレクトリにダウンロードできます。
apt-get -c apt.conf download $packages
apt-get
このコマンドが欠落している以前のバージョンでは、download
次のものを使用できます。
apt-get -c apt.conf install -d $packages
パッケージとその依存関係をapt-tmp/archives
。
答え3
私はあなたが達成したいものがリポジトリを持つアイデアと一致しないと思います。アイデアは、リポジトリを追加してからリポジトリからインストールする必要があることです。
パッケージは手動でダウンロードできます(私はしばしばFedoraのRPMパッケージを使用してこれを行います)、通常のツール(私の場合)を使用して手動でインストールdnf
できます。
私は通常のURLを使用し/etc/yum.repos.d/<repo>.repo
てブラウザに移動し、wget
DEBパッケージに似ている必要があります。
だから、
- ブラウザを使用して手動でパッケージをダウンロードするか、
wget
- CLIからパッケージ管理クライアントを使用してインストールします。
リポジトリをオンラインで直接使用できる場合(そうでない理由はわかりません)、dnf
RPMパッケージにURLを提供すると意味があります。私は同等のDebianツールが同じことをすることを確信しています。したがって、ブラウザやwget
。
私が理解する限り、あなたは正しいですダウンロードパック。だから、この場合はプレーンを使用するのがwget
最善の方法だと思います。
答え4
まあ、おそらくこのスクリプトはあなたのニーズに合ったソリューションかもしれません。
#!/bin/bash U=1ドル ファイル="$2" [[ -z "$U" ]] && echo -e "使用法: $0 repo-url [ダウンロードするファイル]\n"ダウンロードするファイル"が指定されていない場合、このスクリプトはリポジトリファイルのファイルを一覧表示します。\ n"; for i in $(curl -l "$U" 2>/dev/null|grep -i 'href='|sed -e 's/.*href=//g' -e 's/>.*/ /g' -e 's/"//g'|grep -v '/$'|grep "$FILE") する if [[ -z "$FILE" ]] それから echo "ファイル: $i" その他 echo "ファイルのダウンロード: $i" curl -q "${U}/${i}" --output "$i" 2>/dev/null ls -la "$i" フィリピン諸島 完璧