Warn this file is ignored simlock ta, Разблокировка bootloader Sony Xperia - Два способа
В последующих разделах информация будет даваться вместе с реализацией этой идеи во FreeBSD. Для получения подробностей посетите вебсайт Tinderbox. Will be added on next release.
А под какую сим карту залочен, не знаю, но мтс и мегафон не работают. После покупки был только на МТС. Что это и как лечить? Первым делом попробовал ввести пин от сим Не канает. Ну ладно, спасибо и на этом Начитавшись кучу всего в интернете, я понял, что узнать пин можно по своему IMEI телефона. Дмитрий Майер. Sony z1 compact. Windows Убрал проверку драйверов.
Теперь вот. IMEI моего устройства отличается, на конце , а не , как тут. Сообщение от Дмитрий Майер. Адлет Таупихов. Чтобы скачивать фаилы и оставлять сообщения на форуме зарегистрируйтесь войдите через Вконтакте. За подробным описанием обязанностей сопровождающего порт обращайтесь к главе The challenge for port maintainers.
Перед фиксацией в репозитории изменения в порте будут отправлены сопровождающему для просмотра и одобрения. Если сопровождающий порта не ответил на запрос пользователя об обновлении в течение двух недель исключая большие праздники , то это можно считать тайм-аутом сопровождающего, и обновление может быть выполнено без явного подтверждения от сопровождающего.
Если сопровождающий не отвечает в течение трёх месяцев, то считается, что он отсутствует, и как сопровождающий порта, о котором идёт речь, может быть заменён. Запрещено делать любые несанкционированные изменения в портах, которые ведут эти группы.
Мы оставляем за собой право изменять сообщение сопровождающего для лучшего соответствия существующим политикам и стилю Коллекции Портов без явного одобрения со стороны отправителя. Также, крупные изменения в инфраструктуре могут повлечь изменения в порте без согласия сопровождающего. Такой вид изменений никогда не будет затрагивать функциональность порта.
Для перечислений используйте английскую Оксфордскую запятую англ. Oxford comma например, green, red, and blue ;. Portscout являет собой автоматизированное средство проверки доступности дистрибутивных файлов для Коллекции Портов FreeBSD, подробное описание которого предоставляет Portscout: сканер дистрибутивных файлов портов FreeBSD. Когда должны игнорироваться дистрибутивные файлы для конкретных версий или младших ревизий. Например, чтобы исключить из проверок новых версий дистрибутивных файлов версию 8.
Когда должны проверяться конкретные версии или старшие и младшие ревизии дистрибутивных файлов. Например, если следует ограничиться проверкой версии 0. Многие порты зависят от других портов. Это очень удобная замечательная особенность большинства Unix-подобных операционных систем, включая FreeBSD.
Множество портов могут использовать общую зависимость совместно, а не включать её в состав каждого порта или пакета, который в ней нуждается. Имеется семь переменных, которые вы можете использовать для обеспечения того, что всё требуемое находится на машине пользователя. Имеется также несколько предопределённых переменных, отражающих зависимости для общих случаев, плюс ещё несколько для управления поведением зависимостей.
Эта переменная указывает, от каких совместно используемых библиотек зависит порт. Это список пар lib:dir, где lib - это имя библиотеки, dir - это каталог, в котором можно ее найти в случае, если ее нет на машине. Зависимость проверяется дважды, один раз внутри цели build , а затем из цели install. Кроме того, имя зависимости помещается в пакет, так что pkg install см.
В этой переменной перечисляются выполнимые файлы или файлы, от которых зависит работа порта. Это список пар вида path:dir:target, где path - это имя программы или файла, а dir - каталог, в котором можно найти порт в случае, если его нет в системе, и target - это цель, которую нужно вызвать в этом каталоге.
В приведенном примере innd является выполнимым файлом; если выполнимый файл находится в месте, которое отсутствует в списке путей файлов, то вы должны указать полный путь к файлу.
Официальным значением переменной поиска PATH , используемым в кластере построения портов является. Зависимость проверяется внутри цели install. В этом случае, очень заманчивым или довольно естественным является присвоение одного другому:. Такое случается из-за ленивого вычисления в make 1 присваиваемых переменных.
В этой переменной перечисляются выполнимые или обычные файлы, которые требуются порту для его построения. Под "построением" здесь понимается всё, от распаковки до компиляции. Зависимость проверяется из цели extract. В этой переменной перечисляются выполняемые файлы или просто файлы, которые требуются порту для сгрузки. Как и предыдущие две переменные, это список пар path:dir:target. Зависимость проверяется при выполнении цели fetch. В этой переменной указываются программы или файлы, которые требуются для распаковки порта.
Как и в предыдущих случаях, это список пар вида path:dir:target. Зависимость проверяется внутри цели extract. Эта переменная указывает на программы или файлы, которые нужны порту для применения патчей. Зависимость проверяется внутри цели patch. Могут быть добавлены параметры для определения различных характерных особенностей и зависимостей, которыми обладает данный порт.
Они указываются путём добавления в Makefile этой строки:. Значение USES нельзя присваивать после подключения bsd. Для определения общих зависимостей, совместно используемых многими портами, предназначено несколько переменных.
Их использование является необязательным, но помогает упростить избыточность файлов Makefile порта. В частности, установка. Некоторым портам подходит любая версия, для других требуются последние современные версии.
Также в значении переменной можно указать точную версию, например 4. Минимально допустимую версию можно указать как 4. GCC из основной системы используется в случае, если его версия удовлетворяет запрошенной, иначе собирается подходящая версии компилятора из порта с соответствующей коррекцией переменных CC и CXX.
Переменные, относящиеся к gmake и сценарию configure , описаны в Механизмы построения , а autoconf, automake и libtool описаны в Использование GNU Autotools. Переменные, связанные с Perl, описаны в Использование Perl. Переменные X11 перечислены в Использование X Первое поле содержит название зависимого пакета, которое обязано совпадать с записью в базе данные пакетов, знак сравнения и версию пакета. Зависимость удовлетворяется, если на машине установлен p5-Spiffy Она по умолчанию есть install.
Это пользовательская переменная; она нигде не определена в файле Makefile порта. Когда вы набираете команду make clean , эта операция также выполняется и над зависимостями этого порта. Пользуйтесь этим, только когда вам нужно иметь исходный код другого порта. Вы можете сэкономить время на компиляции, указав также и цель. Технология построения портов не защищена от зацикленных зависимостей. Если вы создадите такую, то у кого-нибудь и где-нибудь установка FreeBSD будет немедленно сломана, а у остальных сломается несколько позже.
Этот процесс может быть достаточно медленным на старых машинах, хотя вы сможете спасти большое количество людей-включая себя-от грядущих бед. Использование прочих методов, таких как автоматическое обнаружение зависимостей, усложняет индексирование, что вызывает проблемы в управлении портами и пакетами.
Проблема автоматического добавления зависимостей заключается в том, что файлы и настройки за пределами порта могут произвольно меняться. Пример: после построения индекса устанавливается набор портов. При этом один из них устанавливает проверяемый файл. На этом этапе индекс будет неправильным, потому что установленный порт неожиданно получит новую зависимость.
Индекс может быть по прежнему неправильным даже после его перестроения, в случае если другие порты также определят дополнительные зависимости, основываясь на существовании других файлов. Правильным способом является проверка переменных параметров. Этот способ не приводит к несоответствиям в индексе набора портов, поскольку параметры определены до построения индекса.
При этом можно использовать простые скрипты для автоматизации построения, установки и обновления этих портов и соответствующих им пакетов. Порт, для которого нужен Firefox, укажет. Например, порт, который требует Apache 2.
Если вашему порту требуется построение довольно различающихся версий пакетов через переменную задающую, например, разрешение, или размер бумаги , которая принимает различные значения, создайте для каждого пакета отдельный подкаталог, чтобы пользователям было легче определить, каким пакетом воспользоваться, но попробуйте использовать совместно между портами как можно больше файлов. В типичном случае вам потребуются только очень короткие файлы Makefile во всех каталогах, кроме одного, если вы будете использовать переменные с умом.
Продемонстрируем это на примере. Если вы введете здесь команду make , она возьмет в качестве разрешения значение по умолчанию и построит порт обычным образом. Обратите внимание, что файлы страниц справочника следует размещать в pkg-plist наряду с остальными файлами. Однако, это не рекомендуется делать. Многие приложения могут быть построены в различных конфигурациях и с дополнительной функциональностью.
Например, выбор естественного человеческого языка, GUI против командной строки или типа используемой базы данных. Пользователи могут нуждаться в различных конфигурациях, отличных от используемой по умолчанию, поэтому в системе портов предусмотрен механизм, позволяющий автору порта управлять сборкой того или иного варианта конфигурации.
Правильная поддержка этих необязательных параметров облегчает пользователям жизнь и даёт два или более порта по цене одного. Эти переменные предназначены для установки системным администратором. При создании порта не давайте имя для knob, специфичное для данного приложения. В общем случае, предполагается значение по умолчанию. Если обратное не указано, то проверяется только факт установки самих переменных, но не их конкретное значение типа YES или NO.
Портеры должны использовать так называемые knobs для помощи конечным пользователям и для поддержания количества наименований knobs в небольшом количестве. Названия knobs должны отражать, что это такое и что выполняет.
Эти опции повторно используются при следующем построении порта. Затем сохраняется файл опций options , и выбранные переменные используются при построении порта.
Для удаления сохраненной конфигурации используйте make rmconfig. Они независимы друг от друга и не сгруппированы:. При описании параметров старайтесь представить себя на месте пользователя: "Что это делает? Например, описание параметра NLS как "include NLS support" "включить поддержку NLS" не поможет пользователю, который уже видит название параметра, но может не знать, что это означает.
Описав его как "Native Language Support via gettext utilities" "Поддержка национального языка через утилиты gettext" , вы поможете пользователю гораздо больше. OPTIONS можно группировать в виде переключателей, для которых разрешен выбор единственного варианта или ни одного в каждой группе:. OPTIONS также можно группировать в виде списков со множественным выбором, для которых обязан быть включен по крайней мере один из параметров:.
OPTIONS также можно группировать в виде списков со множественным выбором, для которых могут быть включены любые параметры, включая отсутствие выбора:. Вместо этого также можно использовать подключение bsd. При использовании сценария GNU configure, следите за тем, какие необязательные функции задействуются посредством автоматической активации.
В приведенном выше примере представьте себе библиотеку libfoo, установленную в системе. Пользователь не желает, чтобы приложение использовало libfoo, и поэтому он выключает соответствующую опцию в диалоге make config.
Но сценарий configure приложения определяет наличие библиотеки в системе и включает ее поддержку в итоговый исполняемый файл. Теперь, когда пользователь решит удалить libfoo из системы, система портов позволит это сделать так как зависимость от libfoo не была записана , но приложение перестанет работать. Во втором примере библиотека libfoo отключена явным образом. Сценарий configure не включает соответствующие функции в приложении, несмотря на присутствие библиотеки в системе. При определенных условиях сокращенный синтаксис записи условий может вызывать проблемы со сложными конструкциями.
Если вы получаете ошибки, такие как Malformed conditional , то может быть использован альтернативный синтаксис. Существует несколько макросов, упрощающих запись условных значений, которые отличаются в зависимости от набора параметров. Следующая запись:. Каждый порт распаковывается в рабочий каталог, который должен быть доступным для записи. Другими словами, если вы задали:. Эта переменная задаёт имя каталога, который создаётся при распаковке исходных файлов приложения.
В нашем предыдущем примере если бы распаковка происходила в каталог с именем foo а не foo При удалении одного из конфликтующих портов целесообразно сохранить записи CONFLICTS в тех других портах в течении нескольких месяцев, чтобы позаботиться о тех пользователей, которые обновляются от случая к случаю.
Конфликты сборки в получаемом пакете не записываются. Если ваш порт не может быть собран, когда уже установлен другой, а получаемый пакет не может существовать вместе с другими, перечислите имена остальных пакетов в переменной CONFLICTS. Используйте макросы, которые есть в файле bsd. Устанавливайте права владения напрямую в pkg-plist через соответствующие записи owner owner и group group.
Эти операторы работают до момента их переопределения или до конца pkg-plist , поэтому не забывайте их сбрасывать, когда они больше не нужны. По умолчанию владение устанавливается для root:wheel. В основе работы этих макросов лежит команда install со всеми соответствующими флагами. Смотрите пример их использования ниже.
Не удаляйте отладочную информацию из бинарных файлов вручную, если вы это делали. Обычно это делается внутри цели post-install. Для проверки того, удалена ли отладочная информация из файла, используйте file 1. Для двоичных файлов file 1 печатает stripped или not stripped. Кроме того, strip 1 определяет, была ли уже удалена из программы отладочная информация, и в этом случае просто завершает свою работу.
Иногда должно быть установлено большое количество файлов с сохранением их иерархической организации. Для этой ситуации существует два макроса. Преимущество от использования этих макросов вместо команды cp в том, что они гарантируют установку правильного владельца и прав на конечные файлы.
В этом примере устанавливается содержимое каталога examples из установочных файлов производителя в надлежащее место для примеров вашего порта.
Например, чтобы в первом примере установить все файлы кроме файлов Makefile, можно использовать следующую команду. Эти макросы не производят добавление устанавливаемых файлов в pkg-plist. Они должны быть добавлены туда вручную. Это может быть сделано, как и в предыдущем разделе, в цели post-install.
Создайте для вашего порта новый каталог. Имя каталога должно соответствовать тому, что представляет из себя порт. Однако, если вы думаете, что пользователь захочет иметь разные версии порта, установленные одновременно, то вы можете использовать полное имя PKGNAME.
Следовательно, блоки. Вот несколько полезных переменных и то, как они преобразуются по умолчанию при использовании в Makefile :. Это не относится к стандартным страницам справочника и страницам info.
Дополнительную информацию о подстановке в pkg-plist можно найти здесь. В качестве альтернативы перечислению файлов документации в файле pkg-plist , порт может указать в переменной PORTDOCS список имён файлов и глобальных шаблонов командного процессора для добавления в окончательный список сборки. Если каталог указан в PORTDOCS или соответствует шаблону для этой переменной, то полное поддерево с входящими в него файлами и каталогами будет регистрироваться в окончательном списке сборки.
Во время установки выводится содержимое pkg-message. За подробной информацией обратитесь к разделу об использовании pkg-message. Файл pkg-message не нужно добавлять в pkg-plist. Некоторые порты игнорируют все установки и помещают все в подкаталог с именем порта, что неправильно. Также многие порты помещают все, кроме бинарных файлов, файлов заголовков и страниц Справочника, в подкаталог каталога lib , что не очень хорошо работает с подходом BSD.
Имеется ещё несколько вещей, которые вы должны иметь в виду при создании порта. Этот раздел описывает наиболее часто встречающиеся из них. Это означает, что порт должен устанавливать файлы не напрямую в назначенные каталоги то есть, например, под PREFIX , а в отдельный каталог, из которого затем собирается пакет. Во многих случаях привилегии root для этого не требуются, что делает возможным сборку пакетов из-под непривилегированного пользователя.
Пакет создается из каталога сборки и затем устанавливается в систему. Если для порта всё ещё требуются системные привилегии при выполнении цели package , то в Makefile должна быть добавлена следующая строка:. Метапорты, то есть порты, которые не устанавливают файлы непосредственно, а только зависят от других портов, должны по возможности избегать распаковки mtree 8 в каталог сборки. Это основная иерархия каталогов пакета, и эти пустые каталоги будут выглядеть лишними.
Для предотвращения распаковки mtree 8 добавьте эту строку:. Staging задействуется посредством добавления переменной STAGEDIR слева от путей, которые используются в целях pre-install , do-install и post-install смотрите примеры в книге. Каталоги должны создаваться при выполнении цели post-install. Избегайте использования абсолютных путей, когда это возможно. Абсолютные пути могут указывать на неподходящее место, например, когда удалённая файловая система смонтирована по NFS как непривилегированная точка монтирования.
Относительные пути реже подвержены проблемам и часто намного короче. Постарайтесь сохранять номера версий динамических библиотек в формате libfoo. Наш компоновщик позаботится только о старшем первом номере. Если при обновлении порта увеличивается старший номер версии библиотеки, то для всех портов, компонуемых с затронутой библиотекой, следует увеличить значение PORTREVISION для форсирования перекомпиляции с новой версией библиотеки.
Лицензии бывают разных видов, и некоторые накладывают ограничение на то, как приложение может быть оформлено в виде пакета, может ли оно продаваться для извлечения коммерческой выгоды, и так далее. Эта переменная указывает, что мы не можем создавать для приложения двоичный пакет.
К примеру, лицензия не позволяет бинарное распространение или она может запрещать распространение пакетов, созданных из изменённых исходников. К примеру, это применяется, если лицензионное соглашение приложения предполагает только его "некоммерческое" использование. Если ограничены в распространении лишь некоторые из дистрибутивных файлов, то в этой переменной задаётся их список. Например, если было получено особое разрешение для FreeBSD на распространение двоичного файла, то эта переменная должна содержать соответствующее указание.
Первый столбец содержит шаблон совпадения с дистрибутивными файлами, имеющими ограничения на распространение. Второй столбец содержит корень порта. Предпочтительным способом реализации утверждения "архивы исходных текстов для этого порта должны загружаться самостоятельно" является следующее:.
Это одновременно и информирует пользователя, и устанавливает нужные метаданные на пользовательской машине для использования автоматическими программами. Обратите внимание, что данная кляуза должна предшествовать подключению файла bsd. Инфраструктура портов FreeBSD поддерживает параллельное построение с использованием множественных подпроцессов make , что позволяет системам SMP задействовать всю доступную мощность CPU, тем самым делая построение портов более быстрым и эффективным.
Это достигается путём передачи флага -jX команде make 1. Такое построение портов является поведением по умолчанию. Эта переменная используется в случае, когда известно, что порт ломается с -jX. Это заставит стадию конфигурирования автоматически выполнить xmkmf -a. Если порт использует imake, но не понимает цель install. Если ваш порт использует сценарий configure для получения файлов Makefile из файлов Makefile.
Дополнительные переменные окружения, задаваемые для запуска сценария configure. Переопределить цель configure по умолчанию. Тип построения предопределённые профили построения CMake.
Переменные окружения для передачи cmake. Разрешает подробный вывод сообщений при построении. Запрещает цветной вывод сообщений при построении. Большинство проектов, основанных на CMake, поддерживают метод внешнего out-of-source построения. Для порта внешнее построение можно запросить с использованием суффикса :outsource.
Следующий отрывок демонстрирует использование CMake для порта. Различные инструменты GNU autotools предоставляют механизм абстракции для построения частей программного обеспечения на широком наборе операционных систем и аппаратных архитектур. Внутри Коллекции Портов отдельный порт может использовать эти инструменты при помощи простых конструкций:.
К моменту написания tool может быть одним из libtool , libltdl , autoconf , autoheader , automake или aclocal. В заключение, существует специальный инструмент по называнию autotools , который является удобной функцией при установке всех доступных версий autotools для возможности проведения кросс-разработки. Динамические библиотеки, использующие инфраструктуру построения GNU, обычно используют libtool для настройки компиляции и установки динамических библиотек в соответствии с особенностями данной операционной системы.
В типичной практике используется копирование встроенного в приложение libtool. Если вам нужно использовать внешнюю команду libtool , то вы можете использовать версию, поставляемую Коллекцией Портов:.
При отсутствии дополнительных операций, libtool:version сообщает инфраструктуре построения о применении патча к сценарию configure с установленной в системе копией libtool.
Более того, некоторые переменные make и оболочки shell будут назначены для дальнейшего использования этим портом. Подробности смотрите в bsd. Большинству портов это скорее всего не понадобится. Для дальнейших подробностей смотрите bsd. Некоторые порты задействуют пакет с библиотекой libltdl , которая является частью комплекта libtool. Использование этой библиотеки не вызывает автоматическое использование самой libtool , и, таким образом, обеспечивается отдельная конструкция.
Для этого инструмента не существует необязательных операций. Вместо сценария configure некоторые порты содержат шаблон autoconf в файле configure. Вы можете использовать следующие присвоения, чтобы позволить autoconf создать сценарий configure, а autoheader создать заголовки шаблона для использования в сценарии configure. Аналогично команде libtool включение необязательной операции :env всего лишь настраивает окружение для дальнейшего использования.
Без этого выполняется наложение патчей и переконфигурирование порта. Как и с эквивалентами libtool , большинству портов это вряд ли понадобится.
Некоторые пакеты содержат только файлы Makefile. Они должны быть преобразованы в файлы Makefile. Аналогично, иногда пакеты не поставляются с вложенными файлами aclocal. Их можно получить командой aclocal , которая просматривает configure. Также как и для libtool и autoconf , подключение необязательной операции :env всего лишь устанавливает окружение для дальнейшего пользования.
Без этого выполняется реконфигурирование этого порта. USES содержит перечень других значений для использования gettext. Довольно распространенным случаем является использование в порте gettext и configure. Как правило, GNU configure способен находить gettext автоматически. Конечно же, этот код можно записать в более компактном виде, если передавать флаги в configure не требуется:.
Некоторые программные продукты позволяют отключать NLS, к примеру, передавая параметр --disable-nls сценарию configure. В этом случае ваш порт должен использовать gettext , в зависимости от значения NLS. Для портов небольшой или средней сложности вы можете полагаться на следующую идиому:.
Следующий пункт в вашем списке дел разобраться, чтобы файлы каталога сообщения включались в список упаковки по условию. Часть, входящая в Makefile , уже обеспечена этой идиомой. Остальное объясняется в главе продвинутые практики pkg-plist. В особо сложных случаях вам понадобиться использовать более продвинутые техники, чем данный рецепт, такие как динамические списки упаковки. Существует момент, который следует учитывать при установке файлов каталогов сообщений. Обратите внимание на его pkg-plist и посмотрите, куда данный порт собирается установить файлы каталогов сообщений для единственного в своем роде языка.
Например, рекомендуемым значением для p5-Module-Name является Module. Иерархию верхнего уровня можно посмотреть на сайте cpan. Это поддерживает порт в рабочем состоянии при изменении модуля автором. Исключением этого правила является отсутствие соответствующего каталога или файла с дистрибутивом в этом каталоге. В качестве значения все из настраиваемых knobs ниже принимают YES или строку с версией вида 5.
YES означает, что данный порт можно использовать с любой из поддерживаемых версий Perl. Если порт работает только с некоторыми версиями Perl, то это можно обозначить при помощи строки с версией, указывающей на минимальную версию пример: 5. Полный путь к интерпретатору Perl 5, либо в системе, либо установленному из портов, но без номера версии. Конфигурация, построение и установка с использованием Module::Build.
Порты для модулей Perl, которые не имеют официального вебсайта, должны указывать cpan. Использование этой конструкции подразумевает наличие подключенного bsd. Порты, зависимые от этого порта, получат неправильные зависимости, если файлы этого порта будут перемещены при последующем обновлении. Правильный способ объявления зависимостей для модулей Perl показан в примере ниже.
Org является реализацией X11, доступной в Коллекции Портов. К настоящему времени доступными компонентами являются:. Проект Mesa является попыткой обеспечить свободную реализацию OpenGL. Действительные опции: glut, glu, glw, glew, gl и linux. Для обратной совместимости значение yes соответствует glu. Задаёт маршрут до xmkmf , если он отсутствует в PATH. По умолчанию это xmkmf -a.
Некоторые приложения для успешной компиляции требуют наличие работающего дисплея X Это создает проблему для машин, которые работают в режиме headless. При использовании следующего канонического хака инфраструктура построения запустит сервер X в виртуальном фреймбуфере.
Элементы рабочего стола стандарта Freedesktop предоставляют способ автоматической настройки функций рабочего стола при установке новой программы, не требуя вмешательства пользователя. Например, новые программы автоматически отображаются в меню приложений совместимых окружений рабочего стола. Такая небольшая автоматизация предоставляет реальное удобство для пользователя, и посему элементы рабочего стола приветствуются в приложениях, которые можно использовать в окружении рабочего стола.
Если в файле порта portname. Будет автоматически создан, установлен и добавлен в pkg-plist файл с названием name. Перечень возможных категорий доступен на вебсайте Freedesktop.
StartupNotify отобразит, поддерживает ли приложение уведомления о запуске. Как правило, это графический индикатор часы вместо указателя мыши, меню или панель, которые уведомляют пользователя о загрузке программы.
Программа, поддерживающая уведомления о запуске, очистит этот индикатор после запуска. Программы, несовместимые с уведомлениями о запуске, не будут очищать индикатор возможно, вызывая путаницу и приводя пользователей в бешенство , и поэтому должны иметь StartupNotify в выключенном состоянии false ; тогда индикатор не будет отображаться совсем. Указывает инструменты и библиотеки в качестве зависимостей для портов, которые используют Qt 4.
Для получения подробностей смотрите выбор компонентов Qt 4. Устанавливается в значение, содержащее путь к установленному Qt переменная только для чтения. Устанавливается в значение, содержащее путь к moc переменная только для чтения.
Устанавливает путь к конфигурационному файлу для qmake переменная только для чтения. Если суффикс отсутствует, зависимость от компонента будет и для времени сборки, и для времени выполнения.
Вы можете определить, от каких библиотек зависит приложение, запустив ldd на основной исполняемый файл после успешной компиляции. В этом примере портированное приложение использует библиотеку графического пользовательского интерфейса Qt 4, основную библиотеку Qt 4, все инструменты генерации кода Qt 4 и генератор Makefile Qt 4. Поскольку библиотека gui подразумевает зависимость от основной библиотеки, указывать corelib нет необходимости.
Переменные окружения, устанавливаемые для программы qmake. Название файла проекта. По умолчанию имеет пустое значение с использованием автоопределения. Если вместе с приложением вместо configure поставляется файл. Отсутствующие дополнительные пути для заголовочных файлов. Вы можете сообщить qmake , чтобы она добавила каталоги в пути поиска заголовочных файлов и библиотек через командную строку. Фиктивные пути установки. Иногда данные, такие как иконки и файлы.
Если ваше приложение зависит от KDE 4. Если суффикс не задан, будет использован тип зависимости по умолчанию. Порты KDE 4. Это простой пример для порта KDE 4. Требуемые компоненты KDE и другие зависимости можно определить в журнале configure. Если ваш порт должен использовать одну из этих версий, то вы должны указать, какую именно. Должна быть определена для того, что последующие переменные вступили в действие. Список версий Java, перечисленных через пробел, подходящих для порта.
Список операционных систем, перечисленных через пробел, порты JDK для которых подходят для порта возможные значения: native linux. Список разработчиков портов JDK, перечисленных через пробел, которые подходят для порта возможные значения: freebsd bsdjava sun openjdk.
Если задана, то означает, что выбранный порт JDK должен быть добавлен к зависимостям порта для его построения. Если задана, то означает, что выбранный порт JDK должен быть добавлен в зависимостям порта для его работы.
Если задана, то означает, что выбранный порт JDK должен быть добавлен в зависимостям порта для распаковки его дистрибутивных файлов. Маршрут к выполняемому файлу java. Вы можете воспользоваться make-целью java-debug для получения информации, необходимой для отладки вашего порта.
При её выполнении будут выданы значения многих упомянутых выше переменных. Корневой каталог для всего, что связано с Java.
Каталог, в который должны устанавливаться JAR-файлы. Каталог, в который устанавливаются JAR-файлы из других портов. Таким образом Ant становится подкомандой make.
Для уменьшения размера упакованного файла вы можете сослаться на JAR-файл ы непосредственно в файле Makefile. Просто воспользуйтесь следующей директивой в которой myport. При портировании Java-приложения порт обычно устанавливает всё в один каталог в том числе все свои JAR-зависимости. Избегайте добавлять файлы. Это не является наилучшим решением. Сервер приложений производит расширение архива war без должной его очистки при удалении порта.
Более подходящим способом работы с этим файлом будет распаковать архив, установить файлы и добавить их в pkg-plist. Вне зависимости от типа вашего порта библиотека это или приложение , дополнительная документация должна устанавливаться в тоже самое место , что и для других портов.
Известно, что в зависимости от используемой версии JDK утилита JavaDoc генерирует различные наборы файлов. Для портов, которые не привязаны к использованию определённой версии JDK, таким образом становится проблематичным определить список файлов для упаковки pkg-plist. Более того, даже если вы сможете угадать набор файлов, который будет сгенерирован утилитой javadoc , размер получающегося файла pkg-plist голосует за использование PORTDOCS.
Что касается выбора между построением портов Java из исходных текстов или их прямой установкой из бинарных дистрибутивов, то на момент создания этого текста определённой политики на этот счёт не существует. Однако участники Проекта FreeBSD Java рекомендуют создателям портов строить их из исходных текстов, если эта задача является несложной. Все возможности, которые были описаны в этом разделе, реализованы в файле bsd. Если вы предположите, что вашему порту требуется менее тривиальная поддержка Java, пожалуйста, взгляните сначала на журнал изменений bsd.
Затем, если вы думаете, что не хватающая вам поддержка окажется полезной для многих других портов Java, обсудите ваш вопрос в freebsd-java. Таким образом, вы должны относить свой Java-порт, как и любой другой, к категории ports , если решаемый вами вопрос не относится ни к реализации JDK, ни к bsd.
Порт требует Apache. Версия по умолчанию Полный путь к исполняемому файлу apxs. Может быть переопределен в вашем порту. Полный путь к исполняемому файлу httpd. Версия установленного Apache переменная только для чтения. Эта переменная доступна только после подключения bsd. Возможные значения: 22 , Каталог для модулей Apache. Значение переменной автоматически подставляется в pkg-plist. Каталог для заголовков Apache. Каталог для конфигурационных файлов Apache.
Название модуля. Краткое название модуля. Пример: hello. Значением по умолчанию и для владельца, и для группы является www. Не добавляйте зависимость от Apache, если веб-приложение явным образом не нуждается в Apache. Учитывайте, что пользователи могут пожелать запустить ваше веб-приложение на другом веб-сервере помимо Apache. Порт требует PHP.
Значение yes добавляет зависимость от PHP. Вместо этого может быть указан перечень требуемых расширений PHP. Пример: pcre xml gettext. По умолчанию 5. Возможные значения: 4 , 5. Порт не работает с PHP данной версии.
Порт будет считаться расширением PHP, включая установку и регистрацию в реестре расширений. Все перечисленные файлы будут автоматически установлены в подходящие места и добавлены в pkg-plist. Коллекция Портов поддерживает параллельную установку множества версий Python.
Для этого порта нужен Python. Минимальная требуемая версия может быть указана с таким значением как 2. Также можно указан диапазон версий с разделением двух версий через -, например: 2. Использовать дистрибутивные утилиты distutils Python для конфигурации, компиляции и установки. Необходимо, если порт использует setup. Пример: py Строка зависимости для расширения XML не нужно для Python 2. Ограничение можно обойти путём перекомпиляции сценариев.
Например, это можно выполнить в цели post-build. Эта команда перекомпилирует исходный текст с заменой путей на относительные к каталогу сборки, а также дописывает значение PREFIX перед именем файла, записанного в выходном файле с промежуточным представлением, с использованием -d. Порт зависит от библиотеки Tcl не оболочки. Эту новую переменную следует использовать для портов, для которых требуется оболочка Tcl и не требуется конкретная версия tclsh.
Обертка tclsh устанавливается в систему. Пользователь может указать желаемую оболочку tcl для использования. Определяемые пользователем переменные, которые устанавливают желаемую версию Tcl. Порт зависит от библиотеки Tk не от предпочитаемой оболочки. Устанавливает альтернативное имя для setup. Распространенным значением является install.
Следующая таблица отражает некоторые переменные, доступные авторам портов через инфраструктуру портов. Эти переменные должны использоваться для установки файлов в правильное месторасположение.
Используйте их в pkg-plist как можно больше. Эти переменные не должны переопределяться в самом порте. Эта глава описывает статус библиотек wxWidgets в дереве портов и их интеграцию с системой портов. Существует множество версий библиотек wxWidgets, конфликтующих между собой устанавливают файлы под тем же именем.
В дереве портов эта проблема решена путем установки каждой версии под собственным названием с использованием номера версии в качестве суффикса. Очевидным недостатком этого является необходимость изменения каждого приложения для нахождения искомой версии. К счастью, большинство приложений для определения нужного компилятора и флагов компоновки вызывают сценарий wx-config.
Для каждой доступной версии этот сценарий имеет своё имя. Большинство приложений учитывают переменную окружения или принимают аргумент configure для указания, какой сценарий wx-config следует вызывать.
На все остальные приходится накладывать патч. Для того, чтобы заставить ваш порт использовать конкретную версию wxWidgets, существует две доступные для определения переменные если определена только одна, то вторая примет значение по умолчанию :.
Версии начиная с 2. Переменные в Переменные для выбора версии wxWidgets можно установить в одну или более следующих комбинаций, разделенных пробелами:.
Кроме того, существует несколько переменных для выбора предпочитаемых версий из перечня доступных. Они могут быть установлены в несколько версий, первая из которых будет иметь наибольший приоритет. Существуют другие приложения, которые, хотя и не являются библиотеками wxWidgets, но в тоже время относятся к ним. Доступны следующие компоненты:. Тип добавляемой зависимости при выборе каждого компонента может быть указан вручную путем добавления суффикса, отделенного точкой с запятой.
Если таковой отсутствует, но будет использовано значение по умолчанию смотрите Типы зависимости wxWidgets, используемые по умолчанию. Доступные типы зависимости:. Следующий фрагмент относится к порту, в котором используется wxWidgets версии 2. Библиотека wxWidgets поддерживает Unicode начиная с версии 2.
В дереве портов доступны обе версии и могут быть выбраны с использованием следующих переменных:. Если вы не присвоите ей определенную версию, то компоненты получат суффикс версии. Следующий фрагмент может быть использован в порту, который использует wxWidgets, в случае если он установлен или выбран соответствующий параметр. Следующий фрагмент может быть использован в порту, который задействует поддержку wxPython, в случае если он установлен или выбран соответствующий параметр, в дополнение к wxWidgets, обе версии 2.
Следующие переменные доступны в порту после определения одной из переменных из Переменные для выбора версии wxWidgets. Если вам нужно использовать переменные для запуска команд сразу после подключения bsd. Существует множество версий библиотек Lua и соответствующих интерпретаторов, конфликтующих между собой устанавливают файлы под тем же именем.
В дереве портов эта проблема решена путем установки каждой версии в собственное место с использованием номера версии в качестве суффикса. Но это решается добавлением некоторых дополнительных флагов для компилятора и компоновщика. Для того, чтобы заставить ваш порт использовать конкретную версию Lua, существует две доступные для определения переменные если определена только одна, то вторая примет значение по умолчанию :.
Переменные из Переменные для выбора версии Lua могут иметь комбинации из одного или нескольких значений, разделенных пробелом:. Следующий фрагмент взят из порта, который использует Lua версий 5. Существуют другие приложения, которые хотя и не являются библиотеками Lua, но относятся к ним.
Есть и другие компоненты, но они относятся к модулям для интерпретатора и не используются приложениями только другими модулями. Тип зависимости можно выбрать для каждого компонента через добавление суффикса, отделенного точкой с запятой.
В случае отсутствия будет использован тип по умолчанию смотрите Типы зависимости Lua, используемые по умолчанию. Доступные следующие типы:. Следующий фрагмент соответствует порту, использующему Lua версии 4.
Следующий фрагмент можно использовать для порта, использующего Lua, если она установлена, или был выбран соответствующий параметр. Следующий фрагмент можно использовать для порта, который включает поддержку tolua, если такой компонент установлен, или был выбран соответствующий параметр в дополнение к Lua, оба имеют версию 4. Следующие переменные доступны в порту после определения одной из переменных из Переменные для выбора версии Lua.
Каталог, в который установлены модули библиотеки Lua. Следующий фрагмент показывает, как сообщить порту, который использует сценарий configure, где расположены заголовочные файлы и библиотеки Lua.
Аргумент ld для компоновки с libiconv если нужно. Каталог размещения реализации iconv используется для сценариев конфигурации.
Эту особенность можно использовать для обнаружения собственного iconv с соответствующими действиями. Иногда в программе параметр ld или путь поиска жёстко заданы в Makefile или сценарии конфигурации. Для решения этой проблемы можно использовать следующий подход:. В некоторых случаях необходимо установить альтернативные значения или выполнить операции в случае использования собственного iconv.
Один из бэкэндов Gecko, с которым может работать порт. Возможные значения: libxul libxul. Для запуска порта требуется Firefox. Возможные значения: yes версия по умолчанию , 40 , 36 , По умолчанию устанавливает зависимость от версии Для построения порта требуется Firefox.
Для запуска порта требуется SeaMonkey. Возможные значения: yes версия по умолчанию , 20 , 11 устарело, больше не должно использоваться. Для построения порта требуется SeaMonkey. Для запуска порта требуется Thunderbird. Возможные значения: yes версия по умолчанию , 31 , 30 устарело, больше не должно использоваться. Для построения порта требуется Thunderbird. Также переменной можно присвоить значения: 2, 3, 40, 41, 42, 43, 44, 46, 47, 48 или Переменная может принимать значения: 3, 2.
Подробнее смотрите в bsd. Сценарии rc. Порты интегрируются в системную инфраструктуру rc. Подробности по её использованию можно найти в главе rc. Подробное объяснение доступных команд находится в rc 8 и rc. Наконец, есть статья о практических аспектах написания сценариев rc. Сценарии обязаны размещаться в подкаталоге files с обязательным добавлением суффикса.
Начиная с FreeBSD 6. Если служба работает под определенным пользователем отличным от root , то это делается принудительно. В сценарий выше включена конструкция. Если сценарий не запускает постоянную службу, то это не является необходимым. Пользователь вполне может написать в своем файле rc. Перед тем, как отсылать порт со сценарием rc. Если это новый файл, заканчивается ли он на.
Если это так, то имя файла должно быть изменено на file. Соответствуют ли друг другу имя файла без. Последнее также является тем, что вы могли бы назвать "политикой" для всех новых сценариев, включая те, что входят в базовую систему. Это условие обязательно для сценариев, работающих не из-под суперпользователя. Если нет, то его следует запускать после, так чтобы мы могли свободно сгруппировать локальные сценарии в той точке rcorder 8 , когда почти все сценарии в базовой системе уже стартовали.
Запускает ли сценарий постоянную службу? Это перестало быть нужным и нежелательно уже много лет. Это также служит индикатором того, что новый сценарий был скопирован со старого, поэтому особое внимание должно быть уделено при проверке. В противном случае. Смотрите service 8 для дополнительной информации. Используются ли пустые строки при присвоении значений по умолчанию?
Такие присвоения должны быть удалены, но перепроверьте, что эти параметры задокументированы в комментариях в начале файла. Параметр -d здесь - это как красный флаг прошу прощения за каламбур , поскольку обычно он применяется для "демонизации" процесса и поэтому на самом деле обязательный.
Запускает ли сценарий какой-либо код безусловно? Это нехорошо. Все логические условия должны использовать функцию checkyesno. Не пишите самописных проверок для [Yy][Ee][Ss] , и так далее. Если в сценарии выполняется цикл например, ожидание чего-либо перед стартом , используется ли счетчик для завершения цикла? Мы не хотим бесконечного ожидания загрузки в случае возникновения ошибки. Создает ли сценарий файлы или каталоги, которым нужны особые права доступа?
Например, файл pid , который должен принадлежать пользователю, из-под которого запускается процесс. Некоторые порты требуют в установленной системе наличие определенного пользователя. Удостоверьтесь, что не используете UID, уже используемый системой или другими портами. Пожалуйста, включите в патч изменение для этих двух файлов, если вам требуется создать нового пользователя или группу для вашего порта.
Некоторым портам таким как загружаемые модули ядра для компиляции нужны файлы с исходными текстами ядра. Ниже указан корректный способ определения, установлены ли они пользователем:. Кроме этой проверки, kmod заботится о большинстве пунктов, которые должны учитываться в этих портах. Некоторые порты, в частности, порты p5- , должны менять содержимое своих файлов pkg-plist в зависимости от того, с какими параметрами они были отконфигурированы или в зависимости от версии языка perl в случае портов p Например, если у вас имеется порт, который устанавливает много файлов в каталог, зависящий от версии, вы можете задать нечто типа.
Таким образом, при обновлении порта вам не нужно будет менять десятки а в некоторых случаях и сотни строк в файле pkg-plist. Заставьте ваш порты удалять пустые каталоги при удалении. Обычно это достигается добавлением строк dirrm для всех каталогов, которые создаются этим портом. Вам нужно удалить подкаталоги до того, как вы сможете удалить родительские каталоги.
Однако, иногда dirrm будет выдавать ошибки, потому что другие порты используют тот же самый подкаталог. Вы можете использовать dirrmtry для удаления только пустых каталогов без выдачи предупреждений. Эта команда не выведет никаких сообщений об ошибках и не вызовет аварийного завершения работы pkg delete см.
Пустым каталогам, создаваемым во время установки порта, нужно особое внимание. Они не будут созданы при установке пакета, потому что пакеты содержат только файлы, а pkg add и pkg install создают для них каталоги по мере надобности. Чтобы убедиться, что пустой каталог создается при установке пакета, добавьте эту строку в pkg-plist перед соответствующей строкой dirrm :. Это приведёт к тому, что по команде pkg delete или при новой установке файлы, тщательно отредактированные и настроенные пользователем, будут уничтожены.
Вместо этого установите файл ы с примерами с расширением filename. Затем скопируйте файл с примером на место настоящего файла конфигурации, если таковой ещё не существует. При деинсталляции удаляйте файл конфигурации только в том случае, если он идентичен файлу с расширением.
Вам нужно управлять этим в Makefile и в pkg-plist для установки из пакета.