Homebrew дает вам лучшее от Linux на Mac

Homebrew дает вам лучшее от Linux на Mac

Резюме

  • Команды macOS часто отличаются от своих версий для Linux из-за несоответствия BSD и GNU.
  • Homebrew упрощает установку отсутствующего программного обеспечения командной строки на macOS.
  • Homebrew помогает управлять средой PATH для установленных команд, избегая дублирования и обеспечивая правильный приоритет.

Откройте Терминал на macOS, и легко представить, что вы работаете в полноценной среде Linux. Но эти команды не совсем те, к которым вы привыкли. К счастью, есть простое решение.

В чем проблема с macOS?

С момента запуска OSX в 2001 году macOS поставляется с набором утилит командной строки, которые знакомы любому, кто использовал Linux: grep, find, vim и многие другие. Обычно это версии BSD каждой программы, а не версии GNU, с которыми поставляется большинство дистрибутивов Linux, но они в значительной степени совместимы.

Однако использование Apple программного обеспечения BSD вместо GNU вызывает две проблемы. Во-первых, некоторые версии BSD работают немного по-другому, с альтернативными опциями, неожиданным поведением или незнакомыми расширениями. Обычно эти проблемы можно решить, прочитав соответствующие страницы руководства или просто адаптировавшись к поведению команд BSD. Но эти несоответствия могут быть неудобными для управления, особенно если вы используете двойную загрузку или иным образом используете комбинацию систем Mac и Linux.

Homebrew дает вам лучшее от Linux на Mac

Иногда эти различия обусловлены возрастом инструментов; версии Mac BSD, как правило, старше своих эквивалентов GNU. Apple также не всегда обновляет эти команды очень часто, поэтому они могут устаревать еще больше между выпусками ОС.

Более существенная проблема заключается в том, что macOS не поставляется с эквивалентной версией каждой команды, к которой вы, возможно, привыкли. Это не всегда будет проблемой, но есть некоторые удивительные упущения, например, инструмент дерева.

Решение этой проблемы раньше состояло в сборке из исходников: загрузка фактического кода программы, запуск скрипта конфигурации, затем использование команды make для компиляции всего. О, и молитесь, чтобы все это работало правильно в вашей среде.

В качестве альтернативы вы можете попытаться найти предварительно скомпилированный двоичный файл для вашей архитектуры, но этот процесс может быть утомительным, а скомпилированное программное обеспечение может быть несовместимо с вашей средой. Однако в настоящее время существуют более приятные способы довести ваши команды macOS до совершенства.

Как получить недостающие команды

С 2016 года Homebrew предлагает лучший способ установки программного обеспечения командной строки на ваш Mac. Homebrew — это менеджер пакетов, который позволяет вам устанавливать программное обеспечение без необходимости компилировать его из исходников. Как и любой менеджер пакетов, Homebrew берет на себя компиляцию и установку. Он также обрабатывает сеть зависимостей, которые могут потребоваться программе для запуска, поэтому это намного проще, чем сборка из исходников.

Homebrew можно использовать для установки широкого спектра программ, а не только тех, что ограничены Mac App Store. Это открыло экосистему Mac для многих приложений с открытым исходным кодом, к которым привыкли пользователи Linux. Многие разработчики свободного ПО отпугиваются закрытостью магазина Apple, как по практическим, так и по идеологическим причинам. Homebrew открыл доступ к более качественному бесплатному ПО, чем когда-либо прежде.

Текущая версия — 4.4 — поддерживает версии Mac OS Ventura (13), Sonoma (14) и Sequoia (15).

После установки Homebrew добавление недостающих команд — пустяк. Например, чтобы установить программу wget, используйте эту команду:

варить установить wget

Homebrew дает вам лучшее от Linux на Mac

Если это все еще слишком сложно, вы можете использовать Homebrew GUI, например Cork. Но давайте будем реалистами: если вы хотите установить и использовать программное обеспечение командной строки, вам будет более чем комфортно использовать команду brew.

На Silicon Mac Homebrew устанавливает программы в /opt/homebrew/bin. Он также должен добавить это местоположение в ваш PATH, который будет выглядеть примерно так:

…:/opt/homebrew/bin:…/usr/local/bin:…:/bin:…

