Можно ли получить версии Unix для OS X для современных дистрибутивов Linux (например, Ubuntu или RedHat)?

Я заметил, что между стандартными версиями некоторых инструментов командной строки, таких как paste и sed в современных дистрибутивах Linux и OSX часто встречаются тонкие и часто раздражающие различия. Это приводит к ответам, которые не работают на OS X даже если они будут работать практически с любым дистрибутивом Linux.

Поэтому я задаюсь вопросом, есть ли стандартный способ получить полный набор версий OS X стандартных инструментов Unix для современных дистрибутивов Linux, чтобы мы могли тестировать решения для правильной функциональности на OSX, не имея копии?

2 Solutions collect form web for “Можно ли получить версии Unix для OS X для современных дистрибутивов Linux (например, Ubuntu или RedHat)?”

Как упоминалось в комментарии, Apple делает исходный код своих версий этих инструментов доступными. Многие общие команды находятся в пакете «shell_cmds» , а paste и sed – в « text_cmds ». Вы можете получить исходный код и скомпилировать его.

Практически все они отлично работают на Linux-системах, хотя вам часто приходится входить в исходный код и явно удалять тесты, специфичные для FreeBSD, особенно __FBSDID("..."); которая находится почти в каждом файле. Я не знаю, какой дистрибутив упаковывает их. Многие дистрибутивы действительно поддерживают BSD-версии некоторых обычных инструментов, которые очень близки (часто идентичны) версиям OS X, хотя обычно они не включают такие вещи, как paste и sed. Например, Debian включает в себя восемь пакетов, называемых bsdX (ни одна из которых не имеет ни одной из этих команд). Для версий Apple специально или для многих инструментов, которые не включены в них, их нетрудно построить самостоятельно, когда они вам понадобятся из приведенных выше инструкций.

Все это говорит о том, что общим подмножеством инструментов GNU и BSD является спецификация POSIX , где определены все основные команды. Вы можете найти команду вставки или команду sed и посмотреть, какие аргументы она может принять везде. Это «морально правильный» способ написания переносимого кода: как инструменты GNU, так и инструменты BSD имеют расширения, но если вы останетесь в POSIX, ваш код будет работать на обоих. Поэтому убедитесь, что вы всегда используете только аргументы POSIX, а затем то, что вы говорите, должно работать на OS X и других системах одинаково.

Хотя большинство инструментов Unix для OSX являются open-source , исходный код многих инструментов основан на библиотеках и функциях ядра, которых нет в Linux (и которые не являются open-source, и которые не могут работать на аппаратах, отличных от Apple, без дополнительные усилия и, возможно, нарушения лицензии). Я сомневаюсь, что вы сможете запускать их на Linux без значительных усилий.

Уровень unix OSX переносится из FreeBSD, и многие программы очень похожи на тот, который был выпущен во FreeBSD, который был актуальным во время выпуска OSX. Вы можете запустить FreeBSD на виртуальной машине и проверить там вещи. Вы также можете запустить OpenBSD ; OpenBSD ориентирована на безопасность и гораздо более консервативна, чем FreeBSD, когда дело доходит до принятия новых функций. Если вы хотите протестировать скрипты для переносимости, вы также можете установить OpenIndiana , которая является открытым исходным кодом fork Solaris на основе выпущенной в настоящее время версии OpenSolaris. Поскольку Solaris является System V- based, Solaris plus OpenBSD дает вам достаточно широкий обзор портативности Unix.

Вы также можете проверить документацию по многим вариантам Unix в Интернете:

  • AIX
  • FreeBSD (и другие)
  • IRIX
  • Linux: Fedora , Ubuntu
    • BusyBox
  • MINIX 3
  • OpenBSD
  • OSX
  • QNX
  • Solaris 11
  • Автоматическое обновление hwclock при загрузке
  • Попытка установить Linux вместе с Windows 10
  • Удалять драйвер nouveau (nvidia) без перезагрузки
  • Производительность скрипта Bash
  • ubuntu - Почему изменения сценария init.d игнорируются
  • Открытие портов на Ubuntu 16.04.1
  • Как переключаться между GPU
  • Почему «Linux Generic» использует расширение RPM на странице загрузки MySQL?
  • Ubuntu + nginx, получить информацию о виртуальной машине
  • хосты Getent не используют DNS
  • Как запустить приложение с эмулятором терминалов по умолчанию на Ubuntu?
  • Linux и Unix - лучшая ОС в мире.