[Exchange and share] 使用 Distrobox 在 v23 轻松安装你想要的软件包
Tofloor
poster avatar
BLumia
deepin
2023-06-06 23:31
Author

deepin v23 起,deepin 发行版仓库中的所有软件包就均由 deepin 社区中维护软件包的贡献者们一同维护了,即所谓的“根发行版”或者说“根社区”。这对广大普通用户意味着两件事:

  1. 直接从 Debian 软件包仓库下载并安装软件包会有更大概率搞坏 deepin 系统
  2. 仅为 Debian 或 Ubuntu 等 deb 系发行版适配的第三方应用更大概率无法直接在 deepin 上使用了

其实即便 v23 之前,我们也是从不推荐用户混源的,同是 deb 系的不同发行版的混源仿佛是个非常常见的错误用法。但想必大家都知道,对于用户而言,应用软件生态是一个对使用体验而言至关重要的事。那么,假如我就是想使用这些为 Debian 或者 Ubuntu 适配的软件(无论开源或者闭源),有什么解决办法吗?

Distrobox 登场

对于 Windows 用户而言,可能很大概率会听说过 WSL,这个可以使自己在 Windows 下运行一个 Linux 子系统,以及运行其中的图形界面应用。另外想必大家肯定多少有听说过 docker 等容器化方案,能让你在自己的系统中运行轻量化的容器环境,在其中运行你所需要的工具。那么能不能在 Linux 中,使用类似 docker 的技术,在 deepin v23 中运行一个发行版容器,并使得你可以使用这个发行版的环境以及其中的应用呢?

显然你没猜错,Distrobox 就是这样的工具!实际上,Distrobox 是一个 Podman/Docker 的 wrapper 脚本,它帮助你能够快速创建并启动一个 Linux 发行版环境的容器,并帮你做好这个容器与系统的集成,使你可以方便的访问主系统以及容器内的文件与网络、使用这个容器内的图形应用等。当然,这些技术细节你都不需要了解,简而言之,你可以使用 distrobox 工具来轻松在 deepin v23 下安装包括 Debian 与 Ubuntu 在内的其它发行版作为“子系统”,并在其环境内安装与使用这些发行版所提供的软件包与工具。

那么,如何使用 Distrobox 呢?

Distrobox 在 deepin v23 下的安装

distrobox 软件包本身已经在 deepin v23 仓库中默认提供了,你只需通过下述命令安装即可:

$ sudo apt install distrobox

安装后,就可以使用 distrobox 命令了。

假定我们需要安装一个 Ubuntu “子系统”,那么,接下来,我们可以如此创建它:

# 创建一个名为 ubuntu 的“子系统”,使用 docker hub 上的 ubuntu 22.04 作为基础镜像
$ distrobox create ubuntu --image docker.io/library/ubuntu:22.04

当然,创建只需要进行一次,创建过程即会自动从网络拉取相关的容器镜像,然后帮你创建好本地对应的容器环境了。创建完毕之后,你就可以通过下面的命令来进入容器了:

# 进入名为 ubuntu 的“子系统”
$ distrobox enter ubuntu

首次进入这个环境时,会需要一个初始化的过程,帮你安装一些软件包并进行一些配置,以便后续可以更方便的使用,所以会比较慢。初始化完毕后就进入对应的环境了,我们会注意到终端的提示符中,主机名称发生了变化,标志着我们已经进入了这个“子系统”环境。

若要退出这个环境,您只需 exit 即可,然后你可以再次通过 distrobox enter ubuntu 进入这个环境就可以了。

进入 Distrobox 的“子系统”内后,你会发现你仍然可以像使用宿主系统一样轻松访问网络以及自己用户目录下的文件,以及启动“子系统”内的图形应用了。这时候,(假定你在按照上述步骤使用 Ubuntu “子系统”)你可以使用 aptsnap 安装 Ubuntu 的软件包,以及安装专为 Ubuntu 所提供的 deb 二进制包,而完全不必担心会影响到你的宿主 deepin 系统的稳定性了。

我能创建什么“子系统”

正如之前所提到,Distrobox 不仅仅能运行 Ubuntu 子系统,你还可以通过它来安装包括 Debian、Arch Linux、Fedora、openSUSE 等“子系统”!这样,对于喜欢追新的用户也可以安装 Arch Linux 或 Fedora 并使用其中的软件包。希望体验其它发行版环境也可以装来试试。关于 distrobox 所支持的完整的兼容列表,可以参见官方给出的这个列表:

https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros

另外,尽管这个列表上(目前还)没有 deepin,但 (再编辑:现在已经有了)如果你希望的话,其实也是可以创建一个 deepin “子系统”的。事实上,deepin v23 所提供的 deepin v20 兼容方案(DCM)正是基于 Distrobox 的。如果你不是 deepin 用户而希望运行一个 deepin 的“子系统”来体验的话,假定你想体验 deepin v20,则可以通过 distrobox create deepin-v20 --image docker.io/linuxdeepin/apricot 来创建对应的“子系统”了。

最后

于是这次关于 distrobox 的介绍就到此结束了。如果你对其有所了解后想要更深入的使用它,例如如何为“子系统”里的应用创建快捷方式等进阶用法,可以阅读 distrobox 的官方文档了解更多高级用法。

