From owner-svn-doc-head@FreeBSD.ORG Sat Feb 22 10:29:13 2014 Return-Path: Delivered-To: svn-doc-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F0DC687F; Sat, 22 Feb 2014 10:29:12 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DAF1218BA; Sat, 22 Feb 2014 10:29:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s1MATCgf085890; Sat, 22 Feb 2014 10:29:12 GMT (envelope-from pluknet@svn.freebsd.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s1MATCFA085888; Sat, 22 Feb 2014 10:29:12 GMT (envelope-from pluknet@svn.freebsd.org) Message-Id: <201402221029.s1MATCFA085888@svn.freebsd.org> From: Sergey Kandaurov Date: Sat, 22 Feb 2014 10:29:12 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r44027 - head/ru_RU.KOI8-R/books/porters-handbook X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the doc tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Feb 2014 10:29:13 -0000 Author: pluknet Date: Sat Feb 22 10:29:12 2014 New Revision: 44027 URL: http://svnweb.freebsd.org/changeset/doc/44027 Log: MFen up to before splitting porters-handbook. book.xml r42833 -> r43827 uses.xml r43006 -> r43793 versions.xml r42930 -> r43967 Modified: head/ru_RU.KOI8-R/books/porters-handbook/book.xml head/ru_RU.KOI8-R/books/porters-handbook/uses.xml head/ru_RU.KOI8-R/books/porters-handbook/versions.xml Modified: head/ru_RU.KOI8-R/books/porters-handbook/book.xml ============================================================================== --- head/ru_RU.KOI8-R/books/porters-handbook/book.xml Sat Feb 22 03:14:51 2014 (r44026) +++ head/ru_RU.KOI8-R/books/porters-handbook/book.xml Sat Feb 22 10:29:12 2014 (r44027) @@ -10,14 +10,20 @@ $FreeBSD$ $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.xml,v 1.136 2006/10/20 09:25:00 marck Exp $ - Original revision: r42833 + Original revision: r43827 --> - - Руководство FreeBSD по созданию портов - + + + + + Руководство &os; по созданию портов - The FreeBSD Documentation Project + + The &os; Documentation Project + $FreeBSD$ @@ -37,27 +43,32 @@ 2011 2012 2013 - - The FreeBSD Documentation Project + The &os; Documentation + Project - &trademarks; - &legalnotice; + + &tm-attrib.freebsd; + &tm-attrib.unix; + &tm-attrib.sun; + &tm-attrib.general; + + $FreeBSD$ Введение - Коллекция портов FreeBSD является способом, используемым - практически каждым для установки приложений ("портов") на FreeBSD. - Как и почти всё остальное во FreeBSD, эта система в основном является + Коллекция портов &os; является способом, используемым + практически каждым для установки приложений ("портов") на &os;. + Как и почти всё остальное во &os;, эта система в основном является добровольно поддерживаемым начинанием. Важно иметь это в виду при чтении данного документа. - Во FreeBSD любой может прислать новый порт либо изъявить желание + Во &os; каждый может прислать новый порт либо изъявить желание поддерживать существующий порт, если его никто ещё никто не поддерживает—вам не нужно иметь никаких особых привилегий на внесение изменений, чтобы это делать. @@ -70,7 +81,7 @@ обновить существующий? Великолепно! Ниже находятся некоторые указания по созданию нового порта для - FreeBSD. Если вы хотите обновить существующий порт, вы должны + &os;. Если вы хотите обновить существующий порт, вы должны прочесть их, а затем . Если этот документ недостаточно подробен, вы должны обратиться к @@ -114,11 +125,24 @@ Здесь предполагается, что программное обеспечение компилируется без проблем как есть, то есть для работы приложения на вашей системе - FreeBSD не потребовалось абсолютно никаких изменений. Если + &os; не потребовалось абсолютно никаких изменений. Если требовалось что-то изменить, то вам придется обратиться также и к следующему разделу. + + Перед началом портирования рекомендуется установить + переменную &man.make.1; DEVELOPER в + /etc/make.conf. + + &prompt.root; echo DEVELOPER=yes >> /etc/make.conf + + Эта настройка включает режим разработчика, + в котором отображаются предупреждения при использовании + устаревших конструкций и задействуются некоторые дополнительные + проверки при вызове команды make. + + Создание файла <filename>Makefile</filename> @@ -132,12 +156,9 @@ PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ -MAINTAINER= asami@FreeBSD.org +MAINTAINER= youremail@example.com COMMENT= Cat chasing a mouse all over the screen -MAN1= oneko.1 -MANCOMPRESSED= yes - .include <bsd.port.mk> @@ -150,7 +171,8 @@ MANCOMPRESSED= yes Посмотрим, сможете ли вы его понять. Не обращайте внимание на содержимое строчки $FreeBSD$, она - будет заполнена автоматически системой SVN, когда порт будет + будет заполнена автоматически системой + Subversion, когда порт будет импортирован в наше дерево портов. Вы можете найти более подробный пример в разделе пример Makefile. @@ -178,8 +200,8 @@ MANCOMPRESSED= yes из README или страниц справочника; слишком часто они не являются кратким описанием порта или имеют неудобный формат (например, страницы - справочника выровнены пробелами, поскольку это выглядит в - особенности плохо с моноширинными шрифтами). + справочника выровнены пробелами, что особенно плохо + смотрится с моноширинными шрифтами). Хорошо составленный pkg-descr @@ -225,16 +247,14 @@ WWW: http://www.oneko.org//usr/local). - Если вы используете переменные - MANn (а вы должны - это делать), то указывать страницы справочника здесь не - нужно. Если порт во время установки создает каталоги, убедитесь, - что добавили строку @dirrm для удаления + Если порт во время установки создает каталоги, убедитесь, + что добавлены строки @dirrm для удаления каталогов при удалении пакета. Вот маленький пример: bin/oneko +man/man1/oneko.1.gz lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm @@ -242,7 +262,7 @@ lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko Обратитесь к странице справочной системы по команде - &man.pkg.create.1; с подробным описанием формата списка + &man.pkg-create.8; с подробным описанием формата списка упаковки. @@ -270,6 +290,7 @@ lib/X11/oneko/mouse.xpm Makefile: PLIST_FILES= bin/oneko \ + man/man1/oneko.1.gz \ lib/X11/app-defaults/Oneko \ lib/X11/oneko/cat1.xpm \ lib/X11/oneko/cat2.xpm \ @@ -293,7 +314,7 @@ PLIST_DIRS= lib/X11/onekoОбратной стороной такого способа перечисления файлов и каталогов порта является невозможность использования - последовательностей команд, описанных в &man.pkg.create.1;. + последовательностей команд, описанных в &man.pkg-create.8;. Поэтому он подходит для простых портов, что делает их ещё более простыми. Одновременно с этим положительным моментом является уменьшение количества файлов в коллекции портов. Пожалуйста, @@ -333,22 +354,34 @@ PLIST_DIRS= lib/X11/oneko pkg-plist не содержит ничего сверх того, - что устанавливается вашим портом + что устанавливается портом pkg-plist содержит абсолютно все, что - устанавливается вашим портом + устанавливается портом - Ваш порт может быть переустановлен множество раз с помощью - указания цели reinstall + Порт может быть установлен с помощью + указания цели install. Это + позволяет убедиться в правильной работе сценария + установки. - Ваш порт подчищает - за собой после своего удаления + Порт может быть правильным образом удалён с помощью + указания цели deinstall. Это + позволяет убедиться в правильной работе сценария + удаления. + + + + Следует убедиться, что make package + можно запустить из-под обычного пользователя (то есть, + не из-под root). + Если это не так, в Makefile порта + должно быть добавлено NEED_ROOT=yes. @@ -356,20 +389,19 @@ PLIST_DIRS= lib/X11/onekoРекомендуемый порядок проверки - make install + make stage - make package + make check-orphans - make deinstall + make package - pkg_add package-name - + make install @@ -377,31 +409,25 @@ PLIST_DIRS= lib/X11/oneko - make reinstall - - - - make package + pkg add package-filename - make readme + make package (из-под + пользователя) - Проверьте, что ни на шаге package, ни на - шаге deinstall не выдается никаких - предупреждений. После выполнения шага 3 проверьте, что все новые - каталоги были успешно удалены. Также попробуйте запустить - программное обеспечение после выполнения шага 4, чтобы убедиться, что - оно работает правильно при установке из пакета. - - Наиболее основательным способом автоматизации этих шагов является - установка ports tinderbox. Это - обеспечивает jails, в которых вы можете проверять - все вышеуказанные шаги без изменения состояния в вашей основной - системе. Для получения дополнительной информации смотрите - ports/ports-mgmt/tinderbox. + Убедитесь, что на любом из этапов не выдается никаких + предупреждений. + + Основательное автоматизированное тестирование может быть + выполнено при помощи + ports-mgmt/tinderbox или + ports-mgmt/poudriere из Коллекции + Портов. Эти приложения используют jails, + в которых проверяются все перечисленные выше этапы без + изменения состояния основной системы. @@ -410,7 +436,7 @@ PLIST_DIRS= lib/X11/onekoБудьте добры, пользуйтесь утилитой portlint для проверки того, что ваш порт соответствует нашим рекомендациям. - Программа ports-mgmt/portlint + Программа ports-mgmt/portlint является частью Коллекции Портов. В частности, вы можете захотеть проверить, правильно ли сформирован файл Makefile и @@ -420,38 +446,45 @@ PLIST_DIRS= lib/X11/oneko Посылка нового порта - Перед посылкой нового порта удостоверьтесь, что вы прочитали - раздел о том, что можно и нельзя делать. + Перед посылкой нового порта прочитайте раздел о том, что + можно и нельзя делать. - Теперь, когда вы счастливы от своего первого порта, единственное, + Когда вы наконец довольны своим первым портом, единственное, что осталось сделать, это включить его в основное дерево портов - &os; и осчастливить этим всех остальных. Нам не нужен ни ваш + &os; и осчастливить этим всех остальных. Нам не нужен ни каталог work, ни пакет - pkgname.tgz, так что удалите их прямо сейчас. - Затем (предположим, что ваш порт зовут oneko) перейдите в каталог - выше, там, где находится каталог oneko, и наберите - следующее: shar `find oneko` > oneko.shar - - Включите ваш файл oneko.shar - в сообщение об ошибке и пошлите - его с помощью программы &man.send-pr.1; (обратитесь к разделу - Сообщения об ошибках и общие замечания для получения подробной - информации о программе &man.send-pr.1;). Не забудьте - указать в сообщении категорию ports и класс - change-request (Не указывайте, что сообщение - имеет статус confidential!). Добавьте также - краткое описание программы, порт которой вы создали, в раздел - Description отправляемого PR (например, содержимое - COMMENT в сокращенном виде) и сам файл в виде архива - shar, поместив его в раздел Fix. + pkgname.tgz, так что удалите их прямо + сейчас. + + Затем получите файл &man.shar.1;. Предполагая, что порт + называется oneko, перейдите в каталог выше, где находится + каталог oneko, и наберите: + shar `find oneko` > oneko.shar + + Включите oneko.shar в сообщение об + ошибке и пошлите его с помощью &man.send-pr.1;. Обратитесь к + разделу + Сообщения об ошибках и общие замечания для получения + подробной информации о &man.send-pr.1;). + + Укажите в сообщении категорию ports и + класс change-request. + Не указывайте, что сообщение имеет статус + confidential! Добавьте краткое описание + программы в поле Description отправляемого PR + (например, содержимое COMMENT в сокращённом + варианте) и сам файл в виде архива .shar + в поле Fix. - Вы можете значительно облегчить нашу работу, если в тему - сообщения о проблеме поместите хорошее описание. Мы рекомендуем - нечто вроде New port: <категория>/<название - порта> <краткое описание порта> для новых портов. - Если вы следуете этой схеме, то шансы на то, что на ваше PR вскоре - кто-то взглянет, гораздо выше. + Хорошее описание в заголовке сообщения о проблеме + значительно облегчает работу коммиттеров портов. Для новых + портов мы предпочитаем нечто вроде New port: + <категория>/<название порта> <краткое + описание порта>. Следование этой схеме + упрощает и ускоряет начало работы по добавлению нового + порта. Повторим ещё раз, что не нужно включать ни оригинальный @@ -460,16 +493,17 @@ PLIST_DIRS= lib/X11/onekomake package; для новых портов используйте &man.shar.1;, но не &man.diff.1;. - После того как вы послали порт, пожалуйста, потерпите. - Иногда включение нового порта во &os; может занять до нескольких - месяцев, а иногда всего несколько дней. - Здесь вы можете найти список PR для портов ожидающих своей - очереди для включения во &os;. - - Мы рассмотрим ваш порт, при необходимости вернём его обратно, а - затем включим порт в наше дерево. Ваше имя также будет добавлено - в список - Дополнительных контрибуторов проекта FreeBSD и другие + После отправки порта, пожалуйста, потерпите. Время, + необходимое для включения нового порта во &os;, может занимать + от нескольких дней до нескольких месяцев. + Здесь можно увидеть список ожидающих PR для портов. + + После рассмотрения нового порта мы при необходимости вам + ответим, а затем включим порт в наше дерево. Ваше имя также + будет добавлено в список + Дополнительных контрибуторов проекта &os; и другие файлы. @@ -502,10 +536,9 @@ PLIST_DIRS= lib/X11/onekoDISTDIR. Если цель fetch не может найти требуемые файлы в - каталоге DISTDIR, то он будет искаться по + каталоге DISTDIR, то они будут искаться по указателю URL MASTER_SITES, который - устанавливается в Makefile, а также на нашем основном FTP-сервере - по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/, + устанавливается в Makefile, а также на наших FTP зеркалах, куда мы по возможности помещаем дистрибутивные файлы для архива. Затем она попытается сгрузить указанный файл с помощью FETCH, полагая, что запрашивающая машина имеет @@ -558,11 +591,22 @@ PLIST_DIRS= lib/X11/oneko Выполняется цель build. Она отвечает за переход в собственный рабочий каталог порта - (WRKSRC) и его построение. Если задана - переменная USES= gmake, будет использоваться - GNU-версия утилиты make, в противном случае - будет использована системная утилита - make. + (WRKSRC) и его построение. + + + + Выполняется цель stage. + Конечный набор построенных файлов помещается во временный + каталог (STAGEDIR, смотрите + ). Иерархия этого + каталога отражает иерархию каталогов системы, в которую + данный пакет будет устанавливаться. + + + + Выполняется цель install. + В систему копируются файлы, перечисленные в pkg-plist + порта. @@ -608,8 +652,9 @@ PLIST_DIRS= lib/X11/oneko - Теперь вы представляете, что происходит, когда пользователь - набирает команду make, теперь давайте пройдемся + Теперь, когда вы представляете, что происходит, когда + пользователь набирает команду make install, + давайте пройдемся через шаги, рекомендуемые для создания настоящего порта. @@ -706,22 +751,44 @@ PLIST_DIRS= lib/X11/onekoСоздание патчей Файлы, которые добавлялись или изменялись в процессе создания - порта, могут быть выявлены вызовом программы &man.diff.1;, + порта, могут быть выявлены программой &man.diff.1;, а результат работы этой программы может быть в дальнейшем передан - программе &man.patch.1;. Каждый патч, который вы собираетесь - применить, должен быть сохранен в файл с именем + программе &man.patch.1;. Такое действие с обычным файлом + подразумевает сохранение копии файла с первоначальным содержимым + перед внесением каких-либо изменений. + + &prompt.user; cp file file.orig + + Патчи сохраняются в виде файлов с именем patch-*, где - * обозначает путь к файлу, к которому - применяется патч, такой как + * обозначает путь к файлу, + к которому применяется патч, такой как patch-Imakefile или - patch-src-config.h. Эти файлы должны находиться в + patch-src-config.h. + + После того как файл был изменён, используется &man.diff.1; + для получения разницы между первоначальной и изменённой + версиями. Параметр указывает &man.diff.1; + выводить разницу в унифицированном формате, + который также является предпочтительным. + + &prompt.user; diff -u file.orig file > patch-pathname-file + + Для порождении патчей для новых добавляемых файлов + используется параметр , который заставляет + &man.diff.1; трактовать несуществующие прежде файлы как если + бы они существовали, но имели пустое содержимое: + + &prompt.user; diff -u -N newfile.orig newfile > patch-pathname-newfile + + Файлы с патчами помещаются в каталоге PATCHDIR - (как правило, это files/), + (как правило, это files/), откуда они будут взяты автоматически. Все патчи обязаны быть сделаны относительно каталога WRKSRC (как правило, это каталог, в который распаковывается исходный архив и где будет выполняться построение). Для упрощения внесения изменений и - обновлений вы должны избегать наличия более чем одного патча для + обновлений избегайте наличия более чем одного патча для одного и того же файла (например, патчей patch-file и patch-file2, оба меняющих файл WRKSRC/foobar.c). @@ -732,14 +799,23 @@ PLIST_DIRS= lib/X11/onekopatch-src-freeglut__joystick.c. - Пожалуйста, используйте для именования ваших патчей только символы + Пожалуйста, используйте для именования патчей только символы [-+._a-zA-Z0-9]. Не используйте любые другие - символы, кроме этих. Не называйте ваши патчи как - patch-aa или patch-ab и - так далее, всегда ссылайтесь на путь и название файла в названиях + символы, кроме этих. Не называйте патчи как + patch-aa или patch-ab, + всегда ссылайтесь на путь и название файла в названиях самих патчей. - Не помещайте строки RCS в патчи. SVN будет изменять их при + Существует альтернативный упрощённый способ создания + патчей для существующих файлов. Первые шаги те же самые: + создание копии неизменённого файла с расширением + .orig и внесение изменений. После этого + используйте make makepatch, чтобы обновить + файлы с патчами в каталоге files данного + порта. + + Не помещайте строки RCS в патчи. + Subversion будет изменять их при помещении файлов в дерево портов, и когда мы будем их оттуда извлекать, они будут уже другие, поэтому применение патчей окончится неудачей. Строчки RCS предваряются знаком доллара @@ -754,65 +830,72 @@ PLIST_DIRS= lib/X11/onekoMakefile, когда как порт использует Imake или GNU-версию программы configure, и так далее, - не нужны, и должны быть удалены. Если вы отредактировали файл - configure.in и запустили - autoconf для перегенерации + не нужны, и должны быть удалены. Если было необходимо + отредактировать файл configure.in и + запустить autoconf для перегенерации configure, не нужно включать файлы diff для configure (они частенько вырастают до нескольких - тысяч строк!); задайте USE_AUTOTOOLS=autoconf:261 и + тысяч строк!). Вместо этого задайте + USE_AUTOTOOLS=autoconf:261 и включите diff-файл для configure.in. - Также постарайтесь минимизировать в ваших патчах объем + Старайтесь минимизировать в патчах объём нефункциональных изменений с пустыми символами. В мире Открытого Исходного Кода является распространенным совместное использование проектами больших объемов кодовой базы, но с различными стилями - и правилами отступов. Если вы берете работающую функциональную - часть из одного проекта для исправления похожей области в другом, - то будьте аккуратны, пожалуйста: получаемый однострочный патч - может быть полон нефункциональных изменений. Это не только - увеличивает размер репозитория SVN, но также усложняет поиск того, - что конкретно вызвало проблему и что вы вообще изменили. - - Если вам нужно удалить файл, то вы можете сделать это при - выполнении цели post-extract вместо того, - чтобы оформлять это как часть патча. + и правилами отступов. При копировании работающей функциональной + части из одного проекта для исправления похожей области в другом, + будьте аккуратны, пожалуйста: получаемый однострочный патч + может указаться полон нефункциональных изменений. Это не только + увеличивает размер репозитория Subversion, + но также усложняет поиск того, + что конкретно вызвало проблему и что вообще поменялось. + + Если нужно удалить файл, сделайте это при выполнении цели + post-extract, вместо того чтобы + оформлять это как часть патча. Простые перемещения могут быть выполнены непосредственно из Makefile порта с использованием &man.sed.1; в - режиме in-place. Это очень удобно, когда вам нужно применить патч - на значение переменной. Пример: + режиме in-place. Это удобно, когда при изменении используется + значение переменной: post-patch: @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README - Довольно часто бывают ситуации, когда портируемое программное - обеспечение, особенно если основной платформой разработки является - &windows;, использует конвенцию CR/LF для большинства своих исходных - файлов. Это может быть причиной проблем с дальнейшей упаковкой, - предупреждениями компилятора, выполнением скриптов - (/bin/sh^M not found) и так далее. Для быстрой + Довольно часто в исходных файлах портируемого программного + обеспечения используется конвенция CR/LF. Это может стать + причиной проблем с дальнейшей упаковкой, предупреждениями + компилятора или выполнением скриптов (таких как + /bin/sh^M not found). Для быстрого преобразования всех файлов из CR/LF просто в LF добавьте - USE_DOS2UNIX=yes в Makefile - порта. Может быть указан перечень преобразуемых файлов: + в Makefile порта эту запись: + + USES= dos2unix - USE_DOS2UNIX= util.c util.h + Может быть задан точный список преобразуемых файлов: - Если вы хотите преобразовать группу файлов в разных подкаталогах, - то для этого можно использовать DOS2UNIX_REGEX. + USES= dos2unix +DOS2UNIX_FILES= util.c util.h + + Используйте DOS2UNIX_REGEX, чтобы + преобразовать группу файлов в разных подкаталогах. Его параметром является регулярное выражение, совместимое с - find. Подробнее о формате в &man.re.format.7;. - Эта опция используется для преобразования всех файлов заданного - расширения, к примеру всех исходных файлов, не затрагивая двоичные - файлы: - - USE_DOS2UNIX= yes -DOS2UNIX_REGEX= .*\.(c|cpp|h) - - Если вы хотите создать патч на основе существующего файла, то вы - можете его скопировать с расширением .orig, а - затем изменить исходный. Цельmakepatch - запишет соответствующий файл с патчем в каталог - files данного порта. + &man.find.1;. Подробнее о формате в &man.re.format.7;. + Такой вариант удобен для преобразования всех файлов заданного + расширения. Для примера, преобразуем все исходные файлы, + не затрагивая двоичные файлы: + + USES= dos2unix +DOS2UNIX_REGEX= .*\.([ch]|cpp) + + Другим вариантом является использование + DOS2UNIX_GLOB, который вызывает + find для каждого из перечисленных в нём + элементов. + + USES= dos2unix +DOS2UNIX_GLOB= *.c *.cpp *.h @@ -913,13 +996,16 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)PORTREVISION используются - автоматизированными инструментами (например, &man.pkg.version.1;) + автоматизированными инструментами (например, + pkg version, см. &man.pkg-version.8;) для определения факта появления нового пакета. Значение PORTREVISION должно увеличиваться каждый раз, когда в порте FreeBSD делаются изменения, которые - достаточно сильно затрагивают содержимое или структуру - соответствующего пакета. + как-либо меняют получаемый пакет. Сюда относятся только + изменения, затрагивающие построение пакета с параметрами по + умолчанию. Примеры случаев, когда значение PORTREVISION должно быть увеличено: @@ -1009,7 +1095,7 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)PORTEPOCH Время от времени разработчик программного обеспечения или - создатель порта FreeBSD делают что-то не так и выпускают версию + создатель порта &os; делают что-то не так и выпускают версию программы, номер которой меньше предыдущей версии. Примером этого является порт, название которого меняется с foo-20000801 на foo-1.0 (изначально это не считалось бы более новой версией, так как @@ -1018,9 +1104,8 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h) Результат сравнения номера версии не всегда очевиден. Для выполнения сравнения двух строк с номером версии можно - использовать &man.pkg.version.1;. Эквивалентом в - pkgng является - pkg version -t. Например: + использовать pkg version + (см. &man.pkg-version.8;). Например: &prompt.user; pkg_version -t 0.031 0.29 > @@ -1060,7 +1145,7 @@ DOS2UNIX_REGEX= .*\.(c|cpp|h)PORTVERSION может появиться необходимость её иметь, если в будущих релизах программное обеспечение должно изменить структуру номера версии. - Однако создателям портов нужно быть внимательными, когда + Однако создателям портов для &os; нужно быть внимательными, когда разработчик выпускает релиз без официального номера версии — эдакие промежуточные релизы. Имеется соблазн пометить релиз датой его выхода, что может вызвать проблемы, как и @@ -1091,7 +1176,7 @@ PORTVERSION= 0.10 Обнаружена брешь в безопасности, исправление которой потребовало создания - локального патча для FreeBSD. Соответственно было увеличено + локального патча для &os;. Соответственно было увеличено значение переменной PORTREVISION. PORTNAME= gtkmumble @@ -1165,40 +1250,6 @@ PORTEPOCH= 1 частью значения переменной PORTNAME. - - <varname>LATEST_LINK</varname> - - LATEST_LINK задает в процессе построения - пакета короткое имя ссылки, которые могут использоваться при - выполнении команды pkg_add -r. Это позволяет, - к примеру, установить последнюю версию perl, используя - pkg_add -r perl, без знания точного номера - версии. Такое имя должно быть уникальным и очевидным для - пользователей. - - В некоторых случаях в коллекции портов может присутствовать - несколько версий программы одновременно. Обе системы, построения - индексов и построения пакетов, нуждаются в способности их видеть - как разные, независимые порты, хотя все они могут иметь схожее - значение для PORTNAME, - PKGNAMEPREFIX и даже - PKGNAMESUFFIX. В этих случаях для всех портов - кроме главного следует присвоить различные значения для - необязательной переменной LATEST_LINK — - чтобы получить пример ее использования, смотрите порты - lang/gcc46 и lang/gcc, - а также семейство www/apache*. При установке - NO_LATEST_LINK ссылки не создаются; эта - необязательная переменная может быть указана во всех версиях, - кроме главной. Обратите - внимание, как выбирать главную версию — - самую популярную, самую поддерживаемую, - с наименьшими изменениями и так далее — это - выходит за рамки рекомендаций этого руководства; мы всего лишь - сообщаем вам, как указывать версии других портов после того, как - вы выбрали главный. - - Соглашения по именованию пакетов @@ -1218,7 +1269,7 @@ PORTEPOCH= 1 - FreeBSD пытается поддерживать языки, на которых разговаривают + &os; пытается поддерживать языки, на которых разговаривают её пользователи. Часть language- должна быть двухсимвольным сокращением от названия языка по стандарту ISO-639, если порт специфичен для конкретного языка. @@ -1262,9 +1313,8 @@ PORTEPOCH= 1 имеют одинаковый PORTNAME, является вполне нормальным, как для портов www/apache*; в этом случае различные версии (и различные записи в индексе) - отличаются по значениям PKGNAMEPREFIX, - PKGNAMESUFFIX и - LATEST_LINK. + отличаются по значениям PKGNAMEPREFIX + и PKGNAMESUFFIX. @@ -1613,7 +1663,7 @@ PORTEPOCH= 1 docs* - Мета-порты для документации FreeBSD. + Мета-порты для документации &os;. @@ -1902,7 +1952,7 @@ PORTEPOCH= 1 ports-mgmt Порты для управления, установки и разработки - портов и пакетов FreeBSD. + портов и пакетов &os;. @@ -2158,7 +2208,9 @@ PORTEPOCH= 1 Порты, устанавливающие загружаемые модули ядра, должны содержать виртуальную категорию kld в - строке CATEGORIES. + строке CATEGORIES. Это одно из действий, + выполняемых автоматически с добавлением + kmod в строке USES. @@ -2694,7 +2746,7 @@ EXTRACT_ONLY= source.tar.gz В последующих разделах информация будет даваться вместе с - реализацией этой идеи во FreeBSD. Мы несколько улучшили концепцию + реализацией этой идеи во &os;. Мы несколько улучшили концепцию OpenBSD. @@ -3358,9 +3410,9 @@ ALWAYS_KEEP_DISTFILES= yes Старайтесь делать строку COMMENT длиной не больше, чем 70 - символов, так как эта строка будет использована программой - &man.pkg.info.1; для отображения однострочного описания - порта; + символов, так как эта строка будет использована командой + pkg info (см. &man.pkg-info.8;) для + отображения однострочного описания порта; @@ -3442,7 +3494,7 @@ ALWAYS_KEEP_DISTFILES= yes Когда URL, в которых указаны доступные версии, отличаются от URL их загрузки. Например, чтобы привязать проверку новых версий дистрибутивных файлов к странице загрузки для порта - databases/pgtune, + databases/pgtune, добавьте: PORTSCOUT= site:http://pgfoundry.org/frs/?group_id=1000416 @@ -3482,9 +3534,10 @@ ALWAYS_KEEP_DISTFILES= yes отсутствует. Зависимость проверяется дважды, один раз внутри цели - extract, а затем из цели + build, а затем из цели install. Кроме того, имя зависимости - помещается в пакет, так что &man.pkg.add.1; будет + помещается в пакет, так что pkg install + (см. &man.pkg-install.8;) будет автоматически её устанавливать, если её нет на пользовательской системе. @@ -3537,7 +3590,8 @@ ALWAYS_KEEP_DISTFILES= yes Зависимость проверяется внутри цели install. Кроме того, имя зависимости - помещается в пакет, так что программа &man.pkg.add.1; + помещается в пакет, так что pkg install + (см. &man.pkg-install.8;) будет автоматически его устанавливать, если он не будет найден в пользовательской системе. Часть target может быть опущена, если она @@ -3562,7 +3616,7 @@ ALWAYS_KEEP_DISTFILES= yes которые обрабатываются в ports/Mk/bsd.*.mk для пополнения первоначальных зависимостей построения. Например, USES= gmake добавляет - devel/gmake в + devel/gmake в BUILD_DEPENDS. Для предотвращения загрязнения RUN_DEPENDS подобными дополнительными зависимостями проявляйте осторожность с присвоением с раскрытием, @@ -3675,15 +3729,15 @@ ALWAYS_KEEP_DISTFILES= yes <varname>USES</varname> - Существует несколько параметров для определения различных - видов характерных особенностей и зависимостей, которыми - обладает рассматриваемый порт. Они могут быть указаны путём - добавления следующей строки в Makefile - порта: + Могут быть добавлены параметры для определения различных + характерных особенностей и зависимостей, которыми + обладает данный порт. Они указываются путём добавления + в Makefile этой строки: USES= feature[:arguments] - Для получения полного списка значений смотрите . + Для получения полного списка значений смотрите + . Значение USES нельзя присваивать @@ -3855,7 +3909,7 @@ ALWAYS_KEEP_DISTFILES= yes Технология построения портов не защищена от зацикленных зависимостей. Если вы создадите такую, то у кого-нибудь и - где-нибудь установка FreeBSD будет немедленно сломана, а у остальных + где-нибудь установка &os; будет немедленно сломана, а у остальных сломается несколько позже. Это на самом деле очень трудно распознать; если вы сомневаетесь, то перед внесением изменений проверьте, что выполнили следующее: cd /usr/ports; make @@ -3880,7 +3934,7 @@ ALWAYS_KEEP_DISTFILES= yes .include <bsd.port.pre.mk> .if exists(${LOCALBASE}/bin/foo) -LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar .endif @@ -3904,7 +3958,7 @@ BAR_DESC= Bar support .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MBAR} -LIB_DEPENDS= bar:${PORTSDIR}/foo/bar +LIB_DEPENDS= libbar.so:${PORTSDIR}/foo/bar .endif @@ -3936,7 +3990,8 @@ LIB_DEPENDS= bar:${PORTSDIR}/foo/bar В некоторых случаях для большего контроля над зависимостями используются переменные WANT_, которые позволяют указывать требования в более точной форме. - Например, взгляните на порт mail/squirrelmail. Этому порту + Например, взгляните на порт + mail/squirrelmail. Этому порту нужны несколько модулей PHP, которые перечислены в переменной USE_PHP: @@ -3948,8 +4003,8 @@ LIB_DEPENDS= bar:${PORTSDIR}/foo/bar WANT_PHP_WEB= yes Имеющиеся переменные USE_ и - WANT_ определены в файлах - /usr/ports/Mk. + WANT_ определены в файлах в + /usr/ports/Mk. @@ -3989,7 +4044,7 @@ RESOLUTION?= 300 .endif - Порт japanese/xdvi300 содержит + Порт japanese/xdvi300 содержит также все обычные патчи, файлы для пакета и так далее. Если вы введете здесь команду make, она возьмет в качестве разрешения значение по умолчанию (300) и построит порт обычным образом. @@ -4017,98 +4072,14 @@ MASTERDIR= ${.CURDIR}/../xdvi300 Страницы Справочника - Переменные MAN[1-9LN] автоматически добавят любые - страницы Справочника к файлу pkg-plist (это - означает, что вам не нужно указывать страницы - Справочника в файле pkg-plist—обратитесь к - главе о генерации файла PLIST для - получения более подробной информации). Это также позволяет на этапе - установки автоматически упаковывать и распаковывать страницы - Справочника в зависимости от значения переменной - NO_MANCOMPRESS в файле - /etc/make.conf. - - Если ваш порт пытается задать несколько имен для страниц - Справочника при помощи символических или жестких ссылок, то вы должны - использовать переменную MLINKS, чтобы указать на - это. Ссылка, установленная вашим портом, будет уничтожена и создана - заново сценарием bsd.port.mk для проверки того, - что она указывает на правильный файл. Любые страницы Справочника, - перечисленные в переменной MLINKS, не должны фигурировать в файле - pkg-plist. - - Для указания того, что страницы Справочника нужно сжимать во - время установки, используйте переменную - MANCOMPRESSED. Эта переменная может принимать три - значения - yes, no и - maybe. yes означает, что - страницы Справочника устанавливаются уже сжатыми, no - означает, что они не сжимаются и maybe означает, что - программное обеспечение принимает во внимание значение переменной - NO_MANCOMPRESS, так что сценарию - bsd.port.mk ничего дополнительно делать не - нужно. - Если ваш порт определяет корнем для файлов Справочника каталог, отличный от PREFIX, вы можете использовать - переменную MANPREFIX, чтобы задать его явно. Кроме - того, если страницы только некоторых разделов помещаются в - нестандартное место, например, в случае портов модулей языка - perl Perl, вы можете установить маршруты к справочным - страницам индивидуально, при помощи - MANsectPREFIX (где - sect принимает значения - 1-9, L или - N). - - Если страницы Справочника помещаются в подкаталоги, соответствующие - некоторому языку, то задайте название языка языка в переменной - MANLANG. Значение этой переменной по умолчанию - равно "" (то есть только английский язык). - *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***