Distrobox:通过终端尝试多个 Linux 发行版

Distrobox 是一个软件工具,可让您在终端内运行任何 Linux 发行版。

它旨在让您在主机分发之上运行各种软件而没有任何麻烦。

例如,——是否有任何东西只在 AUR 中可用并且你想从你的 Ubuntu 系统中访问它? Distrobox 可以为您带来这种舒适感。

那么,Distrobox 到底是什么?

Distrobox 是一个包装器 podman 或者 docker (无论你喜欢什么)。 Distrobox 存在的原因是将容器集成到您的系统中,就好像它是本机软件一样。

它集成的一些东西是可移动设备(USB 存储设备)、D-Bus、用户的 $HOME 目录、Wayland 和 X11 套接字等等!

长话短说

Distrobox 是一种让容器化软件像原生应用程序一样集成的方法,即使该容器化软件完全属于不同的发行版。

最好的一点是,您无需 root 权限即可构建开发环境。

您不必仅仅因为软件兼容性问题而更改主机分发。 你可以继续使用你喜欢的东西,并使用 Distrobox 来填补使用任何其他 Linux 发行版的向后/向前软件兼容性的空白。

发行盒的特点

既然您对 Distrobox 有了一个想法,那么它可以让您整体做什么? 这些功能对您的用例有用吗?

让我提一下 Distrobox 的主要亮点:

  • 能够在不影响主机分发的情况下创建测试环境以进行更改。
  • 一个不需要的开发环境 sudo 特权可以灵活地为您的工作。 例如,如果您有一台工作笔记本电脑,那么无 sudoless 设置可以帮助您。
  • 管理多个环境的简单方法。
  • 支持多种发行版。

如何安装 Distrobox?

安装 Distrobox 有一个先决条件。 也就是说,你必须有 podman 或者 docker 安装。 如果你有一个相对现代的 Linux 发行版,我建议安装 podman 从您的软件存储库中。 否则,安装 docker 并按照下面提到的步骤。

在撰写本文时,Distrobox 在以下存储库中可用:

  • Arch Linux (AUR)
  • EPEL 8 及更高版本
  • Fedora 34 岁及以后
  • Ubuntu 22.10 及更高版本

您可能已经注意到,可供广大公众使用的最新版本的 Ubuntu 是 Ubuntu 22.04。 还没有多少发行版打包了 Distrobox……

如果在存储库中找不到它,可以运行以下命令来安装 Distrobox:

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

上面的命令将下载一个 shell 脚本并以超级用户权限运行它。 如果您无法自己验证源代码,下面是您可以使用的命令,而不必担心将超级用户权限授予未知脚本。

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local

现在您已经安装了 Distrobox,让我们继续使用它的几个示例。

开始使用 Distrobox

在你的工具箱里有一把螺丝刀但从不使用不会提高你的手艺。 因此,让我们回顾一下要使用的一些基本命令 发行盒,他们做什么等等。

此外,如果你好奇,你可以看看这个尝试过 Distrobox 的 YouTube 用户的视频 Fedora 银蓝:


1.创建一个新容器

在这种情况下,“容器”不是指像 nextcloud、syncthing 等容器化软件,而是指操作系统本身。

创建新容器的语法如下:

distrobox-create --name CONTAINER-NAME --image OS-NAME:VERSION

在这里,您可以通过 (CONTAINER-NAME) 指定您希望为容器寻址的名称、您要使用的操作系统名称 (OS-NAME) 及其版本 (VERSION)。

让我们看看如何创建一个新的容器 Fedora 36 名称为 ‘费多拉瀑布‘。 我将使用以下命令执行此操作:

distrobox-create --name fedoraonfoss --image fedora:36

如果您想要任何操作系统的最新版本,您也可以将“36”替换为“最新”。

此命令只需要一点时间即可下载容器映像 Fedora 36.

该过程完成后,您将收到一条消息,让您知道容器已创建。

