Homebrew 6.0 полностью изменил способ установки программ на Mac
BBetter Stack
Computing/SoftwareInternet Technology
Transcript
00:00:00Несколько месяцев назад на этом самом канале мы выпустили видео, где назвать Homebrew
00:00:05чем-то из каменного века было нормальным, ведь Nix на голову выше. Поэтому будет честно,
00:00:12если я вернусь к этой теме и скажу следующее. Наш «пережиток каменного века» только что выпустил первое
00:00:17крупное обновление за последние годы — Homebrew 6.0. И вот что главное: дело тут не в куче новых
00:00:23фич. Это полный пересмотр безопасности. Homebrew наконец-то повзрослел.
00:00:30Давайте я объясню, что именно изменилось, ведь это куда интереснее, чем просто сменившаяся цифра
00:00:38в версии. Практически за всю историю Homebrew, когда вы добавляли сторонний tap, то есть сторонний
00:00:45репозиторий, Homebrew просто запускал их Ruby-код. Он бездумно исполнял чужой код. Любой tap,
00:00:51произвольный код — и никаких вопросов. А теперь подумайте, в каком мире мы живем.
00:00:56Пакетные менеджеры сейчас — главная цель для атак на цепочки поставок. NPM и все остальные
00:01:01принимают удар за ударом. Выполнять любой код из репозитория по умолчанию — плохая идея. И в Homebrew
00:01:086.0 появилась фича, чтобы это прекратить. Она называется Tap Trust. Если вам нравятся такие советы по кодингу,
00:01:15не забудьте подписаться. У нас постоянно выходят новые видео. Но начну я с того,
00:01:19что вы будете замечать каждый день. Команда brew version. Вот она — 6.0. А теперь смотрите, что происходит,
00:01:25когда я устанавливаю что-то с несколькими зависимостями. Вместо молчаливой установки Brew теперь показывает
00:01:31полную сводку того, что собирается поставить, и ждет подтверждения. Это новый режим Ask,
00:01:38и теперь он включен по умолчанию. Крошечное изменение, но теперь вы всегда видите план до того,
00:01:44как Brew хоть к чему-то прикоснется в системе. А теперь главное — Tap Trust. Смотрите, что происходит при добавлении стороннего tap.
00:01:50Homebrew мгновенно меня останавливает. Он говорит, что этот tap не является доверенным, и не выполнит ни строчки
00:01:56кода, пока я явно не подпишусь под этим. Я подтверждаю доверие через brew trust, и только после этого
00:02:03он начинает работу. Официальные репозитории Homebrew доверены по умолчанию. Так что ваш обычный опыт
00:02:09использования Brew никак не изменится. Но вот тот сомнительный tap от незнакомца с GitHub,
00:02:16найденный в файлe README, теперь будет под замком. Его придется подтверждать вручную. И, честно говоря,
00:02:20в сегодняшних реалиях это отличное решение. Но это далеко не единственный апгрейд.
00:02:25Внутренняя система метаданных теперь работает по умолчанию: вся информация о пакетах запрашивается
00:02:30одним чистым скачиванием вместо дюжины мелких сетевых запросов. Поэтому команда brew update стала намного быстрее. Появилась
00:02:37совершенно новая команда — brew execute, своего рода NPX для Homebrew. Она позволяет однократно запустить утилиту без
00:02:45ее постоянной установки в систему. Также добавили brew vulns, которая сканирует уже установленные пакеты
00:02:51на предмет известных уязвимостей и предупреждений. Кроме того, в 6.0 тихо исправили три уязвимости, включая ту, что позволяла
00:02:58исполнять код с правами root через установочный пакет Mac. Это действительно серьезный релиз. Но есть
00:03:04и подвох. Для кого-то он окажется критичным, так что расскажу о нем сразу.
00:03:09Tap Trust ломает обратную совместимость. Если в ваших CI-пайплайнах используются сторонние tap,
00:03:14brew doctor теперь выдает ошибку в ту же секунду, как видит недоверенный репозиторий. А огромное количество стандартных
00:03:20GitHub Actions запускают brew doctor первым делом. В итоге люди обновились, и их сборки просто упали.
00:03:28Решение — пометить эти tap как доверенные в конфиге, но сделать это придется вам самому.
00:03:35Автоматически за вас это никто не сделает. То же самое с режимом Ask. Если ваши скрипты рассчитывали
00:03:41на тихую установку пакетов без вопросов, новый промпт может заставить их зависнуть навсегда. Но если посмотреть
00:03:46на это иначе: для обычного пользователя, который просто ставит программы каждый день, внешне почти ничего не изменилось.
00:03:51Это релиз про безопасность и архитектуру, а не просто смена обертки. И еще развеем один миф.
00:03:58Сейчас разное ПО активно переписывают на Rust. Нет, Homebrew не переписывают на Rust,
00:04:04по крайней мере сейчас. Это был лишь эксперимент. Фокус снова полностью вернулся к кодовой базе на Ruby,
00:04:10как и раньше. Так стоит ли обновляться до Homebrew 6.0? Почти для всех ответ — однозначное «да».
00:04:16Вы получаете три патча безопасности, да и вообще brew update рано или поздно сам переведет вас на 6.0,
00:04:22планировали вы это или нет. А вот кому точно стоит притормозить и подумать —
00:04:27так это тем, у кого CI завязан на сторонние tap, или настроена автоматизация без интерактива. Разберитесь с ними
00:04:33в первую очередь, и всё будет отлично. И если вы все еще сидите на Mac с процессором Intel — внимание:
00:04:40в 6.0 уже расписан график полного прекращения поддержки Intel на ближайшие пару лет. Владельцы Apple Silicon,
00:04:46новые компьютеры — у нас все отлично. Добавили даже поддержку свежих чипов M5. В общем, подытожим.
00:04:53Годами Homebrew оставался просто удобным инструментом — самым быстрым способом поставить программу на Mac.
00:04:59С версией 6.0 он, похоже, превращается скорее в контрольно-пропускной пункт — место, где код,
00:05:05наконец-то обязан доказать свое право на доверие. Это большой шаг. Пакетный менеджер
00:05:10дорос до той модели угроз, в которой все мы живем уже годы. И в этом главная суть,
00:05:15а не в цифрах 6.0 или 6.1. Главное — то, что за ними стоит. Если вам нравятся подобные видео
00:05:21и советы по кодингу, обязательно подпишитесь на канал BetterStack. Увидимся в следующих выпусках!