给定一个 debian 包名称,如何获取最新 .deb URL 的 URL?

Duk*_*gal 5 debian package-management deb

举例来说,我希望在 AMD64 上为 Jessie 安装最新的 Debian 软件包“libgcc1”。

如何确定从https://packages.debian.org下载的正确 URL

例如,在这种情况下,通过https://packages.debian.org网站手动单击最终会获得正确的下载,即:

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 版本:jessie

到:

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

我如何确定这种关系?

编辑:对于所有询问“为什么不使用 apt?”的人,答案是我试图解决的核心问题是安装 apt。我无法使用 apt,因为我正在尝试安装 apt。

谢谢

iva*_*van 7

好吧,如果你有 apt 可用......

apt-get -y install --print-uris $PACKAGE | cut -f 2 -d \' | grep \.deb
Run Code Online (Sandbox Code Playgroud)

它实际上会给你所有需要安装的包。

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
Run Code Online (Sandbox Code Playgroud)

由于您没有,请查看http://ftp.us.debian.org/debian/dists/stable/main/binary-adm64 并在那里获取 Packages.gz 文件的副本。查看它,你会看到包名被列为

Package: audacity
Run Code Online (Sandbox Code Playgroud)

几行之后,你会看到

Filename: pool/main/a/audacity/audacity_2.0.6-2_amd64.deb
Run Code Online (Sandbox Code Playgroud)

就这样吧!不幸的是,行号不一致....


Cel*_*ada 5

如果你没有apt可用的,你基本上会被困在重新实现apt. 获取apt. 但如果你必须...

以与apt它本身相同的方式开始:从 中指定的 URL /etc/apt/sources.list,例如http://ftp.us.debian.org/debian/。不要忘记考虑您在该列表中可能包含的其他更新条目、security.debian.org 以及可能的向后移植。

您需要评估规则/etc/apt/preferences{,.d}以了解任何特定包应该来自哪个源,并且您需要进行版本号比较并评估固定规则。

从中构建一个完整的 URL:

http://ftp.us.debian.org/debian/dists/<name>/<section>/binary-<architecture>/Packages.gz
Run Code Online (Sandbox Code Playgroud)

该文件包含所有单个包的相对 URL。

您还需要以下文件来验证该文件的哈希值以检查其完整性:

http://ftp.us.debian.org/debian/dists/jessie/Release
http://ftp.us.debian.org/debian/dists/jessie/Release.gpg
Run Code Online (Sandbox Code Playgroud)

...以及来自/etc/apt/trusted*其中的公钥可让您验证这一点。该Release文件包含所有其他文件的哈希值,您应该对其进行验证。

我会忘记考虑有关 Debian 软件包存储库格式和布局的一系列其他微妙规则。

如您所见,最好只使用 apt


归档时间:

查看次数:

6060 次

最近记录:

8 年,8 月 前