如何在“do-release-upgrade”之后将 LXC 容器升级到 Wily?

如何在“do-release-upgrade”之后将 LXC 容器升级到 Wily?

我刚刚做了do-release-upgrade -m server一个

Linux boson 3.19.0-31-generic #36-Ubuntu SMP Wed Oct 7 15:04:02 UTC 2015 x86_64 Linux-3.19.0-31-generic-x86_64-with-Ubuntu-15.04-vivid

Linux boson 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 Linux-4.2.0-16-generic-x86_64-with-Ubuntu-15.10-wily

我曾想象 LXC 容器也会自动升级。然而,尽管uname -r返回4.2.0-16-generic确认内核在 Wily 上,但执行以下命令apt-get update显示容器仍指向 Vivid 存储库。

do-release-upgrade连接到容器时返回bash: do-release-upgrade: command not found

我该如何升级 LXC 容器?有可用的工具吗?

(我没有安装 X)

答案1

无法对@alfred 的回答发表评论,因此对于新的回答感到抱歉。

“必须连接到终端。”抱怨可以用命令解决:

exec >/dev/tty 2>/dev/tty </dev/tty

然后只需运行do-release-upgrade。

答案2

我也在谷歌上搜索了类似的问题,找到了你的问题。:) 在开始测试之前,我为容器创建了快照,以防我在尝试时破坏了某些东西。幸运的是,升级非常顺利。

我认为主机升级时容器不会自动升级。

我刚刚将我的 LXD 容器从 Wily 升级到 Xenial。下面是我正在做的事情。我认为 LXC 容器也会类似。

连接到容器控制台,您将成为 root 用户;并且由于您正在使用控制台,因此您不需要担心 ssh 服务:

$ lxc exec <container name> -- bash

首先升级你的软件包,特别是 apt:

# apt-get update
# apt-get dist-upgrade
# reboot (maybe not needed)

如果你没有“do-release-upgrade”:

# apt-get install ubuntu-release-upgrader-core

然后就可以开始升级了:

# do-release-upgrade -m server

如果“do-release-upgrade”提示“必须连接到终端”,我不知道为什么会发生这种情况,我认为这个容器基于 Ubuntu 云镜像。因此必须使用 ssh 连接和“sudo”。

答案3

如果我不想/不需要传递升级程序代码路径,我喜欢提到仅在 /etc/apt/sources.list 中替换发布名称的帖子。

但是如果我想/需要 do-release-upgrade 真正运行,我只需启用 ssh。可能有更简单的方法可以确保拥有合适的控制台,但它很容易并且有效。

要这样做

# go into the container
lxc exec <container> bash
# set PasswordAuthentication yes here
vim /etc/ssh/sshd_config
# restart containers ssh
service ssh restart
# set a pw of the default ubuntu user
passwd ubuntu
# exit container and get the container IP
lxc info <container>
# connect to it via ssh
ssh ubuntu@<ip>
# run do-release-upgrade as you want
do-release-upgrade

答案4

以下方法似乎对我有用:

$ sudo lxc-attach --name <container>

然后编辑/etc/apt/sources.list并替换所有出现的vividwily

接下来做:

# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
# apt-get autoclean
# apt-get autoremove
# reboot

重复此操作几次,直到所有包都更新完毕。

相关内容