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

Установка программ и утилит из портов в FreeBSD

Привет! Давно ничего не писал. Собственно говоря, у меня на то было много причин, я закончил служить в армии, переехал жить в другой город, нашел работу, делал дела. Время летело быстро и незаметно. Блог совсем был заброшен мною. Я постораюсь исправиться и снова начать регулярно писать для вас мануалы и статьи. Благо теперь времени и мотивации у меня выше крыши! Сегодня речь пойдет о системах UNIX, а именно об FreeBSD. Сказать, что я не в восторге от UNIX’ов, это не сказать ничего. Очень странное семейство =) Я бы и внимания не обратил на UNIX, но так получилось, что там где я работаю, используют Solaris от Sun, AIX от IBM и FreeBSD от сообщества. Теперь статей на тему UNIX’ов будет много, возможно кому-то это поможет освоиться с UNIX быстрее и конечно же решить многие проблемы. Сегодня все очень просто, давайте установим и настроим порты в FreeBSD после установки свежей фряхи.

Что такое «порты»?

Коллекция портов FreeBSD (англ. FreeBSD Ports Collection), как и бинарные пакеты (англ. package) является технологией установки программного обеспечения сторонних разработчиков в операционной системе FreeBSD. Порт FreeBSD для любого конкретно взятого приложения является набором файлов (Makefile, патчей, файлов описаний, и размещается в каталоге /usr/ports), предназначенных для автоматизации процесса компиляции приложения из исходного кода. В настоящее время коллекция портов насчитывает более 22 тысяч приложений самого разного назначения.


Термин port — сокращение от portability, то есть переносимость: один и тот же порт может быть установлен на машины с разной архитектурой и версией ОС, тогда как пакеты собираются для конкретной версии FreeBSD и аппаратной платформы.

Информация из Wikipedia + FreeBSD.org

Установка портов во FreeBSD

Давайте рассмотрим такую ситуацию, вы только что поставили свежую сборку FreeBSD 8.2 Загрузились и видите черный экран который предлогает вам ввести логинпароль и далее пускает вас в режим консоли во все тот же черный экран. Первое, что меня убило наповал, во FreeBSD по дефолту нет bash или dash (так привычной нам) оболочки.
Вместо этого какой-то мало понятный csh.

Справка:
csh – C shell (csh) — командная оболочка UNIX со встроенным скриптовым языком, разработанная Биллом Джоем, активным разработчиком BSD UNIX и создателем редактора vi, в 1979 году.

csh такаой же мутный как и редактор vi, по этому, эта POSIX-совместимая штуковина вообще нихрена не юзабильна. Так вот, вы хотите поставить для начала родной bash. Как это сделать? Ставить нужно из портов…которых вдруг нет. Это легко проверить, порты распологаются в папке /usr/ports/ если их там нет, значит нужно поставить.

Внимание!
Все действия по установке портов нужно проводить от имени root’a. Получить root’a можно так:

login root

Для получения портов существует несколько разных, одинаково полезных вариантов:
Через утилиту sysinstall
Через CVSup
Через систему доставки портов Portsnap

Метод первый, используем sysinstall

Получение портов через утилиту настройки и установки FreeBSD sysinstall.
Как root запустите утилиту:

login root

/usr/sbin/sysinstall

1) Идем в Configure,
2) Идем в Distributions,
3) Находим ports и жмакаем пробел,
4) Tab’ом переходим на кнопку OK,
5) Выбираем от куда будем ставить порты (FTP, HTTP, DVD etc…)

Метод второй, через CVSup

Справка:
CVSup это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии.


CVSup использует так называемую опрашивающую (pull) модель обновления. Работая по этой модели, каждый клиент запрашивает обновления с сервера, если и когда они нужны. Сервер пассивно ожидает запросы на обновление от своих клиентов. Таким образом, все обновления инициируются клиентами. Сервер никогда не высылает не запрошенные обновления. Пользователь для получения обновлений должен либо запустить CVSup клиента вручную, либо добавить задание в cron для настройки периодических обновлений в автоматическом режиме.

Термин CVSup, написанный с заглавными буквами, означает весь пакет программного обеспечения. Его основные компоненты это клиент cvsup, запускаемый на каждом пользовательском компьютере, и сервер cvsupd, работающий на каждом зеркале FreeBSD.

Тут всё немного сложнее, если вы хотите получать пакеты от сервера, расположенного ближе всего к вашему местоположению, то делайте так:
cp /usr/share/examples/cvsup/ports-supfile /root/ports-supfile

Если вы запустите csup на обработку этого файла, вы получите ошибку вида:
csup /root/ports-supfile

Name lookup failure for “CHANGE_THIS.FreeBSD.org”: hostname nor servname provided, or not known

Это нормально. Нужно просто отредактировать файл /root/ports-supfile:
csup -h cvsup.uk.FreeBSD.org /root/ports-supfile

Или просто откройте файл с помощью vi:
vi /root/ports-supfile

И найдите там строчку:
host=CHANGE_THIS.FreeBSD.org

И замените часть CHANGE_THIS на cvsup.uk для Великобритании например.
Получив: cvsup.uk.FreeBSD.org

Далее натравите утилиту cvsup на файл:
cvsup -g -L 2 /root/ports-supfile

Или все одной командой:
csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile


Метод третий, с помощью Portsnap

Пожалуй это самый простой и без-геморойный метод. Тут вы выполняете просто три команды:
Загрузить сжатые снапшоты портов в /var/db/portsnap:
portsnap fetch

Далее распакуйте порты в /usr/ports при первом запуске:
portsnap extract

Если вы уже выполняли эту команду, то запустите апдейт:

portsnap update

Кстати, обновление портов, к примеру раз в месяц, вы можете настроить в /etc/crontab добавив туда строчку:

0 3 * * * root /usr/sbin/portsnap cron

За сим все! С портами поконченно. Теперь вы можете смело приступить к установке программ и утилит во FreeBSD.

Как установить программуутилиту во FreeBSD?

По факту, тут только два пути:
1) Путь первый, установить программу из портов
2) Путь второй, установить программу из уже готовых пакетов


Установка из портов.
Предположим вам нужна программа bash. (а она вам точно нужна)

Найти её в портах очень просто:
whereis bash

видим там наш путь: /usr/ports/shells/bash
Смело шагаем туда:
cd /usr/ports/shells/bash

И собираем наш shell:
make install clean

Утилита shell скомпилируется и успешно установится по адресу: /usr/local/bin/bash Там будут лежать все проги которые вы поставите. Если конечно вы сами ничего не поменяете.

Для удаления программы, идете в порты:
cd /usr/ports/shells/bash

И удаляете программу:
make deinstall
make clean

Путь второй, через утилиту pkg
Ставим пакет lsof:
pkg_add -r lsof

Удаляем пакет lsof:
pkg_delete lsof

Проверяем версии пакетов:
pkg_version -v

Для доп. информации:
pkg_info

Файлы пакетов распространяются в формате *.tgz
Вы можете найти их по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages

Вся информация о пакете хранится в каталоге /var/db/pkg.
Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.

Обновлено: 12.03.2015