4.3. Где взять FreeBSD порт

Есть два пути получения FreeBSD port программы (port -- программа, перенесенная на FreeBSD). Первый требует FreeBSD CDROM, другой требует наличия подключения к Internet.

4.3.1. Компиляция портов, находящихся на CDROM

4.3.2. Компиляция портов из Internet

4.3.1. Компиляция портов, находящихся на CDROM

Если на вопрос ``Do you want to link the ports collection to your CDROM'', который был задан вовремя установки FreeBSD, вы ответили "yes", то начальные установки уже сделаны системой.

Если нет, то проверьте, что FreeBSD CDROM находится в дисководе для CDROM и смонтирован, например, на /cdrom . Выполните следующие команды

 # mkdir /usr/ports
 # cd /usr/ports
 # ln -s /cdrom/ports/distfiles distfiles

это позволяет механизму make находить tarballs (*tar.gz), которые нужны ports (make считает, что они должны находиться в /usr/ports/distfiles, поэтому и надо сделать ссылку из директории на CDROM, в которой хранятся tarballs (*tar.gz)).

Допустим, вам нужно установить программу gnats из директории databases. Вот как надо это делать:-

 # cd /usr/ports
 # mkdir databases
 # cp -R /cdrom/ports/databases/gnats databases
 # cd databases/gnats
 # make install

Или если вы серьезно работаете с базами данных и вам надо сравнить все базы данных доступные в Ports collection, сделайте так

 # cd /usr/ports
 # cp -R /cdrom/ports/databases .
 # cd databases
 # make install

(в команде cp действительно надо ставить точку, это не ошибка. В Unix, точка обозначает текущую директорию)

и механизм make в ports автоматически скомпилирует и установит все ports (port -- программа, перенесенная на FreeBSD) в директории databases!

Если вам такой способ не нравится, есть совершенно другой способдостичь того же результата:-

Создайте "дерево ссылок" для ports, хранящихся на CDROM, при помощи команды lndir(1), которая входит в дистрибутив XFree86. Найдите свободное место у себя на диске, создайте там директорию и войдите в нее. Затем вызовите команду lndir(1), в качестве первого аргумента этой команды задайте полный путь директории на CDROM, где хранятся ``ports'', а в качестве второго аргумента, используйте . (текущую директорию). Это, например, может быть так:

	lndir /cdrom/ports .

Теперь вы можете строить ports прямо из CDROM, и они будут строиться в "дереве ссылок", которое вы создали.

Заметим, что есть ports, исходники которых не выкладываются на CDROM, из-за ограничений в лицензии по распространению. В этом случае посмотрите раздел Компилирование с использованием доступа к Internet.

4.3.2. Компиляция портов из Internet

Если у вас нет CDROM, или вы хотите быть уверены, что у вас самая последняя версия нужного вам port, вам нужно скачать каркас(skeleton) для port. Это может прозвучать, как достаточно грязная работа, полная ловушек, как например скачивание patches в директорию pkg по ошибке, но это достаточно просто.

Смысл в том, что сервер FreeBSD FTP может создавать tarballs(*tar.gz или *tgz) на лету. Вот как это работает на примере программы gnats из директории databases (в квадратных скобках -- комментарии, не вводите их в командной строке!):-

 # cd /usr/ports
 # mkdir databases
 # cd databases
 # ftp ftp.freebsd.org
 [войти под именем `ftp' и в качестве пароля ввести свой почтовый адрес
 (e-mail). Помните, что надо использовать режим binary (двоичный)!]
 > cd /pub/FreeBSD/ports/databases
 > get gnats.tar.gz		[скачать tarballs (архив) с gnats]
 > quit
 # tar xzf gnats.tar.gz		[распаковать gnats]
 # cd gnats
 # make install			[скомпилировать и установить gnats]

Что мы делали сейчас? Мы соединились с FTP сервером и вошли в директорию с базами данных (СУБД). Затем мы дали серверу команду `get gnats.tar.gz', FTP сервер заархивировал директорию gnats и даже сжал файл перед отправкой, что ускорило передачу данных.

Затем мы распаковали этот файл и вошли в директорию gnats, чтобы построить port. Как мы объясняли ранее, make сообщил, что на локальной машине нет исходников, поэтому make пытается достать исходники сам, если не получается, то он сообщает об этом и просит пользователя достать исходники и положить их в нужное место..

Попробуем что-нибудь более сожное. Вместо одного каркаса(skeleton) для port, попробуем скачать целую директорию, например всю директорию database в ports collection. Это делается почти так же:-

 # cd /usr/ports
 # ftp ftp.freebsd.org
 [войти под именем `ftp' и в качестве пароля ввести свой почтовый адрес
 (e-mail). Помните, что надо использовать режим binary (двоичный)!]
 > cd /pub/FreeBSD/ports
 > get databases.tar.gz	[скачиваем директорию databases]
 > quit
 # tar xzf databases.tar.gz	[распаковываем архив database]
 # cd databases
 # make install		[компилируем и устанавливаем все ports в директории database]

С помощью шести команд, мы построили несколько программ, с помощью которых можно работать с несколькими СУБД на нашей машине с FreeBSD! All we did that was different from getting a single port skeleton and building it was that we got a whole directory at once, and compiled everything in it at once. Pretty impressive, no?

Если вы собираетесь устанавливать больше, чем один или два портаIf you expect to be installing more than one or two ports, it is probably worth downloading all the ports directories - this involves downloading 2 or 3MB, when they are compressed. However, don't get carried away and type 'get ports.tar.gz' unless you are prepared to download the distfiles directory as well - this contains the source code for every single port and will take a very long time to download!

Назад | Содержание | Вперед

Обновлено: 13.03.2015