使用 Darling 在 Linux 上运行 MacOS 软件

我们有 葡萄酒,一个免费的开源兼容层,可帮助我们在 Linux 和类 Unix 操作系统上安装和运行为 Windows 开发的应用程序和游戏。 我们还有一个名为的模拟器 DOS框 在 Linux 中运行古老的 MS-DOS 游戏和不复存在的 C++ 编译器,如 Turbo C++。 macOS 软件呢? 你有没有想过如何在 Linux 下运行专门针对 mac 的应用程序? 这就是我们现在要做的。 本指南解释了如何在 Linux 操作系统上运行 macOS 软件使用 亲爱的 运行环境。

内容

  1. 什么是亲爱的?
  2. 在 Ubuntu Linux 中安装 Darling
  3. 使用 Darling 在 Linux 上运行 MacOS 软件
    1. 亲爱的文件系统布局
    2. 您目前可以使用 Darling 执行的操作列表
    3. 终止亲爱的
  4. 结论

什么是亲爱的?

Darling 是一个翻译层,它允许我们在 Linux 上运行 macOS 应用程序。 它模拟了一个完整的 达尔文 环境,包括 Mach、dyld、launchd 以及您期望的一切。 它让您可以立即切换到 Bash shell 并开始在您的 Linux 系统中运行为 macOS 构建的应用程序。 听起来很酷,是吗?

Darling 与 Wine 非常相似。 Wine 允许您在 Linux 上运行 Windows 应用程序。 Darling 让你可以运行 macOS 软件 Linux。

好在亲爱的不违反 苹果的 EULA. 因为它只使用作为完全免费软件发布的 Darwin 版本的部分。

“Darling”这个名字来自“Darwin”和“Linux”的组合。 您可能知道,Darwin 是 macOS 和 iOS 所基于的核心操作系统。

Darling 是在 GPLv3 下发布的免费开源软件。

在 Ubuntu Linux 中安装 Darling

目前,Darling 开发人员仅提供预编译的 DEB 包。 前往 发布页面 并下载提供的 DEB 包 darlingdarling-dkms (内核模块)。

$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb

示例输出:

Reading package lists... Done Building dependency tree         Reading state information... Done Reading state information... Done  Kernel module for Darling Do you want to install the software package? [y/N]:y /usr/bin/gdebi:113: FutureWarning: Possible nested set at position 1   c = findall("[[(](S+)/S+[])]", msg)[0].lower() Selecting previously unselected package darling-dkms. (Reading database ... 269719 files and directories currently installed.) Preparing to unpack darling-dkms_0.1.20200331.testing_amd64.deb ... Unpacking darling-dkms (0.1.20200331~testing) ... Setting up darling-dkms (0.1.20200331~testing) ... >>> DKMS: Module add, build, and install  Creating symlink /var/lib/dkms/darling-mach/0.1/source ->                  /usr/src/darling-mach-0.1  DKMS: add completed.  Kernel preparation unnecessary for this kernel.  Skipping...  Building module: cleaning build area.... 'make' -C lkm/ MIGDIR=/usr/src/darling-mach-0.1/miggen MIGDIR_REL=../miggen KERNELVERSION=5.4.0-48-generic........................................... cleaning build area...  DKMS: build completed.  darling-mach.ko: Running module version sanity check.  - Original module    - No original module exists within this kernel  - Installation    - Installing to /lib/modules/5.4.0-48-generic/updates/dkms/  depmod............  DKMS: install completed.

安装 darling-dkms 包后,使用命令安装 darling:

$ sudo gdebi darling_0.1.20200331.testing_amd64.deb 

示例输出:

Reading package lists... Done Building dependency tree         Reading state information... Done Reading state information... Done Requires the installation of the following packages: libc6-i386   Darling  macOS emulation layer for Linux Do you want to install the software package? [y/N]:y /usr/bin/gdebi:113: FutureWarning: Possible nested set at position 1   c = findall("[[(](S+)/S+[])]", msg)[0].lower() Get:1 https://ny-mirrors.evowise.com/ubuntu focal-updates/main amd64 libc6-i386 amd64 2.31-0ubuntu9.1 [2721 kB] Fetched 2721 kB in 0s (0 B/s)                                                               Selecting previously unselected package libc6-i386. (Reading database ... 274071 files and directories currently installed.) Preparing to unpack .../libc6-i386_2.31-0ubuntu9.1_amd64.deb ... Unpacking libc6-i386 (2.31-0ubuntu9.1) ... Setting up libc6-i386 (2.31-0ubuntu9.1) ... Processing triggers for libc-bin (2.31-0ubuntu9.1) ... Selecting previously unselected package darling. (Reading database ... 274374 files and directories currently installed.) Preparing to unpack darling_0.1.20200331.testing_amd64.deb ... Unpacking darling (0.1.20200331~testing) ... Setting up darling (0.1.20200331~testing) ... >>> Shutting down old instances of Darling Seeing if Darling is currently running No instances running now