2.启动并进入容器

如果我们不启动它并访问它的 shell,那么一个 OS 容器是没有用的。

为此,请使用 ‘发行盒进入‘ 命令。 语法如下:

distrobox-enter CONTAINER-NAME

当您第一次启动容器时,Distrobox 会进行自动初始设置,安装一些容器,设置挂载、主题、图标、字体、组、用户等。

根据您计算机的处理能力,这可能需要相当长的时间。 首次开机时请耐心等待约 15 分钟。

完成后,您将自动掉入容器的外壳中。

如果你仔细看,以前,当我运行命令“distrobox-enter”时,提示符上显示的主机名是“itsfoss”。 完成初始设置后,现在我在一个具有不同主机名的 shell 中,即“fedoraonfoss”。

让我们还检查“/etc/os-release”文件中的版本。

3.安装软件

如果你已经到了这个阶段,这相当于全新安装 Fedora 在您的计算机和操作系统刚刚启动。

就像虚拟机一样,我们主机上的操作系统并不重要。 我们必须使用来宾操作系统提供的包管理器。 因此,我将使用 DNF 包管理器 Fedora 36.

我的主机操作系统 Ubuntu 22.04 LTS 没有 [yet] 在第一方存储库中有 Foliate。 但 Fedora 36 在第一方存储库中有 Foliate。 这样,我可以轻松地将 Foliate 作为本机软件安装,而无需使用大量虚拟化。

所以,让我们安装 Foliate,因为它在 Fedora的存储库,但不在 Ubuntu 的存储库中。

我将运行以下命令(在容器外壳内)来安装 Foliate:

sudo dnf install foliate.noarch

在 dnf 完成 Foliate 安装后,我还将运行以下命令(在容器外壳中):

distrobox- --app foliate

当你运行’发行盒出口‘ 来自容器的命令,它将使指定的软件也可用于主机操作系统。 这意味着,即使 Foliate 安装在 Fedora 容器,我将能够在 Ubuntu 的应用程序菜单中看到它。

如您所见,我在 Ubuntu 的应用程序菜单中显示了 Foliate,即使它安装在 Fedora 36个集装箱。

这不是很神奇吗?

4. Distrobox 应用程序的集成

出于演示的目的,我下载了 Linux 命令行 PDF 书,由 William Shotts 撰写。 它保存在我的文档目录中。

让我们看看一个为完全不同的操作系统打包的容器化软件是否会对从轻模式切换到暗模式等变化做出反应。

它可以看到我的“~/Documents”目录吗?

如您所见,主题更改被正确检测到,即使顶部栏也有正确的图标 close 按钮和汉堡菜单。

最重要的是,我不需要将我的 epub 文件复制到其他任何地方。 我的“~/Documents”目录也被正确拾取。

就像原生应用程序一样!

5. 管理 Distrobox 镜像

Distobox 提供了一些可用于管理 Distrobox 图像的命令。

第一个命令是’发行箱列表‘。 从名称可以看出,它列出了所有已安装的容器。

因为我只有一个容器,所以只有“fedoraonfoss”出现了,尽管它在几分钟前就退出了。

第二个命令是’发行盒停止‘。 该命令用于停止正在运行的容器。

下面是语法:

distrobox stop CONTAINER-NAME

最后,要删除任何 Distrobox 容器,请使用“distrobox rm”命令。 语法如下:

distrobox rm CONTAINER-NAME

要探索更多技术细节,请访问其 GitHub页面.

结论

Distrobox 是一个很棒的工具,它允许您将操作系统安装为一个简单的 podman/docker 容器,并将它们用作一个成熟的操作系统。

使用 Distrobox,您几乎可以安装任何软件,即使它在您的发行版存储库中不可用,或者即使它没有为您的 Linux 发行版打包。 这有多大用处?

Distrobox 可以有各种用例。 你认为你会用它做什么? 在下面的评论部分分享您的想法。