我是否可以进行仅发布升级的下载软件包以供以后升级?

我正在运行lubuntu 10.10,并希望升级到11.04。 我有一个非常不稳定的互联网连接,所以我想在运行安装之前下载所有软件包。

据此,没有简单的方法可以做到这一点。 该主题中提到的错误报告仍然是开放的。

我的问题:有没有办法破解执行 – 发布 – 升级只能下载软件包,有点像添加“-d”到apt-get dist-upgrade?

或者手动完成它是获得我想要的结果的唯一方法?

如果我必须手动完成,这些是执行此操作所需的步骤,还是我错过了什么?

  1. 禁用/etc/apt/sources.list/etc/apt/sources.list.d第三方存储库
  2. /etc/apt/sources.list存储库从maverick更改为natty
  3. 运行sudo apt-get update
  4. 运行sudo apt-get -d dist-upgrade只下载软件包。 在下载所有软件包之前,请根据需要多次执行此操作。
  5. 运行sudo apt-get dist-upgrade以完成升级过程

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

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

我写了一个脚本来做这个,因为我自己将多台机器升级到Ubuntu 14.04“可靠”。 它被称为’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 ] 

该脚本位于:

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

和版本1.0有sha1sum:87a466b2bb2d1ac5b0a08509246a450b8d1c7617

在幕后它基本上运行apt-get update; apt-get -d dist-upgrade apt-get update; apt-get -d dist-upgrade及其自己的一组sources.list文件。 结果存储在/ var / cache / apt- $ to_rel / archives中,’ – U’标志将这些副本复制到系统范围的/ var / cache / apt / archives中,以便它们在升级期间出现。

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

反馈意见; 电子邮件cc赞赏,因为我不知道我什么时候下一次看看askubuntu。 搜索引擎很清楚我。

注意:我实际上没有对如此处理的系统进行升级! 下周有一段时间。 获取此脚本虽然它可能对人们有用。

>贝拉<

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

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

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

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

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

我还为此编写了一个脚本,您可以在其中找到

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

用法:在临时目录中运行

  ./fetch-release-upgrade.sh trusty 

或者您要升级到的任何新版本。 必要的包将被下载到名为debs的子目录中。 然后,您可以在运行do-release-upgrade之前将它们移动到/var/cache/apt/archives

我还没有看过user270294的脚本,但它听起来像是在类似的行上工作,可能还有一些function。

以下稍微缩短版的Menachem的答案对我有用:

  1. 在一个终端窗口中运行sudo do-release-upgrade ,等到提示符:

     Do you want to start the upgrade? ... Fetching and installing the upgrade can take several hours. Once the download has finished, the process cannot be canceled. Continue [yN] Details [d] 

    不要确认,保持打开状态

  2. 在第二个终端窗口中,运行sudo apt-get dist-upgrade --download-only

  3. 完成后,在第一个终端窗口中继续或中途休闲

专业提示:安装终端多路复用器,如screen并在其中运行do-release-upgrade 。 然后,如果显示升级过程的终端发生任何事情,您可以重新连接screen -D -RR 。 (幸运的是,我今天的升级几乎已经完成……)

免责声明:我以前从未这样做过。 这可能是一个可怕的想法。 它可能会破坏一切,清空您的银行账户并逃往西class牙南部。 与任何有潜在危险的事情一样,在做任何事情之前进行备份


我不确定你安装了多少东西,所以这可能是一个有缺陷的解决方案,但你可以从CD升级。 下载Alternate iso,安装它,然后运行升级脚本。

 wget -c http://releases.ubuntu.com/11.04/ubuntu-11.04-alternate-amd64.iso 

在我继续之前,你不必使用wget来获取图像。 Bittorrent将与标准下载管理器一样运行良好。 重要的是你想要恢复的东西,所以你可以停止下载并在其他时间拿起它。 这就是wget-c标志会做的事情。

获得ISO后,下一步非常简单:

 sudo mount -o loop ubuntu-11.04-alternate-amd64.iso /media/cdrom sudo sh /media/cdrom/cdromupgrade 

我谈到的缺陷是这只会升级CD中包含的Ubuntu不可或缺的东西。 它不会升级您的其他包。

理论上这应该没问题。 您可能会发现某些应用程序中断,某些应用程序可能会被更新程序强行删除,但核心操作系统应保持稳定。

如果我的理论是正确的,那么这将允许您使用当您想要通过Synaptic或(如果您安装) aptitude时使用其他软件包升级。