我喜欢安装的原因 .deb 包与 Gdebi 它会自动解决所需的依赖项并为我安装它们。 如果您更喜欢使用 dpkg 包管理器,您需要先安装 Darling DEB 包,然后安装缺少的依赖项,如下所示。

$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
$ sudo gdebi darling_0.1.20200331.testing_amd64.deb
$ sudo apt install -f

在其他 Linux 发行版上,您可能需要按照说明从源代码手动编译和安装 Darling 这里.

使用 Darling 在 Linux 上运行 MacOS 软件

Darling 的开发人员正计划构建一个漂亮且用户友好的 GUI 来与 Darling 交互。 但目前,我们只能通过命令行与 Darling 交互。

要进入 Darling shell,只需以普通用户身份运行以下命令:

$ darling shell Loaded the kernel module Setting up a new Darling prefix at /home/sk/.darling Bootstrapping the container with launchd... Darling [/Volumes/SystemRoot/home/sk/Downloads/darling]$

此命令将启动一个虚拟根目录(即容器)或连接到一个已经运行的容器并在其中生成 shell。

启动亲爱的外壳

如果需要,它还将自动加载内核模块并初始化前缀内容。 Darling 前缀被称为 DPREFIXes,这非常类似于 WINEPREFIXes. 前缀只不过是一个虚拟的“chroot”环境,具有类似 macOS 的文件系统结构,我们可以在其中安全地安装软件。

当前在容器内运行的 shell 是 Bash 它的版本是3.2。

$ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14) Copyright (C) 2007 Free Software Foundation, Inc.

现在,我们处于模拟的 macOS 类环境中。 由于 macOS 是 Unix 变体,因此许多 Linux 和 Unix 命令应该可以在 Darling shell 中运行。

例如,使用命令打印操作系统的名称:

$ uname Darwin

列出内容 root (/) 目录:

$ ls -l /

示例输出:

total 120 drwxr-xr-x    2 sk  sk  4096 Oct  5 09:54 Applications drwxr-xr-x    1 sk  sk  4096 Oct  5 07:19 Library drwxr-xr-x    1 sk  sk  4096 Oct  5 07:19 System drwxrwxr-x    4 sk  sk  4096 Oct  5 09:54 Users drwxr-xr-x    1 sk  sk  4096 Oct  5 09:54 Volumes drwxr-xr-x    1 sk  sk  4096 Oct  5 07:20 bin lrwxrwxrwx    1 sk  sk    23 Mar 31  2020 dev -> /Volumes/SystemRoot/dev lrwxrwxrwx    1 sk  sk    11 Mar 31  2020 etc -> private/etc drwxr-xr-x    1 sk  sk  4096 Oct  5 09:54 private dr-xr-xr-x  292 sk  sk     0 Oct  5 09:54 proc drwxr-xr-x    1 sk  sk  4096 Oct  5 07:20 sbin lrwxrwxrwx    1 sk  sk    11 Mar 31  2020 tmp -> private/tmp drwxr-xr-x    1 sk  sk  4096 Oct  5 09:54 usr drwxr-xr-x    5 sk  sk  4096 Oct  5 09:54 var

同样,使用任何 macOS 特定的命令来探索模拟环境。

亲爱的文件系统布局

如果您已经熟悉 macOS 文件系统,您会注意到容器内部的文件系统布局与 macOS 类似,包括顶级目录,例如 /Applications, /Users, 和 /System 等等。

原始 Linux 文件系统作为一个单独的分区可见 /Volumes/SystemRoot. 您可以通过运行具有完整路径名的任何 Linux 命令来验证它,如下所示:

$ /Volumes/SystemRoot/bin/uname  Linux

正如您在上面的输出中看到的,它列出了我实际的主机系统名称,而不是容器的名称。 如果不指定拉取路径(即 /Volumes/SystemRoot/bin/uname),它将列出容器的名称。

在 Darling 下运行 macOS 程序时,您可能希望它们访问您的主文件夹中的文件。 为方便起见,有一个 LinuxHome 从容器内部可以看到 Darling 主文件夹中指向 Linux 主文件夹的符号链接。 此外,标准目录,例如 Downloads Darling 主文件夹中的 符号链接到 Linux 主文件夹中的相应文件夹。

