Многофайловые дистрибутивы и внешние патчи
Многофайловые дистрибутивы и внешние патчи
Обычно программа состоит всего из одного файла архива. Но порт зачастую состоит не только из архива исходных текстов программы — в него могут входить дополнительные архивы, файлы данных, файлы драйверов, дополнительные файлы, используемые в процессе построения. Хорошо, конечно, когда есть свой собственный 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 включить также и в группу DEFAULT:
MASTER_SITES= http://www.foobar.com/:foobar,DEFAULT
Один и тот же файл может входить в несколько групп. Равным образом в одну группу могут входить несколько файлов. Естественно, допускается использование подстановки переменных:
GSI_VERSION= 2005-01-20
DISTFILES+= gsi-$(GSI_VERSION)-sorted.txt.bz2:oorus,oorus2
INFRA_PATCHEXT= OOo_1.1.4_infra_patches
DISTFILES+= ${INFRA_PATCHEXT}.tar.gz: DEFAULT,oorus
MASTER_SITES+= http://ootrans.i-rs.ru/out/:oorus
MASTER_SITES+= ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru/:oorus2
MASTER_SITES+= ftp://ftp/granch.ru/pub/openoffice
В данном фрагменте файл gsi-2005-01-20-sorted.txt.bz2 будет скачиваться сначала с http://ootrans.i-rs.ru/out, потом с ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru, а файл OOo_1.1.4_infra_patches.tar.gz — сначала с ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru, потом с ftp://ftp.granch.ru/pub/openoffice.
Когда стоит пользоваться такой возможностью? Когда порт может состоять из большого количества файлов и хочется сделать возможность обойтись без загрузки файлов, которые не нужны.
Например, это не было сделано в порту editors/openoffice-1.1, и в результате чего исходные тексты Mozilla Suite (обьема немалого — 35 Мб) загружались независимо от желания пользователя ее использовать.
Использование внешних патчей во многом похоже на загрузку файлов исходного кода программы, только здесь используются переменные PATCH_SITES и PATCHFILES:
PATCH_SITES= ftp://ftp.cis.upenn.edu/pub/xv/
PATCHFILES= ${DISTNAME}.JPEG-patch ${DISTNAME}.TIFF-patch
croppad.patch grabpatch vispatch
deepcolor.patch gifpatch exceed_grab.patch
tiff1200.patch gssafer.patch
Имейте в виду, что патчи, заданные в PATCHFILES, применяются до применения патчей из подкаталога files! То есть последовательность действий будет выглядеть так:
===> Patching for xv-3.10a_5
===> xv-3.10a_5 depends on file: /usr/local/bin/perl5.8.7 — found
===> Applying distribution patches for xv-3.10a_5
===> Applying FreeBSD patches for xv-3.10a_5
Когда стоит использовать внешние патчи? Разработчики обычно используют их, чтобы избежать выпуска нового релиза программы (так обычно поступают разработчики Squid — вместо выпуска нового релиза они выкладывают патчи значительного обьема), авторы портов, не являющиеся разработчиками программы, — чтобы внести в исходный текст изменения, с которыми автор может быть не согласен, если они достаточно обьемные и их нельзя поместить непосредственно в дерево портов, для расширения функциональности и т. д.
Следует учесть то, что если патч не создан с использованием стандартной процедуры diff, то его нельзя применять описанным методом и необходимо предусмотреть для него специальную обработку (см. пример в описании порта для OpenOffice).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Патчи и программы от Microsoft
Патчи и программы от Microsoft Windows 2000 Service Packhttp://www.microsoft.com/windows2000/downloads/servicepacks/default.aspВ комментариях не нуждается. На странице Microsoft можно выбрать любые из существующих на сегодня SP для W2k.High encription packhttp://www.microsoft.com/windows2000/downloads/recommended/encryption/default.aspПатч, долгое время бывший
1.5. Дистрибутивы
1.5. Дистрибутивы На данный момент существует множество различных дистрибутивов Linux, но несмотря на это легко проглядывается схожесть между ними, т.к. большинство имеет общие корни. Например, многие дистрибутивы построены на основе Red Hat Linux. Компании-производители вносят
1.2. Дистрибутивы Linux
1.2. Дистрибутивы Linux В любой операционной системе можно выделить 4 основных части: ядро, файловую структуру, интерпретатор команд пользователя и утилиты. Ядро - это основная, определяющая часть ОС, которая управляет аппаратными средствами и выполнением программ. Файловая
Проблема 6. После установки Fedora 8 не удается загрузить ранее установленные дистрибутивы Linux
Проблема 6. После установки Fedora 8 не удается загрузить ранее установленные дистрибутивы Linux Объясню суть проблемы. На моем компьютере до установки Fedora 8 были установлены две операционные системы: OpenSuSE 10.3 и Windows XP. После установки Fedora 8 я смог загрузить только Windows XP и Fedora 8-
Внешние соединения
Внешние соединения В отличие от внутреннего соединения оператор внешнего соединения выбирает строки участвующих таблиц, даже если в некоторых случаях не найдено соответствие. Когда полное соответствие строк не может быть сформировано соединением, тогда
1.2. Ubuntu и другие дистрибутивы
1.2. Ubuntu и другие дистрибутивы В мире Linux самым популярным дистрибутивом считается Ubuntu. Вы можете возразить: «Как это Ubuntu, а другие популярные дистрибутивы?» Да, несколько лет назад, когда вышла моя первая книга по Ubuntu, ситуация была такова, что пользователи отдавали
Внешние устройства
Внешние устройства Акустические системы В главе, посвященной звуковым платам, мы уже говорили, что для хорошего звука самой дорогой и продвинутой «звуковушки» недостаточно! Львиная доля ответственности за качество звучания лежит именно на акустических системах (в
14.4 Внешние определения
14.4 Внешние определения программа: внешнее_определение внешнее_определение программавнешнее_определение: определение_функции описаниеопределение_функции: спецификаторы_описания opt описатель_функции инициализатор_базового opt тело_функцииописатель_функции: описатель (
Внешние устройства
Внешние устройства Уверен, всем читателям пригодятся утилиты, работающие с приводами оптических дисков, flash-накопителями, принтерами и другими периферийными устройствами. В данном разделе представлены небольшие, но очень полезные программы.Nero
Внешние DVB-тюнеры
Внешние DVB-тюнеры Внешние DVB-тюнеры представляют собой небольшое устройство для приема сигнала со спутниковой антенны и обработки его в цифровую форму. Обычно эти устройства подключаются к компьютеру посредством интерфейса USB2.0, но также существуют специальные модели
Сделать исправления программ (патчи), повышающие безопасность
Сделать исправления программ (патчи), повышающие безопасность Нет идеальных систем. Во всех есть дыры, которые нужно залатать. При установке любой системы в сети нужно устанавливать и патчи безопасности в них (в операционные системы). Также необходимо установить патчи