The Apple Geek

Чему ты научился сегодня?

Менеджер пакетов Homebrew

UPD 20.09.2011: Кирилл Воронин правильно заметил: “С тех пор прошел почти год и теперь пользователю достаточно набрать в терминале одну команду”

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

Для общего же развития можете почитать, как устанавливался Homebrew раньше.

Мир технологий подвержен влиянию трендов. Как для web-сервисов сейчас трендом является NoSQL, так для любителей Unix под Mac - Homebrew.

Homebrew - это новый и многообещающий менеджер пакетов. MacPorts мне уже давно не нравится тем, что он начинает тащить слишком много всего, что и так есть штатно в системе (например, perl).

Продемонстрирую красноречивый пример:

$ port deps git-core    Full Name: git-core @1.7.0.2+doc    Runtime Dependencies: rsync, perl5, p5-error    Library Dependencies: curl, zlib, openssl, expat, libiconv

При установке пакета поставятся rsync, который не копирует Resource Forks, perl5.8.x (при том, что штатно стоят 5.8.9 и 5.10.0), curl, в котором отсутствуют несколько протоколов по сравнению со штатным, и дубли zlib, openssl, expat и libiconv. И при этом отказаться от установки зависимостей простым образом не удастся.

Пока я не могу проанализировать достоинства и недостатки новой системы, это придёт в процессе работы. Пока я не уверен насчёт оперативности обновлений пакетов, но растущее community на github позволяет надеяться на лучшее.

Поэтому расскажу как поставить Homebrew и начать использовать. Мне система понравилась - такой локальный идеал для помеси Unix-администратора и программиста (git & Ruby).

Страница проекта: ”Homebrew. The missing package manager for OS X”. Проект размещён на GitHub. Установка описана в официальном Wiki.

XCode

Нужен XCode. Если не понятно зачем, то можно спокойно перестать читать эту статью.

Желательно удалить каталоги /usr/local/lib и /usr/local/include

У меня там было почти пусто, разве что стояли библиотеки для cli Handbrake, поэтому спокойно удалил lib и include. Но в вашем случае нужно взвешивать - например, если вы сами ставили mc, то он перестанет работать. С другой стороны вы потом сможете переставить все пакеты сами. Но это решение целиком за вами, я не буду ничего рекомендовать.

Удаление MacPorts (необязательно)

MacPorts я давно не использую, поэтому решил полностью удалить его вместе со всеми пакетами. Как это сделать, вы можете посмотреть детальнее в документации.

Напомню - если вам для работы нужны какие-либо пакеты, установленные в MacPorts, или вы используете MySQL, Apache и т.п., то я не рекомендую удалять MacPorts. Вы рискуете остаться без своих инструментов в момент, когда они вам очень будут нужны. Также если вы решили всё-таки переустанавливать всё с нуля, то лучше подождать со сносом до окончания установки новых пакетов в Homebrew - вы можете столкнуться с тем, что какой-то пакет был скомпилирован с особенной опцией.

Повторяю, я на ноутбуке уже давно не пользовался пакетами MacPorts, поэтому спокойно могу их снести. Для начала я составил список того, что будет нужно переустановить в новой системе:

$ port installed...corkscrew @2.0_0+darwin_i386 (active)lftp @4.0.2_0 (active)lynx @2.8.6rel.5_1+ssl (active)mtr @0.75_0+darwin_10 (active)...

Удаляю все установленные пакеты:

$ sudo port -f uninstall installed

Удаляю все следы MacPorts, включая /opt/local:

$ sudo rm -rf \    /opt/local \    /Applications/DarwinPorts \    /Applications/MacPorts \    /Library/LaunchDaemons/org.macports.* \    /Library/Receipts/DarwinPorts*.pkg \    /Library/Receipts/MacPorts*.pkg \    /Library/StartupItems/DarwinPortsStartup \    /Library/Tcl/darwinports1.0 \    /Library/Tcl/macports1.0 \    ~/.macports

Готово. Если в этот момент вы вспомнили о важном файле, который вы только что удалили, то вспоминайте, как пользоваться Time Machine. Ведь вы же делаете регулярные бекапы, не так ли?

Путь в переменных окружения

Путь к /usr/local/bin должен быть в переменной окружения $PATH. Я помещаю её в ~/.profile:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/bin:/usr/local/sbin:/usr/local/git/bin"export PATH

В определённых случаях может понадобиться модифицировать файл ~/.MacOSX/environment.plist, добавив туда переменную окружения PATH:

Вы заметили путь к GIT - я его описывал в статье Установка Git под Mac OS X. В установочном пакете есть скрипт, который автоматически правит ~/.MacOSX/environment.plist.

Установочный скрипт

Идём на github ruby-скрипт . Он расположен на сервисе gist.github - это очень интересный сервис для обмена фрагментами кода.

Можно его списывать в браузере (будет сформирован и списан архив tar.gz, его нужно будет развернуть):

Или же в консоли:

$ curl http://gist.github.com/gists/323731/download -o install_homebrew.tar.gz$ tar xvfz install_homebrew.tar.gz x gist323731-3535cf3d066ed38db4e99d3f1f4a409fc07eda54/x gist323731-3535cf3d066ed38db4e99d3f1f4a409fc07eda54/install_homebrew.rb$ cd gist323731*$ chmod +x install_homebrew.rb

Установка Homebrew

Запускаем скрипт под пользователем без всяческого sudo:

$ ./install_homebrew.rb

С первого раза установить скорее всего не получится, и нужно будет проделать некоторые манипуляции.

Каталог /usr/local мог быть раньше создан с разнообразными неправильными правами, поэтому по результату выполнения скрипта нужно их подправить. Например, если права были 777, то будет сообщение:

Press enter to continue./install_homebrew.rb:44: warning: Insecure world writable dir /usr/local in PATH, mode 040777

Нужно прервать скрипт и выполнить команду:

$ sudo chmod 755 /usr/local

Ещё очень важно поменять группу для /usr/local с wheel на staff:

$ sudo chgrp -R staff /usr/local$ sudo chmod 775 /usr/local/

После очередной итерации Homebrew поставился:

==> This script will install:/usr/local/bin/brew/usr/local/Library/Formula/.../usr/local/Library/Homebrew/...Press enter to continue==> Downloading and Installing Homebrew...==> Installation successful!Yay! Now learn to brew:    brew help

Использование Homebrew

Поиск:

$ brew search git

Информация по пакету

$ brew info git

Установка пакета:

$ brew install git

Обновление Homebrew (нужен git)

$ brew update

Список установленных пакетов:

$ brew list

Удаление пакета:

$ brew uninstall mc

Список пакетов, для которых есть обновления:

$ brew outdated

Мои любимые пакеты

Восстанавливаю пакеты, которые я использовал в MacPorts.

$ brew install mtr$ brew install corkscrew$ brew install lftp$ brew install lynx

Comments