Arch 上的 DEB 文件?使用此工具在任何 Linux 发行版上运行任何应用程序
一切无处不在,同时发生。
要点
- Distrobox 允许您在自己的计算机上运行来自不同 Linux 发行版的应用程序,同时仍保持它们隔离。
- 它将容器与主机集成,允许容器内的应用程序访问您的主目录并共享配置文件。
- Distrobox 使您能够安装和运行在您自己的发行版上可能难以找到或安装的应用程序。
您是否对应用程序对您首选发行版缺乏或滞后的支持感到沮丧?就像魔术一样,Distrobox 可以在您的 Linux 计算机上运行来自不同 Linux 发行版的应用程序。它们在您的计算机上运行,但它们位于自己的本机发行版中。我们向您展示它是如何工作的。
常规容器的问题
容器是虚拟机的一种形式。传统的虚拟机内部完整安装了操作系统。通常,它们也会有桌面环境,您可以像使用物理计算机一样使用它们。
另一方面,容器仅包含最少量的操作系统和工具来运行容器专用支持的程序。
由于容器比传统虚拟机轻量级且计算成本低,因此可以非常快速地启动并以编程方式进行控制。脚本可以控制它们的创建、使用、关闭和删除。这使得它们非常适合开发和测试环境,并为基于云的服务提供自动可扩展性。
就像虚拟机一样,容器内的应用程序与主机系统隔离。在大多数情况下,这是一件好事,但如果您想使用安装在容器内的程序,就好像它安装在您自己的物理计算机上一样,这将是一个阻碍。
Distrobox 有何不同
Distrobox 是一种创建和管理与主机集成的容器的方法。您可以在容器内运行出现在主机桌面上的程序。这些应用程序可以访问主机上的主目录,从而允许它们将文件保存在您的实际主目录中,而不是容器内。
它允许应用程序的两份副本(一份在物理计算机上,一份在容器中)共享主机的配置文件。例如,容器中的浏览器可以使用物理计算机上配置文件中存储的书签。
Distrobox 容器还受益于硬件直通。例如,如果插入 USB 设备,容器也可以看到它。
创建 Distrobox 容器时,您可以从多种 Linux 发行版中进行选择。由于您可以使用容器的包管理器将应用程序安装到容器中,因此您可以克服将包直接安装到您自己的计算机上时可能遇到的困难。
也许某个软件包在您选择的发行版上安装起来非常困难,或者您的存储库中的版本已经过时,或者根本不在存储库中。您也许能够找到该应用程序的 Flatpak,或者您可能很乐意从源代码构建它。
Distrobox 消除了痛苦,并为您提供了一种安装和运行难以找到或对您的发行版有问题的应用程序的方法。
如何安装 Distrobox
Distrobox 使用 Docker 或 Podman 作为底层容器管理系统。我们将使用 Docker。如果您的计算机上尚未安装 Docker,则需要安装它。
安装 Docker
Docker 在主要发行版的存储库中可用。要在 Ubuntu 上安装 Docker,请使用此命令。他们将“io”添加到包名称中,以将其与 Ubuntu 存储库中已使用名称“docker”的另一个应用程序区分开来。
sudo apt install docker.io
在 Fedora 上,命令是:
sudo dnf install docker
在 Manjaro 上您需要输入:
sudo pacman -S docker
在所有发行版上,您需要创建一个用户组并将自己添加到该组中。这允许您以无根方式使用 Docker,这比为 Docker 提供对系统的根访问权限更安全。
我们使用 groupadd 命令创建组。
sudo groupadd docker
Docker 可能已经为您创建了该组。如果是这种情况,您会被告知它已经存在。无论哪种方式,我们都需要使用 usermod 命令将您添加到该组中。
sudo usermod -aG docker $USER
您需要登录并退出才能激活您的群组成员资格。
安装Distrobox
安装 Distrobox 甚至比安装 docker 更容易。在 Ubuntu 上,使用的命令是:
sudo apt install distrobox
在 Fedora 上类型:
sudo dnf install distrobox
在 Manjaro 上,语法是:
sudo pacman -S distrobox
创建 Distrobox 容器
我们现在准备创建一个容器。此步骤需要图像文件。 Distrobox 命令为我们下载图像,因此我们需要知道图像所在的网址。
我们可以从 Distrobox 网站上的列表中选择我们想要使用的图像。该列表按发行版名称的字母顺序排列,从 AlmaLinux 开始,到 Void Linux 结束。
许多发行版都有多个版本。例如,Fedora 有版本 35、36、37、38 和 39,Fedora Rawhide 也可用。名称中添加“工具箱”的版本包含一组默认程序。那些没有“工具箱”的图像是轻量级图像。
我们将创建一个 Arch Linux 容器。复制要使用的图像的网址,并将其粘贴到以下命令中。
distrobox create -i quay.io/toolbx-images/archlinux-toolbox:latest -n "Arch-Db-1"
我们使用 Distrobox create 命令来创建容器。 -i(图像)选项告诉 Distrobox 使用哪个图像。 -n(名称)选项设置容器的名称。它还成为容器内虚拟计算机的主机名。
系统会提示您将图像下载到您的计算机。按 Y 并按 Enter 键。
我们尝试的所有下载速度都快得惊人。当您返回到命令提示符时,使用 Distrobox Enter 命令启动并进入我们新的 Arch Linux 容器。
distrobox enter Arch-Db-1
第一次启动容器时需要执行一些内务处理。在我们的测试机器上,这需要一两分钟。
当您返回到命令提示符时,请看一下它。它会显示您创建并输入的容器的名称。您现在位于 Arch Linux 容器内。
在主机上的容器内使用应用程序
为了证明这一点,我们将使用 Arch 包管理器 pacman 来安装 neofetch。
sudo pacman -S neofetch
运行 neofetch 显示我们位于 Arch Linux 的实例中,该实例在 VirtualBox 虚拟机上运行,我们知道该虚拟机正在运行 Ubuntu。
我们可以从 Arch 存储库或 AUR 在容器中安装任何应用程序,并在我们的主机上运行它们。
运行 ls 命令会显示 Ubuntu 主机的主目录。
我们在主机上创建了一个名为“MyUbuntuDocument.md”的文件,它在我们的容器内可见且可访问。
在主机上的容器内使用图形应用程序
让我们在 Arch 容器中安装并运行一个使用图形界面的应用程序。
sudo pacman -S opera
安装完成后,我们可以输入“opera”从 Arch Linux 命令提示符启动浏览器。但 Distrobox 允许我们从容器外部、从主机的命令提示符启动程序。
distrobox-enter -T -n Arch-Db-1 -- "opera"
-T(无 tty)选项禁止创建新的终端窗口。 -n(名称)命令告诉 Distrobox 在哪个容器中查找该命令。 “--”(参数结束)选项是一个标志,告诉 Distrobox 后面的所有内容都是应该启动的命令的一部分。
Opera 将启动并在您的桌面上运行,就像您已将其安装在主机上一样。
为了让生活更轻松,启动应用程序的命令可以保存为别名,或者放入主机上的桌面文件中。
很明显,启动的应用程序可以访问您的主机。通过查看主机上的“~/.config”目录,我们可以看到已经创建了一个“opera”目录。浏览器将其设置存储在 Ubuntu 主机上。
其他有用的命令
要退出容器,请输入“exit”并按“Enter”。
您将看到提示返回到您的主机的提示。但容器仍在运行。如果要关闭容器,请使用 stop 命令。
distrobox stop Arch-Db-1
您需要确认您确实想要停止容器。
要查看您创建的容器,请使用 list 命令。
distrobox list
颜色用于突出显示哪些容器正在运行,哪些没有运行。
您可以使用 distrobox rm 命令删除容器,就像删除一样。
distrobox rm OpenSuse-1
任何应用程序,任何发行版
因为您可以根据需要创建任意数量的容器,每个容器都可以包含不同的 Linux 发行版,并且每个容器可以包含任意数量的应用程序,因此排列是无穷无尽的。
不再有理由错过任何发行版的任何应用程序。