我可以让 do-release-upgrade 只下载软件包以供以后升级吗?

Men*_*hem 35 do-release-upgrade

我正在运行 lubuntu 10.10,并想升级到 11.04。我有一个非常喜怒无常的互联网连接,所以我想在运行安装之前下载所有包。

根据this,没有简单的方法可以做到这一点。该线程中提到的错误报告仍处于打开状态。

我的问题:有没有办法破解 do-release-upgrade 只下载软件包,有点像在 apt-get dist-upgrade 中添加“-d”?

还是手动执行它是获得我想要的结果的唯一方法?

如果我必须手动完成,这些是完成所需的步骤,还是我遗漏了什么?

  1. 禁用 3rd 方存储库/etc/apt/sources.list/etc/apt/sources.list.d
  2. 将存储库/etc/apt/sources.list从更改mavericknatty
  3. sudo apt-get update
  4. 运行sudo apt-get -d dist-upgrade以仅下载软件包。根据需要多次执行此操作,直到下载所有软件包。
  5. 运行sudo apt-get dist-upgrade以完成升级过程

Mar*_*nas 13

您的前四个步骤是正确的,但步骤 5 应该是sudo do-release-upgrade(而不是sudo apt-get dist-upgrade)。应该注意到它要下载的所有(或大部分)包已经存在于/var/cache/apt/archives.

在 do-release-upgrade 的一些早期版本中,有一个错误,它会/var/cache/apt/archives在重新下载软件包之前进行清理,但 IIRC 已修复该错误。


小智 9

我编写了一个脚本来执行此操作,以便我自己将多台机器升级到 Ubuntu 14.04“trusty”。它被称为“apt-get-other-release”。简单使用:

$ sudo apt-get-other-release -t trusty
  [ a long time passes as it downloads stuff ]
$ sudo apt-get-other-release -U
  [ it prepares the system for upgrade -- this is quick ]
$ sudo do-release-upgrade   # or update-manager, whatever you're comfortable with
  [ upgrading also takes a long time and may still download some additional stuff ]
Run Code Online (Sandbox Code Playgroud)

脚本位于:

ftp://www.lubkin.com/pub/user/filbo/apt-get-other-release

1.0 版有 sha1sum: 87a466b2bb2d1ac5b0a08509246a450b8d1c7617

在幕后,它基本上是apt-get update; apt-get -d dist-upgrade使用自己的私有 source.list 文件集运行的。结果存储在 /var/cache/apt-$to_rel/archives 中,'-U' 标志将它们复制到系统范围的 /var/cache/apt/archives 中,以便它们在升级期间出现。

您还可以将升级档案从一台本地主机复制到另一台主机,从而节省带宽。我为 amd64 和 i386 升级做了这个,只复制那些名称中没有“amd64”的 *.deb;然后apt-get-other-release -t trusty在 i386 机器上运行另一个,它下载了另一大堆软件包,因为两台机器上安装了不同的东西。

反馈表示赞赏;email cc 表示赞赏,因为我不知道我下次什么时候会看 askubuntu。搜索引擎很了解我。

注意:我实际上并没有对这样处理过的系统进行升级!下周的某个时间。把这个脚本拿出来,同时它可能对人们有用。

>贝拉<


Men*_*hem 6

有一种方法可以让更新管理器为您执行步骤 1-3。

  1. sudo update-manager从 GUI 中的终端窗口运行(这很重要)

    • 启动更新管理器,告诉它你想升级到下一个版本的 Ubuntu,让它开始运行。它将禁用 3rd 方存储库,将主存储库更改为最新版本,然后sudo apt-get update为您运行。
    • 然后它会弹出一个屏幕,告诉你为了运行更新,它必须删除、安装和升级包。
    • 在这个阶段,转到终端窗口并使用 CTRL-C 强制退出程序。[如果您不这样做,并通过更新管理器的取消按钮取消更新,它将恢复更改]。
  2. sudo apt-get -d dist-upgrade根据需要从命令行运行多次,直到下载所有软件包并准备安装

  3. 运行sudo do-release-upgrade并让它使用已经下载的软件包完成升级。

  4. 重新启用 3rd 方存储库,并sudo apt-get update && sudo apt-get upgrade再次运行以将 3rd 方存储库更新到最新版本(确保存储库更新到最新版本的 ubuntu)


Nat*_*dge 5

我还为此编写了一个脚本,您可以在以下位置找到该脚本

https://github.com/neldredge/fetch-release-upgrade

用法:在临时目录中,运行

 ./fetch-release-upgrade.sh trusty
Run Code Online (Sandbox Code Playgroud)

或您想要升级到的任何新版本。必要的包将下载到名为 的子目录中debs。然后您可以将它们移至/var/cache/apt/archivesbefore running do-release-upgrade

我还没有看过 user270294 的脚本,但听起来它的工作原理类似,并且可能还有更多功能。