继续中断的软件包下载,无需重新下载 [从 apt-get 下载某些软件包]

rub*_*o77 5 apt software-installation

使用 来安装软件包时apt-get install,它首先开始下载所有需要的软件包,然后逐一安装它们。

但是,如果您使用apt-get download, 并在第一阶段中断该过程,然后重新开始,它会从头开始重新下载所有包(删除任何部分下载的 .deb 文件)。

如何继续已中止的下载过程而不重新下载已收到的部分数据?

小智 2

wget -v -d -nc -c -S --random-wait --keep-badhash\
https://mirror.math.princeton.edu/pub/ubuntu/ubuntu/pool/universe/c/chromium-browser/chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb
Run Code Online (Sandbox Code Playgroud)

反驳和实际可行的解决方案

反点:如果使用apt-get download,并重新启动,那么是的,它会从头开始重新启动。

平台:我正在使用 Ubuntu Bionic - 18.04 LTS - x86(32 位)(...作为 Bodhi_Linux_5.1.0 的可启动 ISO - LiveCD 下的引擎)。

再次...答案是如果使用 --download-only 选项,或者 与 ...apt-get download some-package 相反 apt-get install some-package

如果使用 apt-get download somepackage 则“是”,它将从头开始重新开始下载。

解决方案

我对此的解决方案:

  1. 将现有的部分下载的 .deb 文件备份到 .deb.BAK

  2. 使用 apt-get 的--print-uris选项显示要下载的 .deb 文件的 URL

  3. wget -c使用而不是 apt-get.... 恢复部分下载,如下所示:wget -v -d -S -c [--random-wait] [--keep-badhash] https://url-to-file/path/some0package.deb

上述步骤的代码模板:

  1. $ cp some0package.deb some0package.deb.BAK

  2. $ apt-get --print-uris download some0package

  3. $ wget -v -d -c -S --random-wait --keep-badhash [copy & paste here the full https://URL you got from the previous command, but NOT the other rest of that output]

使用 chromium 浏览器的代码示例:

$ cp\
chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb\
chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb.BAK

$ apt-get download --print-uris chromium-browser
Run Code Online (Sandbox Code Playgroud)

[结果输出:]

https://mirror.math.princeton.edu/pub/ubuntu/ubuntu/pool/universe/c/chromium-browser/chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb' chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb 79183996 SHA512:bc34c6241b4200bf9c4c8a7dccba5415daec9623741328146bf4d8edb91d3db7489d5c467162075caf9266644369ac2af0c41cd6b4e320e9c110a6e71411b4ce
Run Code Online (Sandbox Code Playgroud)

在上面的输出中,该--print-uris选项为我们提供了几条信息;超过我们需要的。

  • 服务器端包文件的 URL 路径((这个完整的 URL 就是我们需要复制的!))
  • 预期的文件名将位于您的 PC 本地
  • 服务器端的总完整文件大小;
  • SHA512 哈希(下载后进行比较)

其中,我只需要复制

  • 第一部分,URL
  • 可选:SHA512 哈希(如果我希望在下载后比较它是否与服务器的副本匹配):

$ wget -v -d -c -S --random-wait --keep-badhas https://mirror.math.princeton.edu/pub/ubuntu/ubuntu/pool/universe/c/chromium-browser/chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb

这对我有用!总之:

  1. 我从命令开始: $ apt-get download chromium-browser

  2. 它被中断/我取消了(ctrl-c)。

  3. 我备份了现有文件: $ cp [local-filename.deb] [local-filename.deb.BAK]

  4. 我通过以下方式获取了要使用的网址: $ apt-get download --print-uris chromium-browser

  5. 我突出显示并复制到剪贴板该命令的输出的第一部分,(对我来说)最终是(不要使用这个;使用您在终端中获得的那个) https://mirror.math.princeton。 edu/pub/ubuntu/ubuntu/pool/universe/c/chromium-browser/chromium-browser_105.0.5195.102-0ubuntu0.18.04.1_i386.deb

  6. 然后我使用wget -c(“-c”意味着“继续现有下载”)...(添加了详细信息,这样我就可以看到是否出了什么问题)...并粘贴了我得到的URL来自上一个命令,如下所示:

$ wget -v -d -c -S --random-wait --keep-badhash\

https://[URL-you-got-and-copied-from-output-of-the-previous-command] somepackage.deb