是否可以在現代 Linux 發行版(如 Ubuntu 或 RedHat)上取得 OS X 版本的 Unix 工具?

是否可以在現代 Linux 發行版(如 Ubuntu 或 RedHat)上取得 OS X 版本的 Unix 工具?

我觀察到,某些命令列工具(例如Linux 的現代發行版上的paste和)的預設版本與.這導致sedOSX答案OS X儘管它們可以在幾乎所有 Linux 發行版上運行,但 它們不起作用。

所以我想知道,是否有一種標準方法可以在現代 Linux 發行版上獲取標準 Unix 工具的全套OS X版本,以便我們可以在 OSX 上測試解決方案的正確功能,而無需副本?

答案1

正如評論中提到的,蘋果使原始碼這些工具的可用版本。許多常用命令都在“shell_cmds”包,而貼上和 sed 位於“文字命令》。

事實上,它們都在 Linux 系統上運作得很好,儘管您經常必須跳到原始程式碼並明確刪除特定於 FreeBSD 的測試,特別是__FBSDID("...");幾乎每個檔案中的行。我不知道有哪個發行版可以把這些打包起來。許多發行版確實打包了一些常用工具的 BSD 版本,這些工具與 OS X 版本非常接近(通常相同),儘管它們通常不包含諸如 Paste 和 sed 之類的東西。例如,Debian 包括八個包稱為bsdX(其中沒有一個有這些命令)。特別是對於 Apple 的版本,或者對於其中未包含的許多工具,當您需要根據上面的說明自行建立它們並不困難。

綜上所述,GNU 和 BSD 工具的共同子集是POSIX規範,其中定義了所有基本命令。你可以查一下貼上命令或者sed並看看它保證在所有地方都接受哪些參數。這是編寫可移植程式碼的「道德上正確」的方式:GNU 工具和 BSD 工具都有擴展,但如果您留在 POSIX 中,您的程式碼將在這兩種工具上運行。所以檢查您是否始終僅使用 POSIX 參數然後你所說的應該同樣適用於 OS X 和其他系統。

答案2

雖然大多數OSX 的 unixy 工具是開源的,許多工具的原始程式碼依賴 Linux 上不存在的程式庫和核心功能(並且不是開源的,並且如果不付出額外的努力並且可能違反許可證,則無法在非 Apple 硬體上運行)。我懷疑您是否能夠在 Linux 上運行它們而不需要付出很大的努力。

OSX的unix層移植自自由BSD許多程式與 OSX 發佈時目前的 FreeBSD 版本中的程式非常相似。您可以在虛擬機器中執行 FreeBSD 並在那裡進行測試。你也可以運行開放BSD; OpenBSD 注重安全性,在採用新功能方面比 FreeBSD 保守得多。如果您想測試腳本的可移植性,您也可以安裝印第安納公開賽,這是一個開源分支索拉里斯基於現已停產的 OpenSolaris 版本。由於 Solaris 是系統V基於 Solaris 和 OpenBSD,您可以對 Unix 可攜性有相當廣泛的了解。

您也可以在線上查看許多 Unix 變體的文件:

相關內容