====== Homebrew ======
{{ :apple:osx:homebrew_logo.png?nolink|}}
TL;DR: homebrew это пакетный менеджер для Mac OS X аналогичный yum (CentOS) или apt-get/aptitude (Debian).
Если в Linux мы ставим ПО следующим образом:
CentOS - yum install htop
Debian - apt-get install htop
То с brew будет возможность ставить ПО через терминал:
brew install htop
Почему именно homebrew, а не [[https://www.macports.org|Macports]] или [[http://www.finkproject.org|Fink]]? Потому-что стильно-модно-молодежно.
Brew vs Fink vs Macports
* http://deephill.com/macports-vs-homebrew/
* http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907
* http://johnlaudun.org/20121230-macports-the-key-to-python-happiness/
* http://apple.stackexchange.com/questions/32724/what-are-pros-and-cons-for-macports-fink-and-homebrew
* http://stackoverflow.com/questions/21374366/what-is-the-difference-usage-of-homebrew-macports-or-other-package-installation
P.S. brew это самогон.
Бонус - http://rudix.org, готовые пакеты для Mac.
===== Обновить все пакеты =====
Как обновить сразу всё
[[https://blog.snapdragon.cc/2017/05/22/keep-all-macos-software-up-to-date-with-a-single-command/|via]]
function update-all {
# update cli homebrew
brew update
brew upgrade
brew prune
brew cleanup
# Homebrew cask
brew cu -a -y --cleanup
brew cleanup --force -s && rm -rf $(brew --cache)
# Node
npm update -g
# Apple App store
mas upgrade
softwareupdate --install --all
}
Помимо самого brew необходимы
* [[https://github.com/buo/homebrew-cask-upgrade|homebrew-cask-upgrade]]
* [[https://github.com/mas-cli/mas|mas]] (Mac App Store cli)
===== Как установить Homebrew? =====
==== Command Line Tools ====
{{ :apple:osx:homebrew_xcode.png?nolink&128|}}
Как два байта переслать.
Вначале необходимо установить т.н. инструменты командной строки для разработчиков (Command Line Tools).
Для этого ставим [[https://itunes.apple.com/ru/app/xcode/id497799835|Xcode]] из Mac App Store или скачиваем с сайта [[https://developer.apple.com/downloads/|developer.apple.com]]
4,4 GiB Xcode vs 160 MiB Command Line Tools, выбор очевиден.
Либо ничего не скачиваем, а просто в terminal выполняем
$ xcode-select --install
Смотрим версию
$ xcode-select -v
xcode-select version 2343.
{{:apple:osx:homebrew_command_line_tools_1.png?nolink&500|}}
{{:apple:osx:homebrew_command_line_tools_2.png?nolink&500|}}
==== Установка homebrew ====
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Теперь можно расслабиться и откинуться на спинку кресла.\\
FIXED Нельзя, т.к. это Мак и здесь не надо ждать целый час пока что-то произойдет.
{{:apple:osx:homebrew_install.png?nolink&500|}}
Для удаления
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
[[https://github.com/Homebrew/install|Новый вариант]]
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
==== Рекламный блок ====
Съешь еще этих сочных берез, да выпей самогона! *brew разные нужны, *brew разные важны.
* Perl - http://perlbrew.pl
* PHP - https://github.com/phpbrew/phpbrew
==== Памятка для себя по основным командам ====
{{:apple:osx:homebrew_help.png?nolink&500|}}
^ Команда ^ Описание ^
| brew update | Обновить brew |
| brew list | Список установленного ПО через brew |
| brew uninstall htop | Удалить программу |
| brew outdated | Проверить обновление для программ установленных через brew |
| brew upgrade | Обновить все программы |
| brew pin htop | Если нужно обновить всё кроме определенной программы |
| brew upgrade htop | Обновить только программу htop |
| brew remove --force $(brew list --formula) \\ UPD brew list | xargs brew uninstall --force \\ brew list --cask | xargs brew uninstall --force
\\ brew remove --force $(brew list) \\ brew remove --force $(brew list) --ignore-dependencies | Удалить все установленные пакеты |
| brew cleanup | После при желании можно удалить скаченные архивы |
==== Tap и Cask ====
{{:apple:osx:homebrew_barrels.jpg?nolink&600|}}
У Homebrew довольно интересная пивоваренная терминология. FIXME раздел будет обновлен
* Formula / Формула
* Taps / Кран
* Casks / Бочки
* Keg / Кеги или бочонки
* Cellar / Погреб
===== Ошибки, баги, глюки, howto =====
==== Отключить сбор информации ====
[[https://docs.brew.sh/Analytics|Кто следит и что собирают]]
Отключить
export HOMEBREW_NO_ANALYTICS=1
brew analytics off
==== Управление сервисами в homebrew ====
via http://paul.elms.pro/blog/2015/09/28/brew-services/
brew tap homebrew/services
brew update
# справка по использованию
brew services
# запускаем сервис (будет загружаться после логина пользователя)
brew service start redis
# останавливаем сервис
brew service stop redis
# запускаем сервис через sudo (будет запускаться без логина пользователя и с правами root)
sudo brew service start openvpn
==== Как собрать программу из исходников ====
Установить nmap из исходных кодов
$ brew install --build-from-source nmap
Переустановить/собрать все программы установленные через brew
$ brew list | xargs brew reinstall --build-from-source
==== Error: /usr/local must be writable! ====
При запуске **brew doctor** появляется сообщение **Error: /usr/local must be writable!**
Чиним
sudo chown -R $(whoami) /usr/local
==== %command% not found ====
dx-mac:~ dx$ mtr
-bash: mtr: command not found
dx-mac:~ dx$ sudo mtr
sudo: mtr: command not found
При этом если указывать полный путь к бинарнику, то успешно запускается
sudo /usr/local/sbin/mtr
поэтому делаем
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile
и чтобы не перелогиниваться применяем сразу изменения
source $HOME/.bash_profile
**Бонус**. Избавляемся от ошибки ''mtr: unable to get raw sockets.''
chmod 4755 /usr/local/sbin/mtr
sudo chown root /usr/local/sbin/mtr
UPD Не работает в Sierra.
* https://github.com/Homebrew/homebrew/issues/27729
* http://superuser.com/questions/925240/brew-installed-linked-but-not-found
==== после обновления до Sierra не работает brew ====
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Что делать
xcode-select --install
===== Программы из brew =====
Must have программы по отзывам маководов
FIXME добавить список
Мой brew список
* archey
* cowsay
* ffmpeg
* htop
* iperf
* mtr
* ncdu
* tcping
* wget
* youtube-dl
==== youtube-dl ====
* http://askubuntu.com/questions/486297/how-to-select-video-quality-from-youtube-dl
* https://github.com/rg3/youtube-dl/blob/master/docs/supportedsites.md
**Примеры использования**
Скачать видео без опций
$ youtube-dl [url]
Смотрим доступные форматы и качество
$ youtube-dl -F https://www.youtube.com/watch?v=JAB3OJMLb4I
[youtube] JAB3OJMLb4I: Downloading webpage
[youtube] JAB3OJMLb4I: Downloading video info webpage
[youtube] JAB3OJMLb4I: Extracting video information
[youtube] JAB3OJMLb4I: Downloading MPD manifest
[info] Available formats for JAB3OJMLb4I:
format code extension resolution note
140 m4a audio only DASH audio 128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 8.74MiB
171 webm audio only DASH audio 143k , vorbis@128k (44100Hz), 9.18MiB
278 webm 256x144 DASH video 111k , webm container, vp9, 1fps, video only, 6.54MiB
160 mp4 256x144 DASH video 112k , avc1.4d400c, 12fps, video only, 7.44MiB
133 mp4 426x240 DASH video 248k , avc1.4d4015, 25fps, video only, 16.72MiB
242 webm 426x240 DASH video 275k , vp9, 1fps, video only, 13.28MiB
243 webm 640x360 DASH video 487k , vp9, 1fps, video only, 25.66MiB
134 mp4 640x360 DASH video 631k , avc1.4d401e, 25fps, video only, 41.28MiB
244 webm 854x480 DASH video 856k , vp9, 1fps, video only, 49.89MiB
135 mp4 854x480 DASH video 1153k , avc1.4d401e, 25fps, video only, 75.69MiB
247 webm 1280x720 DASH video 1858k , vp9, 1fps, video only, 101.86MiB
136 mp4 1280x720 DASH video 2293k , avc1.4d401f, 25fps, video only, 150.02MiB
248 webm 1920x1080 DASH video 3008k , vp9, 1fps, video only, 155.80MiB
137 mp4 1920x1080 DASH video 4239k , avc1.640028, 25fps, video only, 278.46MiB
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k
36 3gp 320x180 small , mp4v.20.3, mp4a.40.2
43 webm 640x360 medium , vp8.0, vorbis@128k
18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k
22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
Чтобы скачать видео 1280x720 hd720 под номером 22 используем ключ ''-f''
$ youtube-dl -f 22 https://www.youtube.com/watch?v=JAB3OJMLb4I
Чтобы скачать плейлист достаточно просто указать ссылку
$ youtube-dl https://www.youtube.com/playlist?list=PLKP0pmm7wiTcmo5MPbFSZRnZYGGgj60M7
Скачиваем плейлист с дополнительными опциями
$ youtube-dl -Acfit 22 https://www.youtube.com/playlist?list=PLKP0pmm7wiTcmo5MPbFSZRnZYGGgj60M7
где
* A, --auto-number. deprecated. //Use -o "%(autonumber)s-%(title)s.%(ext)s" instead//.
* c, --continue - продолжить загрузку в случае обрыва связи
* f, --format - код формата видео
* i, --ignore-errors - игнорировать ошибки и продолжить загрузку
* t, --title - заголовок в имени файла. deprecated. теперь по-умолчанию
**Deprecated!** //Make sure you are not using -o with any of these options -t, --title, --id, -A or --auto-number set in command line or in a configuration file. Remove the latter if any.//
Если появится ошибка
//WARNING: You have requested multiple formats but ffmpeg or avconv are not installed. The formats won't be merged.WARNING: Requested formats are incompatible for merge and will be merged into mkv.//
То ставим пакет ffmpeg
brew install ffmpeg
upd dec 2019 | Если появится ошибка
zsh: no matches found: {video URL}
добавить скобки
youtube-dl 'URL'
актуально для macOS 10.15.2/zsh 5.7.1
{{tag>apple mac macos osx homebrew}}