web-dev-qa-db-ja.com

debianパッケージ名が与えられた場合、どうすれば最新の.deb URLへのURLを取得できますか?

たとえば、AMD64にJessieの最新のDebianパッケージ「libgcc1」をインストールするとします。

https://packages.debian.org からダウンロードする正しいURLを決定するにはどうすればよいですか?

たとえば、この場合、 https://packages.debian.org Webサイトを手動でクリックすると、最終的に正しいダウンロードが表示されます。

http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb

重要な注意:私は利用可能なaptを持っていません。依存関係名を.debパッケージから手動で抽出するコードを書いていますが、次のステップを実行しようとしてスタックしました。これは、パッケージ名の正しい実際の.debパッケージを取得することです。

したがって、たとえば、これらの情報から移動する必要があります。

  • パッケージ名:libgcc1
  • バージョン:最新
  • アーキテクチャ:AMD64
  • debianリリース:ジェシー

に:

http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb

この関係をどのように判断できますか?

編集:「なぜaptを使用しないのですか?」と尋ねるすべての人々にとって、答えは私が解決しようとしている中心的な問題はaptをインストールすることであるということです。 aptをインストールしようとしているため、aptを使用できません。

ありがとう

3
Duke Dougal

ええと、もしあなたがaptを利用できたら...

apt-get -y install --print-uris $PACKAGE | cut -f 2 -d \' | grep \.deb

実際にインストールするのに必要なすべてのパッケージを提供します。

user@darkstar:~/ $ apt-get -y install --print-uris audacity | cut -f 2 -d \' | grep \.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libs/libsbsms/libsbsms10_2.0.2-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/serd/libserd-0-0_0.22.0~dfsg0-2_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sord/libsord-0-0_0.14.0~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sratom/libsratom-0-0_0.4.6~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/suil/libsuil-0-0_0.8.2~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity-data_2.1.2-1_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac++6v5_1.3.1-4_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libi/libid3tag/libid3tag0_0.15.1b-11_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/l/lilv/liblilv-0-0_0.22.0~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/p/portsmf/libportsmf0v5_0.1~svn20101010-4ubuntu1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/v/vamp-plugin-sdk/libvamp-hostsdk3v5_2.6~repack0-2_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity_2.1.2-1_AMD64.deb

そうではないので、 http://ftp.us.debian.org/debian/dists/stable/main/binary-adm64 を見て、そこでPackages.gzファイルのコピーを入手してください。よく見ると、パッケージ名が次のように表示されます。

Package: audacity

その数行後に、

Filename: pool/main/a/audacity/audacity_2.0.6-2_AMD64.deb

そして、やった!残念ながら、行番号は一貫していません。

6
ivanivan

aptが利用できない場合は、基本的にaptの再実装に行き詰まります。単にaptを取得するほうが理にかなっています。しかし、あなたがしなければならないなら...

apt自体と同じように開始します。/etc/apt/sources.listなど、http://ftp.us.debian.org/debian/で指定されたURLから開始します。更新、security.debian.org、そして場合によってはバックポートのために、そのリストにあるかもしれない追加のエントリを考慮に入れることを忘れないでください。

/etc/apt/preferences{,.d}のルールを評価して、特定のパッケージがどのソースからのものであるかを知る必要があります。また、バージョン番号の比較を行い、ピン留めルールを評価する必要があります。

それから完全なURLを作成します。

http://ftp.us.debian.org/debian/dists/<name>/<section>/binary-<architecture>/Packages.gz

このファイルには、個々のパッケージすべてへの相対URLが含まれています。

また、ファイルのハッシュを確認して整合性をチェックするには、次のファイルも必要です。

http://ftp.us.debian.org/debian/dists/jessie/Release
http://ftp.us.debian.org/debian/dists/jessie/Release.gpg

...そしてそれを確認できる/etc/apt/trusted*の公開鍵。 Releaseファイルには、他のすべてのファイルのハッシュが含まれているため、確認する必要があります。

Debianパッケージリポジトリのフォーマットとレイアウトに関する他の微妙なルールを考慮に入れるのを忘れてしまいます。

ご覧のとおり、aptを使用するだけの方がはるかに優れています。

5
Celada

aptをインストールして使用することをお勧めします。

パッケージをダウンロードするには、次のコマンドを実行します。

apt-get download libgcc1

.debパッケージへのパスを取得するには、次のコマンドを実行します。

apt-cache show libgcc1 | grep Filename

サンプルの送信:

Filename: pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb
2
GAD3R