RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
apple:osx:homebrew

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

apple:osx:homebrew [2021/02/27 02:31] – внешнее изменение 127.0.0.1apple:osx:homebrew [2022/01/24 17:50] (текущий) dx
Строка 1: Строка 1:
 +====== Homebrew ======
  
 +{{ :apple:osx:homebrew_logo.png?nolink|}}
 +
 +TL;DR: homebrew это пакетный менеджер для Mac OS X аналогичный yum (CentOS) или apt-get/aptitude (Debian).
 +
 +Если в Linux мы ставим ПО следующим образом:
 +
 +<code>
 +CentOS - yum install htop
 +Debian - apt-get install htop
 +</code>
 +
 +То с brew будет возможность ставить ПО через терминал:
 +
 +<code>brew install htop</code>
 +
 +Почему именно 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]]
 +
 +<code bash>
 +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
 +}
 +</code>
 +
 +Помимо самого 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 выполняем
 +
 +<code bash>$ xcode-select --install</code>
 +
 +Смотрим версию
 +
 +<code bash>
 +$ xcode-select -v
 +xcode-select version 2343.
 +</code>
 +
 +{{:apple:osx:homebrew_command_line_tools_1.png?nolink&500|}}
 +
 +{{:apple:osx:homebrew_command_line_tools_2.png?nolink&500|}}
 +
 +==== Установка homebrew ====
 +
 +<code bash>/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"</code>
 +
 +Теперь можно расслабиться и откинуться на спинку кресла.\\
 +FIXED Нельзя, т.к. это Мак и здесь не надо ждать целый час пока что-то произойдет.
 +
 +{{:apple:osx:homebrew_install.png?nolink&500|}}
 +
 +Для удаления
 +
 +<code bash>ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"</code>
 +
 +[[https://github.com/Homebrew/install|Новый вариант]]
 +
 +<code bash>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"</code>
 +
 +==== Рекламный блок ====
 +
 +Съешь еще этих сочных берез, да выпей самогона! *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
 + \\ <del>brew remove --force $(brew list)</del> \\ <del>brew remove --force $(brew list) --ignore-dependencies</del> | Удалить все установленные пакеты |
 +| brew cleanup | После при желании можно удалить скаченные архивы |
 +
 +==== Tap и Cask ====
 +
 +{{:apple:osx:homebrew_barrels.jpg?nolink&600|}}
 +
 +У Homebrew довольно интересная пивоваренная терминология. FIXME раздел будет обновлен
 +
 +  * Formula / Формула
 +  * Taps / Кран
 +  * Casks / Бочки
 +  * Keg / Кеги или бочонки
 +  * Cellar / Погреб
 +
 +===== Ошибки, баги, глюки, howto =====
 +
 +==== Отключить сбор информации ====
 +
 +[[https://docs.brew.sh/Analytics|Кто следит и что собирают]]
 +
 +Отключить
 +
 +<code bash>
 +export HOMEBREW_NO_ANALYTICS=1
 +brew analytics off
 +</code>
 +
 +==== Управление сервисами в homebrew ====
 +
 +via http://paul.elms.pro/blog/2015/09/28/brew-services/
 +
 +<code>
 +brew tap homebrew/services
 +brew update
 +
 +# справка по использованию
 +brew services
 +# запускаем сервис (будет загружаться после логина пользователя)
 +brew service start redis
 +# останавливаем сервис
 +brew service stop redis
 +# запускаем сервис через sudo (будет запускаться без логина пользователя и с правами root)
 +sudo brew service start openvpn
 +</code>
 +
 +==== Как собрать программу из исходников ====
 +
 +Установить nmap из исходных кодов
 +
 +<code>$ brew install --build-from-source nmap</code>
 +
 +Переустановить/собрать все программы установленные через brew
 +
 +<code>$ brew list | xargs brew reinstall --build-from-source</code>
 +
 +==== Error: /usr/local must be writable! ====
 +
 +При запуске **brew doctor** появляется сообщение **Error: /usr/local must be writable!**
 +
 +Чиним
 +
 +<code>sudo chown -R $(whoami) /usr/local</code>
 +
 +==== %command% not found ====
 +
 +<code>
 +dx-mac:~ dx$ mtr
 +-bash: mtr: command not found
 +dx-mac:~ dx$ sudo mtr
 +sudo: mtr: command not found
 +</code>
 +
 +При этом если указывать полный путь к бинарнику, то успешно запускается
 +
 +<code>sudo /usr/local/sbin/mtr</code>
 +
 +поэтому делаем
 +
 +<code>echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile</code>
 +
 +и чтобы не перелогиниваться применяем сразу изменения
 +
 +<code>source $HOME/.bash_profile</code>
 +
 +**Бонус**. Избавляемся от ошибки ''mtr: unable to get raw sockets.''
 +
 +<code>
 +chmod 4755 /usr/local/sbin/mtr
 +sudo chown root /usr/local/sbin/mtr
 +</code>
 +
 +UPD Не работает в Sierra.
 +
 +  * https://github.com/Homebrew/homebrew/issues/27729
 +  * http://superuser.com/questions/925240/brew-installed-linked-but-not-found
 +
 +==== после обновления до Sierra не работает brew ====
 +
 +<code>
 +xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
 +</code>
 +
 +Что делать
 +
 +<code>xcode-select --install</code>
 +
 +===== Программы из 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
 +
 +**Примеры использования**
 +
 +Скачать видео без опций
 +
 +<code>$ youtube-dl [url]</code>
 +
 +Смотрим доступные форматы и качество
 +
 +<code>
 +$ 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)
 +</code>
 +
 +Чтобы скачать видео 1280x720 hd720 под номером 22 используем ключ ''-f''
 +
 +<code>$ youtube-dl -f 22 https://www.youtube.com/watch?v=JAB3OJMLb4I</code>
 +
 +Чтобы скачать плейлист достаточно просто указать ссылку
 +
 +<code>$ youtube-dl https://www.youtube.com/playlist?list=PLKP0pmm7wiTcmo5MPbFSZRnZYGGgj60M7</code>
 +
 +Скачиваем плейлист с дополнительными опциями
 +
 +<code>$ youtube-dl -Acfit 22 https://www.youtube.com/playlist?list=PLKP0pmm7wiTcmo5MPbFSZRnZYGGgj60M7</code>
 +
 +где
 +
 +  * 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
 +
 +<code>brew install ffmpeg</code>
 +
 +upd dec 2019 | Если появится ошибка
 +
 +<code>zsh: no matches found: {video URL}</code>
 +
 +добавить скобки
 +
 +<code>youtube-dl 'URL'</code>
 +
 +актуально для macOS 10.15.2/zsh 5.7.1
 +
 +{{tag>apple mac macos osx homebrew}}