我可以进行无提示或无人值守的版本升级吗?

如何在不必对提示作出反应的情况下升级到新的Ubuntu版本?

我现在在12.04,想安装12.10。 当我开始更新时,它通常会下载内容,然后提出问题,安装一下,提出问题等等。我将它留在一夜之间,有时会发现它几乎没有进展更新。 我想开始这个过程,离开并在几个小时后完成它。 我很好用它自动更新/ etc中的配置文件等等。 那么如何开始无人值守的升级呢?

以下命令在没有提示的情况下升级到新的稳定版本:

do-release-upgrade -f DistUpgradeViewNonInteractive 

以下命令在没有提示的情况下升级到当前开发版本:

 do-release-upgrade -d -f DistUpgradeViewNonInteractive 

我还没有对它进行测试,但它似乎只是在出现问题时执行默认操作。 如果任何脚本挂起太长时间,它也会超时。

如果您对某些软件包的配置不满意,您可能必须在之后使用dpkg-reconfigure ,但大多数情况下您应该没问题。

资料来源: http : //awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ 。 在链接中还有其他方法可以做到这一点。

只是为了扩展之前的答案,这里是如何远程执行相同的接受答案,使用ssh无密码升级,将您的盒子升级到最新版本。 它是从我自己的博客条目中复制的。

所有这些步骤都假设您的包存储库正在运行。 这意味着如果你执行apt-get update,由于版本过时,你不会看到很多404。 你需要先修复它,所以请看这个答案 。

0.更新所有现有包

 sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 

1.设置无密码执行

将自己添加到可以执行do-release-upgrade的用户列表中,无需输入密码即可通过执行来实现

 sudo visudo -f /etc/sudoers.d/do-release-upgrade. 

并添加以下行,当然替换my-username为您自己:

 my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade 

2.开始增量升级

从计算机注销并执行以下命令。 它将在不提示您输入(接受所有默认答案)的情况下进行升级,等待计算机重新启动,然后再次尝试升级。 它会一直运行,直到您升级到最新版本。

 while true; do ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive; sleep 120; done 

3.将配置文件修复为先前的状态

之后,您必须将备份的配置文件移动到之前的位置,因为升级过程已将默认配置放在其位置。

不满意默认答案?

这个人有办法为每个提示准备答案 ,但缺点是你必须知道有多少提示……

您可以通过终端使用sudo apt-get -y upgrade来完成此操作。 这将对所有提示回答“是”。 但它不会自动运行,因此您必须运行它。 它应该工作。 AFAIK无法使用GUI更新管理器对软件进行无人值守升级( 这与版本升级不同!

如果您尝试升级到不同的Ubuntu版本(也就是发布升级 ,通常是相对于您的Ubuntu版本的发行版中的下一个版本),则必须手动激活它。 sudo do-release-upgrade可能有效。 但是没有办法跳过过去的提示。 这就是为什么当你要出现这种提示时启动升级的原因 – 会有提示。

为了确认do-release-upgrade -d -f DistUpgradeViewNonInteractive在他的答案中陈述什么,并与接受的答案相矛盾, do-release-upgrade -d -f DistUpgradeViewNonInteractive

事实上,在第一次提示它打破了我的16.04到18.04测试分区,我不得不重新审视它。 这是脚本冻结的地方:

 Setting up mount (2.31.1-0.4ubuntu3) ... Setting up systemd (237-3ubuntu10) ... Installing new version of config file /etc/pam.d/systemd-user ... Installing new version of config file /etc/systemd/journald.conf ... Configuration file '/etc/systemd/logind.conf' ==> Modified (by you or by a script) since installation. ==> Package distributor has shipped an updated version. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : start a shell to examine the situation The default action is to keep your current version. *** logind.conf (Y/I/N/O/D/Z) [default=N] ? y Y CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION... 

由于输入禁止,在终止脚本后,重启或关闭都不起作用。 你必须做一个冷关机(按住电源按钮~10秒)。

谢天谢地,这是16.04克隆升级而不是真正的16.04分区。


为了让生活变得更有趣,我的NVMe SSD中添加了一个新的898 MB分区,我的常规分区发生了变化:

 $ lsdrv NAME FSTYPE LABEL MOUNTPOINT SIZE MODEL nvme0n1 477G Samsung SSD 960 PRO 512G ├─nvme0n1p5 ntfs 858M ├─nvme0n1p3 16M ├─nvme0n1p1 ntfs 450M ├─nvme0n1p8 ntfs Shared_WSL+Linux /mnt/e 9G ├─nvme0n1p6 ext4 Ubuntu18.04 23.7G ├─nvme0n1p4 ntfs NVMe_Win10 /mnt/c 390.4G ├─nvme0n1p2 vfat /boot/efi 99M ├─nvme0n1p9 swap Linux Swap [SWAP] 7.9G └─nvme0n1p7 ext4 NVMe_Ubuntu_16.0 / 44.6G 
  • nvme0n1p5曾经是我的Ubuntu 16.04分区所在的位置,但现在它在nvme0n1p7
  • nvme0n1p8曾经是我的18.04测试分区所在的位置,但现在它在nvme0n1p8

注意:我今天下午还将Windows 10从Build 1709升级到Build 1803,因此有可能它以ntfs格式创建了新的898 MB nvme0n1p5分区。

尝试将-y选项添加到apt-get但要知道它将回答所有查询。