您目前可以使用 Darling 执行的操作列表

请注意,大多数 GUI 应用程序 目前不会工作. 目前,您只能运行一些简单的图形应用程序和许多命令行程序。 不要失望。 GUI 应用程序还不能开箱即用。 开发人员正在致力于将 Darling 下运行的应用程序完全集成到 Linux 桌面,就像本地应用程序一样。 从长远来看,他们甚至计划支持 iOS 应用程序。

这是您当前可以使用 Darling 运行的命令列表。

使用命令打印 Mac OS X 操作系统详细信息:

$ sw_vers

此命令将显示 Mac OS 名称、产品版本和构建版本:

ProductName:    Mac OS X ProductVersion: 10.14 BuildVersion:   Darling

使用在标准输出上打印一些很酷的东西 echo 命令:

$ echo Welcome To OSTechNix Welcome To OSTechNix

显示操作系统名称:

$ uname  Darwin

探索 Darling 文件系统:

$ ls -l /
$ ls -l /Library/     total 56 drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 Developer drwxr-xr-x  1 sk  sk  4096 Oct  5 07:20 Documentation drwxr-xr-x  1 sk  sk  4096 Mar 31  2020 LaunchAgents drwxr-xr-x  1 sk  sk  4096 Mar 31  2020 LaunchDaemons drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 Python
$ ls -l /Volumes/    total 8 lrwxrwxrwx   1 sk  sk     1 Mar 31  2020 DarlingEmulatedDrive -> / drwxr-xr-x  25 sk  sk  4096 Oct  5 07:19 SystemRoot
$ ls -l /System/Library/ total 120 drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 Components drwxr-xr-x  1 sk  sk  4096 Oct  5 07:20 CoreServices drwxr-xr-x  1 sk  sk  4096 Oct  5 07:20 Frameworks drwxr-xr-x  1 sk  sk  4096 Oct  5 07:20 LaunchDaemons drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 OpenSSL drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 Perl drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 PrivateFrameworks drwxr-xr-x  1 sk  sk  4096 Mar 31  2020 Security drwxr-xr-x  1 sk  sk  4096 Oct  5 07:19 User Template

显示当前运行的进程:

$ ps aux USER   PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND sk     127   0.0  0.1  4226308   8760   ??  R     1Jan70   0:00.02 nps aux  sk      19   0.0  0.1  4219692   5944   ??  R     1Jan70   0:00.03 o/usr/libexec/shellspawn  sk      20   0.0  0.1  4342428   9236   ??  R     1Jan70   0:00.06 s/usr/sbin/syslogd  sk      21   0.0  0.1  4224292   8956   ??  R     1Jan70   0:00.03 s/usr/sbin/memberd -x  sk      22   0.0  0.2  4355536  15544   ??  R     1Jan70   0:00.06 /usr/sbin/iokitd  sk      23   0.0  0.1  4423744   9400   ??  R     1Jan70   0:00.14 //usr/sbin/notifyd  sk      33   0.0  0.1  4480688   8576   ??  R     1Jan70   0:00.06 oaslmanager  sk      39   0.0  0.0  4227884   3952   ??  RN    1Jan70   0:00.01 s/usr/libexec/shellspawn  sk      40   0.0  0.1  4226028  10084   ??  R     1Jan70   0:00.38 e/bin/bash --login  sk       1   0.0  0.1  4260676   9536   ??  R     1Jan70   0:01.06 n/sbin/launchd 

检查坐骑:

$ column -t /proc/self/mounts 

阅读手册页:

$ man uname

你可以做更多。 一切都在标题为 “尝试什么” 在最后链接的官方文档中。

终止亲爱的

您已经完成了对 Mac OS 的探索,只需从 Darling shell 退出并使用以下命令关闭容器:

$ exit
$ darling shutdown

当容器关闭时,您不会看到任何通知。 再次运行该命令,您将看到以下输出:

Darling container is not running

结论

与 Wine 不同,Darling 不是一个成熟的项目。 使用Wine,你可以在Linux 下运行如此多的windows 应用程序,甚至一些高端游戏。 不幸的是,Darling 帮不上什么忙。 目前它只能运行少数命令行程序。 它仍处于 alpha 阶段。 您可以将其用于基本的学习和测试目的。

试一试,让我们知道如何在下面的评论部分进行。

资源:

  • 亲爱的网站
  • 亲爱的 GitHub 存储库
  • 亲爱的文档

ErfourisStudio 在Pixabay上的精选图片。

AppleDarlingDarwinEmulatorLinuxmacOSOpensourceUnix