Вчера я слегка рассказал об установке XCode, сегодня же “вернёмся к корням” - займёмся установкой программ Open Source. Вместе с XCode поставляются все средства разработки, поэтому мы можем теперь скомпилировать любой пакет (configure, make, make install). Но простая компиляция имеет огромный недостаток - поддерживать программы в актуальном состоянии можно исключительно вручную, нужно регулярно отслеживать выход новых версий десятка используемых пакетов, списывать их, и по-новому компилировать. Решить эту проблему призваны менеджеры пакетов (для Linux это yum, apt, для FreeBSD - система портов).
Под Mac OS X самыми распространёнными являются MacPorts и Fink. MacPorts использует идеологию BSD, Fink - Debian Linux. Мне больше нравится BSD, поэтому я использую первый менеджер. Его и рассмотрим сейчас.
Установка MacPorts
Для начала необходимо установить X11 с установочного диска Mac OS X и XCode.
Затем - списать установочный пакет под свою версию Mac OS X (для меня это MacPorts-1.8.0-10.6-SnowLeopard.dmg) и установить его.
MacPorts использует иерархию /opt/local/ как для себя, так и для установки программ. Инсталлятор в том числе прописывает этот путь в переменные окружения:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Использование MacPorts
Запускаем Terminal.app. Нужно убедиться, что каталоги /opt прописаны в путях:
ole-mac:~ ctrld$ echo $PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Обновляем порты:
sudo port selfupdate
Ищем нужный порт (здесь sudo необязательно):
ole-mac:~ ctrld$ port search mtr mtr @0.75 (net) 'traceroute' and 'ping' in a single tool rmtrash @0.3.3 (sysutils) move the file to OS X's Trash Found 2 ports.
Можно посмотреть описание порта:
ole-mac:~ ctrld$ port info mtr mtr @0.75 (net) Variants: darwin_10, universal Description: As mtr starts, it investigates the network connection between the host mtr runs on and HOSTNAME. by sending packets with purposly low TTLs. It continues to send pack- ets with low TTL, noting the response time of the inter- vening routers. This allows mtr to print the response percentage and response times of the internet route to HOSTNAME. A sudden increase in packetloss or response time is often an indication of a bad (or simply over- loaded) link. Homepage: http://www.bitwizard.nl/mtr/ Platforms: darwin License: unknown Maintainers: mr_bond@macports.org
Установка порта:
sudo port install mtr
При установке остаются исходные тексты, скомпилированные файлы и прочее. Их можно удалить (вместо mtr, конечно же, подставив нужный порт):
sudo port clean --all mtr
Посмотреть, какие именно файлы устанавливаются с портом:
ole-mac:~ ctrld$ port contents mtr Port mtr contains: /opt/local/sbin/mtr /opt/local/share/man/man8/mtr.8.gz
Деинсталляция порта:
sudo port uninstall mtr
Перечень установленных пакетов:
port installed
Посмотреть, для каких пакетов есть обновления (предварительно нужно сделать selfupdate)
ole-mac:~ ctrld$ sudo port selfupdate ole-mac:~ ctrld$ sudo port outdated The following installed ports are outdated: wget 1.11.4_3 < 1.12_0
Обновление конкретного порта
sudo port upgrade wget
Эта команда не удаляет старый порт из списка, в итоге получается такое:
ole-mac:~ ctrld$ port installed | grep wget wget @1.11.4_3 wget @1.12_0 (active)
Для удаления старой версии нужно использовать ключ “-u” (спасибо за подсказку @akaDimiG):
sudo port -u upgrade wget
Обновление всех портов
sudo port upgrade outdated
Моё окружение
Я периодически использую скомпилированные программы, но сейчас но ноутбуке стоят только самые необходимые порты. К ним относятся:
- corkscrew. SSH-прокси. Полезная вещь для выхода по ssh через https-proxy (спасибо за подсказку @andy_shev). Я отдельно расскажу об этой системе.
- expect. Язык для диалога с интерактивными сервисами, например можно в скрипте ответить на запросы входа по telnet.
- mc. Midnight Commander. Кто ещё помнит “Norton Commander” или “Volkov Commander” поймут. Это файловая оболочка под консоль.
- mtr. Matt’s traceroute - незаменимая утилита для поиска сетевых проблем.
- subversion. Система контроля версий SVN.
- wget. Программа для списывания контента с web/ftp-серверов.