"Рашид Ачилов. Создаем порт для FreeBSD своими руками (Часть 2) " - читать интересную книгу автора

возможности системы. Перечень основных шагов системы, выполняемых при
создании программы, был уже приведен в [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 \
http://www.nichego.net

Если метка отсутствует, считается, что файл (сайт) имеет метку по
умолчанию DEFAULT. Явно задавать ее не следует, разве что требуется
перечислить несколько групп и DEFAULT в том числе. Система свяжет DISTFILES
и MASTER_SITES, используя метки, и загрузит файлы в следующей
последовательности: сначала file1.tar.bz2 с http://www.nichego.net, потом
file2.tar.bz2 и file3.tar.bz2 с http://www.foobar.com.
Можно было бы сделать, чтобы и файл file1.tar.bz2 тоже сначала
проверялся на http://www.foobar.com, а уже потом - на
http://www.nichego.net. Для этого нужно www.foobar.com включить также и в