Когда я приобрел Мак, я не подразумевал использование Mac OS X как основной операционной системы. Однако, когда я нашел большое количество открытых проектов, портированных на Мак, это изменило мои намерения.
Mac OS X является средой гораздо более дружественной к открытым проектам чем, например, Windows. Во-первых, Mac OS X построена на основе Unix. А во-вторых, Mac OS X достаточно широко распостранена среди энтузиастов открытого программного обеспечения. Как следствие популярности, для Mac OS X существует несколько систем так называемых портов (от слова port) программ с открытым кодом. В них находятся порядка нескольких тысяч программ. Такое разнообразие портов поднимает Mac OS X почти до уровня Linux (в глазах приверженца этой операционной системы).
Какую систему портов выбрать? На сегоднешний день их несколько: Fink (finkproject.org), DarwinPorts (darwinports.com) и MacPorts (macports.org). MacPorts является последователем проекта DarwinPorts, поэтому нет смысла выбирать DarwinPorts. Между Fink и MacPorts мне больше понравился MacPorts, так как в нем оказались более новые версии программ. И вообще, MacPorts более активен, чем Fink.
Какие программы можно найти в портах? Мне, как человеку, привыкшему к Linux, было приятно найти в MacPorts почти все, что я использовал под Linux. Например: gcc4.4, gcc4.5 (последний snapshot), boost (последней версии, в отличии он многих дистров Linux), htop, MacVim (прекрасный UI для Vim), nmap (включая ZenMap), python (2.6.4, 3.1.1), pan2, многие Gnome’овские программы и т.д. Конечно, некоторые из этих программ можно найти отдельно в специальных бандлах (bundle) для Mac OS X. Однако, когда они находятся под управлением системы портов, то операции по их установке, удалению и обновлению очень сильно облегчены.
Ясно, что MacPorts - это вещь суперполезная. Перейдем к практическим упражнениям. Что необходимо для установки и конфигурирования MacPorts?
Прежде всего нужно установить Apple Xcode Developer Tools (с установочного диска Mac OS X или с сайта
http://developer.apple.com/tools/xcode/). Без них MacPorts работать не будет. Потом нужно скачать и установить MacPorts.pkg, следуя по этой ссылке:
http://www.macports.org/install.php, где в зависимости от вашей операционной системы нужно выбрать правильный pkg. После установки, из терминала будет доступна команда ‘port’ (без ковычек). Более-менее полное описание к ней можно почитать, как обычно, с помощью ‘man port’. А для тех, кому интересны все детали, можно заглянуть в директорию /opt/local, куда по-умолчанию устанавливается сам MacPorts и все его пакеты.
Конфигурация. В принципе, можно ничего совсем не конфигурировать и сразу начать устанавливать пакеты. Хотя знать о конфигурациооных опциях все-таки полезно. Поэтому начнем с них.
Конфигурационные файлы для MacPorts находятся в директории /opt/local/etc/macports. Главный конфиг файл, macports.conf, достаточно неинтересен. Настройки по-умолчанию будут работать в большинстве случаев. Следующий файл, на котором мы остановим внимание, это variants.conf. Вот его уже полезно привести заранее в тот вид, который нужен. Дело в том, что пакеты из MacPorts собираются из исходников прямо на вашей машине. Каждый пакет может собираться в соответствии с различными конфигурационными опциями. Набор опций, с которым пакет собирается в определенную конфигурацию называется вариантом (variant). У каждого пакета может быть несколько вариантов, с которыми полезно ознакомиться перед установкой пакета (как, я покажу немного позже). Но иногда желательно, чтобы определенные варианты были включены по-умолчанию. Вот для этого и нужен variants.conf.
Я советую, если вы на Leopard или Tiger, добавить в variants.conf следующую строку:
+no_x11 +quartz
Она инструктирует пакеты, которые обычно зависят от X Window System (X11), использовать вместо нее родную графическую систему Quartz (для Snow Leopard эти варианты еще не полностью работают). Кстати, если вы вынуждены собирать с зависимостями от X11, то необходимо установить пакет X11 с диска Mac OS X.
В сети еще можно найти рекомендацию добавлять вариант +bytecode, который включает bytecode interpreter в пакете freetype. Но мне показалось, что без этого варианта шрифты отображаются куда лучше в X11 программах чем с ним.
Ну, теперь пора и что-нибудь установить. Установим что-нибудь полезное, например, MacVim.
Для начала посмотрим какие пакеты с Vim есть в MacPorts. Это делается командой:
$ port search vim
На что мы получаем в ответ что-то типа следующего:
MacVim @7.2.snapshot51 (editors)
MacVim is a GUI version of vim for Mac OS X
vim @7.2.315 (editors)
Vi "workalike" with many additional features
Из чего мы видим, что MacVim доступен. Полезно также посмотреть какие зависимости он с собой несет:
$ port deps macvim
И, что более важно, какие варианты он имеет:
$ port variants macvim
Вариантов у него достаточно много, но не стоит пугаться. Вполне можно устанавливать и без вариантов. Но я предпочитаю вот такую конфигурацию (конкретно для MacVim): +cscope+huge+python26.
Перейдем, собственно, к установке:
$ nice sudo port install macvim +cscope+huge+python26
Что особенного в этой команде: во-первых устанавливать пакеты нужно под root-ом (sudo), иначе они не попадут в /opt/local. Во-вторых, полезно выполнять установку с низким приоритетом (nice), иначе графическая система Mac OS X очень сильно затормаживается во время компиляции исходников. У меня при сборке gcc с обычным приоритетом safari подвисал на несколько минут (забавно - но факт!).
При установке MacVim, port скачает сам пакет и все его зависимости, скомпилирует их, установит, а потом удалит все временные файлы. Этот процесс обычно занимает определенное время, в которое можно сходить попить кофе, можно “красноглазить” (наблюдать за процессом установки), а можно и заниматься другой работой на Маке, благо port запущен с низким приоритетом, и совершенно не помешает вашей работе.
После установки иногда интересно посмотреть, какие исполняемые файлы есть в этом пакете. Что можно сделать так:
$ port contents macvim | grep local.bin
/opt/local/bin/mview
/opt/local/bin/mvim
/opt/local/bin/mvimdiff
/opt/local/bin/mvimex
Ну вот и все! В следующий раз я расскажу как устанавливать из MacPorts Gnome программы, как сделать их более-менее приятно выглядещими и некоторые другие тонкости MacPorts.