这篇文章希望能向大家介绍 distrobox 的用法,因而避免因 v23 源内“缺包”导致的盲目去其它发行版仓库内下包以及混源的不恰当做法。当然,如果 distrobox 无法解决你的问题(例如你需要安装某个驱动包,无法装到容器内使用),那么请你及时在论坛、 Matrix 或 GitHub 进行反馈,以便贡献者们可以进行打包。另外,如果你希望参与 deepin 发行版软件包的维护的话,也欢迎加入我们的相关 SIG,并进行软件包的递交与维护哦~

最后祝各位玩的愉快 :)

Reply Favorite View the author
All Replies
1 / 2
To page
阿尼樱奈奈
Moderator
2023-06-06 23:47
#1

like

Reply View the author
青稚
deepin
2023-06-06 23:58
#2

研发动用特权,去找运营给你加精,别逼我替你去。like

Reply View the author
hanzn-zzx
deepin
2023-06-07 00:12
#3

like

这个就是官方dcm的思路(只不过dcm跑的是deepin20罢了)joy

Reply View the author
晚秋(lateautumn)
Moderator
2023-06-07 01:50
#4

谢谢分享,可以加精的分享joy

Reply View the author
三好市民
deepin
2023-06-07 02:20
#5

我好奇想问一下,这个跟Virtualbox、VMware Workstation是不是同样的原理,哪个技术更先进?

Reply View the author
enforcee
deepin
2023-06-07 03:46
#6
三好市民

我好奇想问一下,这个跟Virtualbox、VMware Workstation是不是同样的原理,哪个技术更先进?

不是,你说的那个属于hypervisor,楼主这个属于container。区别在于hypervisor共用硬件平台运行操作系统,container共用内核运行用户空间

Reply View the author
ThinkYoung
deepin
2023-06-07 04:00
#7
It has been deleted!
pzm9012
Moderator
2023-06-07 04:39
#8

“以便后续可以更方面的使用”→“方便”

Reply View the author
Comments
BLumia
2023-06-07 18:45
已修正,感谢 :)
rabbitwq
deepin
2023-06-07 07:13
#9

我现在用docker在运行一些程序,比如微信的一个docker的版本,按照我的理解,docker的容器是个应用程序的容器,而distrobox是系统的容器。那在里面装微信之类的,是不是运行起来很吃内存,运行步骤也会比较复杂?请教一下。

Reply View the author
BLumia
deepin
2023-06-07 18:48
#10
rabbitwq

我现在用docker在运行一些程序,比如微信的一个docker的版本,按照我的理解,docker的容器是个应用程序的容器,而distrobox是系统的容器。那在里面装微信之类的,是不是运行起来很吃内存,运行步骤也会比较复杂?请教一下。

不会有太大差异。distrobox 实际上是一堆 wrapper script,实际底层仍然是 docker 或者 podman 容器。distrobox 只是帮你做了一些配置让你体验到与系统本身更好的集成。它肯定不会像虚拟机那样耗费性能。

Reply View the author
donaldsebleung
deepin
2023-06-07 20:46
#11

感谢分享,这个必须支持kissing_heart

Reply View the author
追梦空间
deepin
2023-06-14 04:32
#12

有空研究研究,看看能不能不重装系统可以白~嫖中望cad📸

Reply View the author
Ruyisi
deepin
2023-06-14 23:00
#13

我还是没搞懂怎么用Docker

Reply View the author
BLumia
deepin
2023-06-16 18:09
#14
Ruyisi

我还是没搞懂怎么用Docker

它是个较上层的 wrapper,其实如果你完全按上面写的(或者 distrobox 文档写的)操作的话,你是不需要直接接触 docker/podman 的。

Reply View the author
清阳
deepin
2023-07-06 07:46
#15

简简单单的吧,字多了看的都觉得麻烦,

Reply View the author
星语我梦
deepin
2023-07-26 08:04
#16

distrobox-host-exec报错怎么办?

报这个错

The name org.freedesktop.Flatpak was not provided by any .service files

Reply View the author
dgmenghuan
deepin
2023-09-12 17:47
#17

啥时候v23集成进系统了再说,呵呵

Reply View the author
BLumia
deepin
2023-09-13 22:50
#18
dgmenghuan

啥时候v23集成进系统了再说,呵呵

啊?这篇文章是写给在体验 v23 并且觉得 v23 应用少的用户的呀,并且文章本身也适用于任何版本甚至其它发行版的用户。v23 的系统集成和这篇文章有什么关系吗?你想表达的问题点是什么((

Reply View the author
BLumia
deepin
2023-09-13 22:51
#19
星语我梦

distrobox-host-exec报错怎么办?

报这个错

The name org.freedesktop.Flatpak was not provided by any .service files

你给的信息不够详细,host-exec 和 flatpak 没有什么相关性的,得看你在尝试执行什么。

Reply View the author
fax928
deepin
2023-09-13 23:13
#20

like大致能够理解,有机会的话试一试。不同系统测试deb包可以用这个方法感觉。like

Reply View the author
1 / 2
To page