Другими словами, команды, установленные Homebrew, будут иметь приоритет и будут запускаться вместо любых дубликатов, предоставленных системой, например, в /bin.

Homebrew дает вам лучшее от Linux на Mac

Вы можете использовать команду which для проверки местоположения любой программы, например:

$ которые находят
/ usr / bin / найти

Опция -a покажет вам все расположения команды в вашей переменной PATH, поэтому вы можете использовать ее для проверки на наличие дубликатов и подтверждения того, что вы используете правильную версию:

$ который -а […]

Помните, что большинство команд принимают опцию —version или —help, которая может подсказать вам, какую версию вы используете. Еще одна важная деталь заключается в том, что инструменты GNU часто устанавливаются с другим именем, чтобы избежать конфликтов. Например, пакет Homebrew для sed называется gnu-sed и устанавливается как gsed:

Homebrew дает вам лучшее от Linux на Mac

Версия sed для BSD на самом деле не имеет номера версии, но ее страница руководства в Sequoia датирована июнем 2020 года.

заварить установку coreutils

Homebrew дает вам лучшее от Linux на Mac

Отсутствующее программное обеспечение, на которое следует обратить внимание

Впервые я понял, что что-то не так с инструментами macOS, когда потянулся за надежной файловой утилитой tree. Конечно, tree не является обязательной, но она невероятно полезна. Команда показывает полную иерархию каталога, выводя все файлы и папки в нем, как суперзаряженная ls. За исключением того, что она не будет делать этого на чистой установке macOS:

Homebrew дает вам лучшее от Linux на Mac

Я решал эту проблему с помощью примитивного скрипта оболочки, выполняющего ту же функцию. Но в этом скрипте отсутствовали все опции дерева, которых на удивление много:

Homebrew дает вам лучшее от Linux на Mac

Homebrew позволяет вам установить tree, предоставляя полную команду во всей ее красе. Это последняя версия tree: 2.2.1, которая была выпущена в ноябре 2024 года.

Другая очень распространенная программа, отсутствие которой бросается в глаза, — это Emacs. Правда, Emacs часто отсутствует и в современных дистрибутивах Linux, но это не делает его отсутствие в macOS более оправданным.

Homebrew дает вам лучшее от Linux на Mac

Emacs — популярный текстовый редактор и мощная альтернатива vim, поэтому вы можете захотеть использовать его или попробовать, если вы этого еще не сделали. К счастью, Emacs — это просто другая сторона быстрого brew установить emacs.

Команда find — одна из многих, которая, хотя и доступна в macOS, действует немного иначе в своем воплощении BSD. Две версии поддерживают немного разные опции и поведение, что затрудняет переключение между ними.

Команда find от Homebrew является частью пакета findutils, поэтому вы можете установить ее следующим образом:

brew установить findutils

Вам следует знать, что Homebrew устанавливает команду как gfind. Homebrew часто использует это соглашение, добавляя префикс «g» к GNU-эквивалентам встроенных команд, чтобы обе версии могли сосуществовать:

Homebrew дает вам лучшее от Linux на Mac

Это делается для того, чтобы гарантировать приоритет BSD find по умолчанию, но это может сбивать с толку и мешать запоминать. Если вы хотите использовать GNU find по умолчанию, вы можете добавить этот каталог в свой PATH:

/opt/homebrew/opt/findutils/libexec/gnubin

Этот каталог должен иметь символическую ссылку с именем «find», которая указывает на исполняемый файл «gfind» в /opt/homebrew/bin. Не забудьте добавить его перед /usr/bin в вашем пути, чтобы ваша оболочка сначала нашла версию GNU.

Homebrew позволяет вам устанавливать важные команды, включая эквиваленты GNU, к которым вы, возможно, более привычны, которые предлагают улучшенное или альтернативное поведение.

Валентин Павлов/ автор статьи
Страсть Влентина к играм началась с Resident Evil, и с тех пор он не переставал играть в хоррор-игры. Пишет экспертные руководства для самых сложных игр и обзоры для самых громких релизов. Является магистром журналистики и имеет степень бакалавра лингвистики. Любимые игры: GTA 5, Silent Hill 2, Call of Duty: Modern Warfare 2, Heavy Rain, Metro 2033 и другие.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий