Создаем порт для FreeBSD своими руками. Часть II | страница 2



Задание параметров сборки порта значительно повышает удобство работы с ним. Многие порты имеют не один десяток переменных «WITH_FOO=yes WITHOUT_BAR=yes», которые не то, что набрать в командной строке — запомнить непросто! Например, порт graphics/ImageMagick имеет 26 переменных типа «WITHOUT_IMAGEMAGICK_SOME=yes». Если бы автор порта сделал экран опций, работать с таким портом было бы гораздо проще.

Дополнение или замена части процедур создания порта — это крайне важные возможности системы. Перечень основных шагов системы, выполняемых при создании программы, был уже приведен в.[1] Но возможно ли, скажем, установить через систему портов бесплатную программу с закрытым исходным текстом? Думаете, нет? Можно. И именно для этого были реализованы механизмы дополнения и/или замены части процедур сборки порта. Мы рассмотрим их в соответствующем разделе.

А теперь пора перейти от слов к делу.

Многофайловые дистрибутивы и внешние патчи

Обычно программа состоит всего из одного файла архива. Но порт зачастую состоит не только из архива исходных текстов программы — в него могут входить дополнительные архивы, файлы данных, файлы драйверов, дополнительные файлы, используемые в процессе построения. Хорошо, конечно, когда есть свой собственный ftp-сервер, в надежности которого не сомневаешься.

В этом случае файлы дистрибутива просто перечисляются:


DISTFILES= file1.tar.bz2 \

file2.tar.bz2 \

file3.tar.bz2


при этом все данные файлы будут последовательно запрошены со всех перечисленных сайтов в MASTER_SITES и с основного сайта FreeBSD, если они не будут обнаружены. Но что же делать тем, кто не имеет собственных серверов и размещает файлы на публичных хостингах? Для этого в системе есть специальная возможность связывания определенных файлов и определенных сайтов так, чтобы при поиске файлов система просматривала только некоторые определенные сайты. Эта возможность называется «MASTER_SITES: n».

Возьмем приведенный выше пример. Допустим, у нас имеются веб-сайты www.foobar.com и www.nichego.net. Сайт www.foobar.com находится за рубежом, имеет быстрый и надежный канал. www.nichego.net находится в г. Тьмутаракани и подключен к Интернету через модем на 28.8 кБит. Как сделать так, чтобы система брала только file1.tar.gz с www.nichego.net, а остальные — с www.foobar.com? Нужно ассоциировать метки и с файлами, и с сайтами:


DISTFILES= file1.tar.bz2 \

file2.tar.bz2:foobar \

file3.tar.bz2:foobar

MASTER_SITES= http://www.foobar.com/:foobar \