在 Deepin 20.9 上构建 DragonOS

在 deepin 20.9 上根据 DragonOS 构建文档 的 bootstrap.sh 的方式来构建 DragonOS 时,如果没有事先安装 Qemu 会出现 KVM 相关的依赖问题。本文记录解决这一问题的过程。

如果事先没有安装 Qemu,在使用 bootstrap.sh 时会出现如下报错:

$ bash bootstrap.sh
...
下列软件包有未满足的依赖关系:
qemu-kvm : 依赖: qemu-system-x86
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

查询 deepin 论坛上的相关内容:qemu-kvm无法安装,可以得知是因为 qemu-kvm 在 debian 发行版上只是一个虚包 (Virtual package),所以对于 x86 架构的机器可以直接安装 qemu-systerm-x86

安装 qemu-systerm-x86:

$ sudo apt install qemu-systerm-x86
$
$ qemu-system-x86_64 --version
QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-11+deb11u1)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers

安装的 qemu 版本看起来有点低,但是先使用 bootstrap.sh 快速安装其它依赖项,然后尝试编译运行一下 DragonOS:

$ bash bootstrap.sh
...
|-----------Congratulations!---------------|
|                                          |
|   你成功安装了DragonOS所需的依赖项!          |
|                                          |
|   请关闭当前终端, 并重新打开一个终端          |
|   然后通过以下命令运行:                     |
|                                          |
|                make run                  |
|                                          |
|------------------------------------------|

新开一个终端或刷新一下 ~/.bashrc

$ cd DragonOS
$ make run

Ok 可以成功运行

1 个赞

神奇,我记得之前那脚本有写这个qemu-system-x86的,但是ubuntu上面会自动装这个x86的,我就删掉了这个。没想到deepin上面跑不了

Debian 发行版上好像都跑不了,包更新后 qemu-kvm 在 Debian 上都是 Virtual package,直接下载就提示依赖冲突,只能手动下载了 :rofl:

那难不成比如qemu-system-riscv64也是要单独装得?

qemu-systerm-riscv64 在 stable 的 debian 包里是不包含的,目前仅在 sid 上引入

可以将 apt 源换成 sid 来安装。Debian 的官方说明:

不过换源操作比较危险,并不建议。查阅 debian 的包管理,发现 qemu-system-riscv64 是包括在 qemu-system-misc 这一包里的,所以也可以通过 apt 来安装:

$ sudo apt install qemu-system-misc
1 个赞

感觉bootstrap脚本可以尝试检测一下是否为debian,如果是的话,就自动安装一下。

可以发个PR 哈哈哈

不好复现啊 :upside_down_face: 整挂几次系统后,变成 gcc-x86 的依赖问题了…
建议直接使用 Ubuntu 22.04LTS 平推省事 :rofl:

1 个赞

难蚌,我记得当初我换Ubuntu就是因为deepin总是apt upgrade整挂系统。

当时deepin如果系统更新那里提示说软件有更新,就不能够执行APT upgrade,否则就会导致有的软件更了一半,但是呢,底层依赖的没更新。然后系统一重启就挂了,我大二的时候,因为这个问题整挂了两次,后面专门复现了一遍,发现确实是这样。可能是deep in的那个deb的依赖没写好。

额……我是用deepin的
最近deepin官方好像说是要用apt dist-upgrade才能升级系统……
一直都在坑里

1 个赞