AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1527552
Accepted
Youkko
Youkko
Asked: 2024-09-21 09:20:51 +0800 CST2024-09-21 09:20:51 +0800 CST 2024-09-21 09:20:51 +0800 CST

在 do-release-upgrade(从 20.04.6 到 22.04.5)之前运行 apt dist-upgrade 会破坏 Digital Ocean 的虚拟机

  • 772

我正在尝试使用 do-release-upgrade 将 Digital Ocean 的 ubuntu VM 从 20.04.6 升级到 22.04.5。我通过 SSH 连接。

不幸的是,这不是直接的,它要求我在升级之前安装所有可用的更新。

在开始之前,我创建了一个快照,以便在出现任何问题时快速恢复。

按照论坛上的说明操作时,系统建议我运行sudo apt full-upgrade。运行并重新启动后,机器拒绝连接(这意味着它进入了无法启动的状态)。它甚至无法从 Digital Ocean 控制面板内的控制台进行连接,更不用说通过 SSH 了。

恢复快照后,我尝试按照这篇文章中的说明进行操作。运行后sudo apt-get dist-upgrade,重新启动后出现了同样的问题。

尝试sudo do-release-upgrade在不重新启动的情况下运行将会下载并安装升级,但最终机器仍然无法启动。

那么,我这里遗漏了什么?有什么提示吗?

[更新]

我能够通过手动运行sudo apt list --upgradable并安装所有必需的更新sudo apt-get install,并在autoremove必要时应用。现在我的系统已完全升级。但在运行时sudo do-release-upgrade,在完成漫长的升级过程后,系统变得无法启动。我甚至尝试关闭 droplet 并再次打开它,但没有成功使其联机。我将恢复快照并尝试进一步调查。

upgrade
  • 1 1 个回答
  • 44 Views

1 个回答

  • Voted
  1. Best Answer
    Youkko
    2024-09-21T15:25:48+08:002024-09-21T15:25:48+08:00

    经过几个小时的研究,我终于找到了罪魁祸首和解决方案。升级中的问题是 22.04 使用 netplan,但 20.04 droplet 没有任何 netplan 配置文件(至少我的没有)。因此,重新启动后,无法访问机器,因为它的网络配置消失了。

    为了解决这个问题,运行sudo do-release-upgrade完成后,在要求重新启动时回答 NO。然后通过运行获取您的网络信息:

    • ip a检索地址
      • 预期输出类似于:
      1:lo:mtu 65536 qdisc 无队列状态未知组默认 qlen 1000
        链路/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 范围主机 lo
           valid_lft 永远 preferred_lft 永远
        inet6 ::1/128 范围主机
           valid_lft 永远 preferred_lft 永远
      2:eth0:mtu 1500 qdisc fq_codel 状态 UP 组默认 qlen 1000
        链接/以太 aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
        inet xxx.xxx.xxx.xxx/xx brd ***.***.***.*** 范围全局 eth0
           valid_lft 永远 preferred_lft 永远
        inet yyy.yyy.yyy.yyy/yy brd ***.***.***.*** 范围全局 eth0
           valid_lft 永远 preferred_lft 永远
        inet6 zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz/zz 全局范围
           valid_lft 永远 preferred_lft 永远
        inet6 aaaa:bbbb:cccc:dddd:eeee:ffff/af 范围链接
           valid_lft 永远 preferred_lft 永远
      
    • ip r检索路线
      • 预期输出类似于:
      默认通过 ccc.ccc.ccc.ccc dev eth0 proto static
      ddd.ddd.ddd.ddd/dd dev eth0 proto 内核范围链接 src yyy.yyy.yyy.yyy
      eee.eee.eee.eee/ee dev eth0 proto 内核范围链接 src xxx.xxx.xxx.xxx
      
    • cat /etc/resolv.conf获取名称服务器配置。
      名称服务器 nnn.nnn.nnn.nnn
      选项 edns0 trust-ad
      搜索 。
      

    记下这些输出,并通过运行sudo nano /etc/netplan/config.yaml和写入以下内容来创建 netplan 配置文件,用之前记下的相应条目替换它们(为了方便起见,我用字母更改了输出的值,以便您可以看到哪个条目应该放在哪里):

    网络:
      版本:2
      以太网:
        eth0:
          地址:
          - xxx.xxx.xxx.xxx/xx
          - zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz/zz
          - yyy.yyy.yyy.yyy/yy
          路线:
          - 至:默认
            通过:ccc.ccc.ccc.ccc
          - 至:默认
            通过: zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz
          匹配:
            mac地址:aa:aa:aa:aa:aa:aa
          名称服务器:
            地址:
            - nnn.nnn.nnn.nnn
            - 2001:4860:4860::8844
            -2001:4860:4860::8888
            - 8.8.8.8
          设置名称:eth0
    

    另外,请注意 yaml 内容缩进应与上面完全匹配,否则会出错。

    使用 更改新创建的文件的权限sudo chmod 600 /etc/netplan/config.yaml。

    现在,运行sudo netplan --debug generate。如果您收到类似WARNING:root:Cannot call Open vSwitch:ovsdb-server.service is not running. 的消息,您可以通过运行 来解决这个问题sudo apt-get install openvswitch-switch-dpdk,但我认为您可以忽略该消息。我没有这样做,以防万一。

    最后,运行sudo netplan apply并重启。请注意,如果您设置了任何 SSH 密钥,则需要重新配置它们,因为签名将被更改。

    请注意,如果您转到/etc/netplan/文件夹,您会注意到那里已经有一个名为50-cloud-init.yaml的文件。不要像我一样使用上面的内容编辑该文件,因为此文件的内容在重新启动后不会保留并且会自动生成,我发现当我被锁定在 droplet 之外时,必须通过 Digital Ocean 控制面板的恢复控制台访问它来创建 config.yaml 等。

    我真的希望这能帮助那些陷入困境的人,并且希望这可以让你免去数小时的研究和头痛。

    • 1

相关问题

  • 在自定义安装以维护升级路径时,应遵循哪些准则?

  • 使用 apt-get upgrade 时如何强制安装内核更新?

  • 从 8.04 LTS 升级到 10.04 LTS 的体验?

  • 分销升级的合理途径

  • 在不使用标准升级系统的情况下升级有哪些替代方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve