>Хочу поставить порт! набираю make install ... после чего происходит попытка найти
>порт и установить... прикол в чем:
>
>Я нахожу соответствующий файл в указанном пути, а make install ругается... Ладно!
>Я переписываю этот фал в /usr/ports/distfiles/ пишу make install - результат
>тот же (версию порта и архива проверял, NO_CHECKSUM=yes писал). Блин мне
>надо порт поставиить! И дерево портов недавно обновлял.
>
>Есть файл .tar.gz файл ... Что с ним сделать после разархивирования? Что
>б он поставился?
man ports
http://www.opennet.me/tips/sml/36.shtml
дерево портов: /usr/ports/категория
конкретный порт: /usr/ports/категория/название_порта
содержимое порта:
/usr/ports/категория/название_порта/Makefile - файл сборки проекта
/usr/ports/категория/название_порта/distinfo - md5 контрольные суммы дистрибутивов которые будут собраны
/usr/ports/категория/название_порта/files - директория в которой содержатся freebsd-related патчи для данного программного продукта
/usr/ports/категория/название_порта/scripts - директория со скриптами создания дополнительной конфигурации или зависимого Makefile.inc
файлы:
pkg-comment - краткое описание данного продукта
pkg-desc - чуть более расширенное описание данного продукта
pkg-plist - список всего что будет установлено в систему посредством make install
pkg-message - важное сообщение которое будет выдано после make install
pkg-install - обычно скрипт дополнительняющий набор необходимых действий при "make install"
терминология структуры портов:
/usr/ports - все дерево портов
/usr/ports/INDEX - список всех портов
/usr/ports/INDEX.db - база портов
/usr/ports/README - прочти меня
/usr/ports/distfiles - место куда будет затягиваться дистрибутив необходимый для сборки порта
/usr/ports/Mk - необходимые make includes файлы для сборки портов в дополнение к /usr/share/mk
обычный или mini-port - обычный порт
мета, meta-port - порт большого программного продукта, в реалии пустышка из нескольких mini-port'ов необходимых для сборки ПОЛНОГО meta-port'а.
Например:
/usr/ports/x11/XFree86-4 - это мета-порт объединяющий установку нескольких
мини-портов необходимых для установки всего XFree86-4, список мини-портов
указан в /usr/ports/x11/XFree86-4/Makefile
Сборка:
1) cd /usr/ports/категория/название_порта
2) make
по команде make, будет просматриваться содержимое /usr/ports/distfiles
на предмет наличия в нем дистрибутива[ов] cat distinfo, если таковые
отсутствуют там, будет производиться скачивание данного дистрибутива
с основного сайта: ftp.freebsd.org.
Управлять этим процессом можно определив ряд необходимых переменных
в файле /etc/make.conf (который создается на основе /etc/defaults/make.conf)
MASTER_SITE_BACKUP?= \
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
закоментарим две верхние строчки и зададим ближайший к нам сайт с зеркалом
distfiles, например:
#MASTER_SITE_BACKUP?= \
# ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
#--lavr
MASTER_SITE_BACKUP?= \
ftp://ftp.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
MASTER_SORT_REGEX?= ^file: ^ftp://ftp\.FreeBSD\.org/pub/FreeBSD/ports/local-distfiles/ ://[^/]*\.ru/ ://[^/]*\.ru\.
если у нас выход в Internet через PROXY, определяем следующие переменные
в том же файле, если PROXY с авторизацией, man 3 fetch:
FETCH_ENV= FTP_PROXY=ftp://10.0.0.1:21
FETCH_ENV= HTTP_PROXY=http://10.0.0.1:80
При сборке портов можно использовать много полезных переменных среды,
полезно в тех или иных случаях:
less /usr/share/mk/bsd.README
less /usr/ports/Mk/bsd.port.mk
man ports
3) make install
после успешной сборки п.2, произвести установку собранного продукта в
систему, обычно: PREFIX=/usr/local, где /usr/local - альтернативная
структура базовой системы: "/", "/etc", "/bin", "/sbin", "/usr/lib" и тд
4) make clean
удалить все что осталось после сборки, обычно директорию work в данном
продукте и всех зависимостях которые были собраны и автоматически установлены при сборке данного продукта
Удалить установленные порты или пакеты можно:
make de-install или man pkg_delete
при сборке порта, в пункте 2)
make - производит несколько операций, скачивание, накладывание патчей,
конфигурирование проекта перед сборкой и саму сборку, при необходимости,
мы можем выполнять по шагам вместо make:
make fetch
make checksum
make depends
make extract
make patch
make configure
make build
чтобы в реалии не выполнять make, а лишь посмотреть что будет сделано:
make -n
иногда удобно в командной строке задать все необходимые команды (см. используемый вами SHELL):
cd /usr/ports/категория/название_порта
make && make install && make clean
однако некоторые порты требует интерактивного вмешательства, чтобы
этого не произошло, необходимо посмотреть Makefile, записать все
необходимые опции с которыми мы будем собирать данный порт и выполнить:
make WITH_ИМЯОПЦИИ=yes WITHOUT_ИМЯОПЦИИ=yes BATCH=yes install && make clean
BATCH=yes обеспечивает пакетную сборку порта.
Материал для изучения:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html
http://www.FreeBSD.org.ua/porters-handbook/ - на русском