# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2026-08-06 22:55+0100\n" "PO-Revision-Date: 2026-08-08 04:45+0000\n" "Last-Translator: Vladlen Popolitov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" #. type: Title = #: documentation/content/en/books/porters-handbook/plist/_index.adoc:1 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:14 #, no-wrap msgid "Advanced pkg-plist Practices" msgstr "Продвинутые практики pkg-plist" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/plist/_index.adoc:1 #, no-wrap msgid "Chapter 8. Advanced pkg-plist Practices" msgstr "Глава 8. Продвинутые практики pkg-plist" #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:51 #, no-wrap msgid "Changing pkg-plist Based on Make Variables" msgstr "Изменение содержимого [.filename]#pkg-plist# в зависимости от make-переменных" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:58 msgid "" "Some ports, particularly the `p5-` ports, need to change their [." "filename]#pkg-plist# depending on what options they are configured with (or " "version of `perl`, in the case of `p5-` ports). To make this easy, any " "instances in [.filename]#pkg-plist# of `%%OSREL%%`, `%%PERL_VER%%`, and `%" "%PERL_VERSION%%` will be substituted appropriately. The value of `%%OSREL%" "%` is the numeric revision of the operating system (for example, `4.9`). `%" "%PERL_VERSION%%` and `%%PERL_VER%%` is the full version number of `perl` " "(for example, `5.8.9`). Several other `%%_VARS_%%` related to port's " "documentation files are described in crossref:makefiles[install-" "documentation,the relevant section]." msgstr "" "Некоторые порты, в частности, порты `p5-`, должны менять содержимое своих " "файлов [.filename]#pkg-plist# в зависимости от того, с какими параметрами " "они были отконфигурированы (или в зависимости от версии языка `perl` в " "случае портов `p5-`). Чтобы облегчить этот процесс, любые вхождения ключевых " "слов `%%OSREL%%`, `%%PERL_VER%%` и `%%PERL_VERSION%%` в файле [." "filename]#pkg-plist# будут заменяться соответствующими значениями. Значением " "`%%OSREL%%` является номер версии операционной системы (например, `4.9`). `%" "%PERL_VERSION%%` и `%%PERL_VER%%` обозначают полный номер версии `perl` " "(например, `5.8.9`). Некоторые другие `%%VARS%%`, имеющие отношение к файлам " "документации порта, описаны в crossref:makefiles[install-documentation," "соответствующем разделе]." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:60 msgid "" "To make other substitutions, set `PLIST_SUB` with a list of `_VAR=VALUE_` " "pairs and instances of `%%_VAR_%%` will be substituted with _VALUE_ in [." "filename]#pkg-plist#." msgstr "" "Если вам нужно сделать другие подстановки, вы можете указать в переменной " "`PLIST_SUB` список пар `VAR=VALUE`, и все вхождения `%%VAR%%` в файле [." "filename]#pkg-plist# будут заменяться на значение _VALUE_." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:63 msgid "" "For instance, if a port installs many files in a version-specific " "subdirectory, use a placeholder for the version so that [.filename]#pkg-" "plist# does not have to be regenerated every time the port is updated. For " "example, set:" msgstr "" "Например, если порт устанавливает множество файлов в подкаталоге, зависящем " "от версии, используйте заполнитель для версии, чтобы файл [.filename]#pkg-" "plist# не требовал перегенерации при каждом обновлении порта. Например, " "укажите:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:68 #, no-wrap msgid "" "OCTAVE_VERSION=\t${PORTREVISION}\n" "PLIST_SUB=\tOCTAVE_VERSION=${OCTAVE_VERSION}\n" msgstr "" "OCTAVE_VERSION=\t${PORTREVISION}\n" "PLIST_SUB=\tOCTAVE_VERSION=${OCTAVE_VERSION}\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:72 msgid "" "in the [.filename]#Makefile# and use `%%OCTAVE_VERSION%%` wherever the " "version shows up in [.filename]#pkg-plist#. When the port is upgraded, it " "will not be necessary to edit dozens (or in some cases, hundreds) of lines " "in [.filename]#pkg-plist#." msgstr "" "в файле [.filename]#Makefile# и использовать `%%OCTAVE_VERSION%%` везде, где " "нужно указать номер версии в файле [.filename]#pkg-plist#. Таким образом, " "при обновлении порта вам не нужно будет менять десятки (а в некоторых " "случаях и сотни) строк в файле [.filename]#pkg-plist#." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:75 msgid "" "If files are installed conditionally on the options set in the port, the " "usual way of handling it is prefixing [.filename]#pkg-plist# lines with a `%" "%OPT%%` for lines needed when the option is enabled, or `%%NO_OPT%%` when " "the option is disabled, and adding `OPTIONS_SUB=yes` to the [." "filename]#Makefile#. See crossref:makefiles[options_sub,`OPTIONS_SUB`] for " "more information." msgstr "" "Если файлы устанавливаются по условию в зависимости от опций, установленных " "в порте, обычный способ обработки — это добавление префикса `%%OPT%%` для " "строк в [.filename]#pkg-plist#, которые нужны при включении опции, или `%" "%NO_OPT%%`, когда опция отключена, а также добавление `OPTIONS_SUB=yes` в [." "filename]#Makefile#. Подробнее см. crossref:makefiles[options_sub," "`OPTIONS_SUB`]." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:77 msgid "" "For instance, if there are files that are only installed when the `X11` " "option is enabled, and [.filename]#Makefile# has:" msgstr "" "Например, если есть файлы, которые устанавливаются только при включении " "опции `X11`, и в [.filename]#Makefile# указано:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:82 #, no-wrap msgid "" "OPTIONS_DEFINE=\tX11\n" "OPTIONS_SUB=\tyes\n" msgstr "" "OPTIONS_DEFINE=\tX11\n" "OPTIONS_SUB=\tyes\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:85 msgid "" "In [.filename]#pkg-plist#, put `%%X11%%` in front of the lines only being " "installed when the option is enabled, like this :" msgstr "" "В [.filename]#pkg-plist# укажите `%%X11%%` перед строками, которые " "устанавливаются только при включении опции, например:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:89 #, no-wrap msgid "%%X11%%bin/foo-gui\n" msgstr "%%X11%%bin/foo-gui\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:94 msgid "" "This substitution will be done between the `pre-install` and `do-install` " "targets, by reading from [.filename]#PLIST# and writing to [." "filename]#TMPPLIST# (default: [.filename]#WRKDIR/.PLIST.mktmp#). So if the " "port builds [.filename]#PLIST# on the fly, do so in or before `pre-" "install`. Also, if the port needs to edit the resulting file, do so in " "`post-install` to a file named [.filename]#TMPPLIST#." msgstr "" "Эта подстановка будет сделана между выполнением целей `pre-install` и `do-" "install`, посредством чтения файла [.filename]#PLIST# и записью в файл [." "filename]#TMPPLIST# (по умолчанию это файл [.filename]#WRKDIR/.PLIST." "mktmp#). Так что если ваш порт строит [.filename]#PLIST# на лету, делайте " "это во время или до выполнения цели `pre-install`. Кроме того, если вашему " "порту требуется отредактировать получающийся файл, делайте это в цели `post-" "install` изменением файла [.filename]#TMPPLIST#." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:100 msgid "" "Another way of modifying a port's packing list is based on setting the " "variables `PLIST_FILES` and `PLIST_DIRS`. The value of each variable is " "regarded as a list of pathnames to write to [.filename]#TMPPLIST# along with " "[.filename]#PLIST# contents. While names listed in `PLIST_FILES` and " "`PLIST_DIRS` are subject to `%%_VAR_%%` substitution as described above, it " "is better to use the `${_VAR_}` directly. Except for that, names from " "`PLIST_FILES` will appear in the final packing list unchanged, while `@dir` " "will be prepended to names from `PLIST_DIRS`. To take effect, `PLIST_FILES` " "and `PLIST_DIRS` must be set before [.filename]#TMPPLIST# is written, that " "is, in `pre-install` or earlier." msgstr "" "Ещё один способ изменения списка упаковки порта основан на установке " "переменных `PLIST_FILES` и `PLIST_DIRS`. Значение каждой переменной " "рассматривается как список путей для записи в [.filename]#TMPPLIST# вместе с " "содержимым [.filename]#PLIST#. Хотя имена, перечисленные в `PLIST_FILES` и " "`PLIST_DIRS`, подлежат замене `%%_VAR_%%`, как описано выше, лучше " "использовать `${_VAR_}` напрямую. За исключением этого, имена из " "`PLIST_FILES` появятся в итоговом списке упаковки без изменений, тогда как к " "именам из `PLIST_DIRS` будет добавлен префикс `@dir`. Чтобы вступить в силу, " "`PLIST_FILES` и `PLIST_DIRS` должны быть установлены до записи [." "filename]#TMPPLIST#, то есть в `pre-install` или ранее." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:104 msgid "" "From time to time, using `OPTIONS_SUB` is not enough. In those cases, " "adding a specific `_TAG_` to `PLIST_SUB` inside the [.filename]#Makefile# " "with a special value of `@comment`, makes package tools to ignore the line. " "For instance, if some files are only installed when the `X11` option is on " "and the architecture is `i386`:" msgstr "" "Время от времени использования `OPTIONS_SUB` недостаточно. В таких случаях " "добавление специфичного `_TAG_` в `PLIST_SUB` внутри [.filename]#Makefile# " "со специальным значением `@comment` заставляет инструменты пакетирования " "игнорировать строку. Например, если некоторые файлы устанавливаются только " "при включённой опции `X11` и архитектуре `i386`:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:108 #, no-wrap msgid ".include \n" msgstr ".include \n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:114 #, no-wrap msgid "" ".if ${PORT_OPTIONS:MX11} && ${ARCH} == \"i386\"\n" "PLIST_SUB+=\tX11I386=\"\"\n" ".else\n" "PLIST_SUB+=\tX11I386=\"@comment \"\n" ".endif\n" msgstr "" ".if ${PORT_OPTIONS:MX11} && ${ARCH} == \"i386\"\n" "PLIST_SUB+=\tX11I386=\"\"\n" ".else\n" "PLIST_SUB+=\tX11I386=\"@comment \"\n" ".endif\n" #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:117 #, no-wrap msgid "Empty Directories" msgstr "Пустые каталоги" #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:120 #, no-wrap msgid "Cleaning Up Empty Directories" msgstr "Очистка пустых каталогов" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:126 msgid "" "When being de-installed, a port has to remove empty directories it created. " "Most of these directories are removed automatically by man:pkg[8], but for " "directories created outside of [.filename]#${PREFIX}#, or empty directories, " "some more work needs to be done. This is usually accomplished by adding " "`@dir` lines for those directories. Subdirectories must be deleted before " "deleting parent directories." msgstr "" "При удалении порт должен удалить пустые каталоги, которые он создал. " "Большинство этих каталогов автоматически удаляются с помощью man:pkg[8], но " "для каталогов, созданных вне [.filename]#${PREFIX}#, или пустых каталогов " "требуется дополнительная работа. Обычно это делается добавлением строк " "`@dir` для таких каталогов. Подкаталоги должны быть удалены до удаления " "родительских каталогов." #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:132 #, no-wrap msgid "" "[...]\n" "@dir /var/games/oneko/saved-games\n" "@dir /var/games/oneko\n" msgstr "" "[...]\n" "@dir /var/games/oneko/saved-games\n" "@dir /var/games/oneko\n" #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:135 #, no-wrap msgid "Creating Empty Directories" msgstr "Создание пустых каталогов" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:140 msgid "" "Empty directories created during port installation need special attention. " "They must be present when the package is created. If they are not created " "by the port code, create them in the [.filename]#Makefile#:" msgstr "" "Пустые каталоги, созданные во время установки порта, требуют особого " "внимания. Они должны присутствовать при создании пакета. Если они не созданы " "кодом порта, создайте их в [.filename]#Makefile#:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:145 #, no-wrap msgid "" "post-install:\n" "\t${MKDIR} ${STAGEDIR}${PREFIX}/some/directory\n" msgstr "" "post-install:\n" "\t${MKDIR} ${STAGEDIR}${PREFIX}/some/directory\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:149 msgid "" "Add the directory to [.filename]#pkg-plist# like any other. For example:" msgstr "" "Добавьте каталог в [.filename]#pkg-plist# так же, как и любой другой. " "Например:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:153 #, no-wrap msgid "@dir some/directory\n" msgstr "@dir some/directory\n" #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:156 #, no-wrap msgid "Configuration Files" msgstr "Файлы конфигурации" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:160 msgid "" "If the port installs configuration files to [.filename]#PREFIX/etc# (or " "elsewhere) do _not_ list them in [.filename]#pkg-plist#. That will cause " "`pkg delete` to remove files that have been carefully edited by the user, " "and a re-installation will wipe them out." msgstr "" "Если порт устанавливает файлы конфигурации в [.filename]#PREFIX/etc# (или в " "другое место), _не_ указывайте их в [.filename]#pkg-plist#. Это приведёт к " "тому, что `pkg delete` удалит файлы, которые были тщательно отредактированы " "пользователем, а повторная установка перезапишет их." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:164 msgid "" "Instead, install sample files with a [.filename]#filename.sample# " "extension. The `@sample` macro automates this, see crossref:plist[plist-" "keywords-sample, Expanding Package List with Keywords] for what it does " "exactly. For each sample file, add a line to [.filename]#pkg-plist#:" msgstr "" "Вместо этого устанавливайте образцы файлов с расширением [." "filename]#filename.sample#. Макрос `@sample` автоматизирует этот процесс; " "подробности его работы см. в разделе crossref:plist[plist-keywords-sample, " "Расширение списка пакетов с помощью ключевых слов]. Для каждого образца " "файла добавьте строку в [.filename]#pkg-plist#:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:168 #, no-wrap msgid "@sample etc/orbit.conf.sample\n" msgstr "@sample etc/orbit.conf.sample\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:172 msgid "" "If there is a very good reason not to install a working configuration file " "by default, only list the sample filename in [.filename]#pkg-plist#, without " "the `@sample` followed by a space part, and add a crossref:pkg-files[porting-" "message,message] pointing out that the user must copy and edit the file " "before the software will work." msgstr "" "Если существует очень веская причина не устанавливать рабочий файл " "конфигурации по умолчанию, укажите только имя примера файла в [." "filename]#pkg-plist#, без части `@sample` с последующим пробелом, и добавьте " "crossref:pkg-files[porting-message,сообщение], указывающее, что пользователь " "должен скопировать и отредактировать файл перед тем, как программа " "заработает." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:177 msgid "" "When a port installs its configuration in a subdirectory of [.filename]#" "${PREFIX}/etc#, use `ETCDIR`, which defaults to `${PREFIX}/etc/${PORTNAME}`, " "it can be overridden in the ports [.filename]#Makefile# if there is a " "convention for the port to use some other directory. The `%%ETCDIR%%` macro " "will be used in its stead in [.filename]#pkg-plist#." msgstr "" "Когда порт устанавливает свою конфигурацию в подкаталоге [.filename]#" "${PREFIX}/etc#, используйте `ETCDIR`, который по умолчанию равен `${PREFIX}/" "etc/${PORTNAME}`. Это значение может быть переопределено в [." "filename]#Makefile# порта, если для порта принято использовать другой " "каталог. Макрос `%%ETCDIR%%` будет использоваться вместо этого в [." "filename]#pkg-plist#." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:183 msgid "" "The sample configuration files should always have the [.filename]#.sample# " "suffix. If for some historical reason using the standard suffix is not " "possible, or if the sample files come from some other directory, use this " "construct:" msgstr "" "Примеры конфигурационных файлов всегда должны иметь суффикс [.filename]#." "sample#. Если по каким-то историческим причинам использование стандартного " "суффикса невозможно, или если примеры файлов взяты из другого каталога, " "используйте эту конструкцию:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:187 #, no-wrap msgid "@sample etc/orbit.conf-dist etc/orbit.conf\n" msgstr "@sample etc/orbit.conf-dist etc/orbit.conf\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:190 msgid "or" msgstr "или" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:194 #, no-wrap msgid "@sample %%EXAMPLESDIR%%/orbit.conf etc/orbit.conf\n" msgstr "@sample %%EXAMPLESDIR%%/orbit.conf etc/orbit.conf\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:197 msgid "The format is `@sample _sample-file actual-config-file_`." msgstr "Формат: `@sample _файл-образец фактический-конфигурационный-файл_`." #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:200 #, no-wrap msgid "Dynamic Versus Static Package List" msgstr "Динамический или статический список упаковки" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:204 msgid "" "A _static package list_ is a package list which is available in the Ports " "Collection either as [.filename]#pkg-plist# (with or without variable " "substitution), or embedded into the [.filename]#Makefile# via `PLIST_FILES` " "and `PLIST_DIRS`. Even if the contents are auto-generated by a tool or a " "target in the Makefile _before_ the inclusion into the Ports Collection by a " "committer (for example, using `make makeplist`), this is still considered a " "static list, since it is possible to examine it without having to download " "or compile the distfile." msgstr "" "_Статический список упаковки_ — это список упаковки, который доступен в " "Коллекции Портов или как файл [.filename]#pkg-plist# (с подстановкой " "переменных или без неё), или как встроенный в [.filename]#Makefile# через " "`PLIST_FILES` и `PLIST_DIRS`. Даже если содержимое было автоматически " "сгенерировано инструментом или целью в Makefile _до_ включения в Коллекцию " "портов коммиттером (например, с использованием `make makeplist`), такой " "список всё равно считается статическим, поскольку его можно посмотреть без " "необходимости загрузки или компиляции distfile." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:207 msgid "" "A _dynamic package list_ is a package list which is generated at the time " "the port is compiled based upon the files and directories which are " "installed. It is not possible to examine it before the source code of the " "ported application is downloaded and compiled, or after running a `make " "clean`." msgstr "" "_Динамический список упаковки_ — это список упаковки, который генерируется " "во время компиляции порта на основе установленных файлов и каталогов. " "Невозможно изучить его до загрузки и компиляции исходного кода " "портированного приложения или после выполнения команды `make clean`." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:211 msgid "" "While the use of dynamic package lists is not forbidden, maintainers should " "use static package lists wherever possible, as it enables users to man:" "grep[1] through available ports to discover, for example, which port " "installs a certain file. Dynamic lists should be primarily used for complex " "ports where the package list changes drastically based upon optional " "features of the port (and thus maintaining a static package list is " "infeasible), or ports which change the package list based upon the version " "of dependent software used. For example, ports which generate docs with " "Javadoc." msgstr "" "Хотя использование динамических списков упаковки не запрещено, " "сопровождающие должны использовать статические списки упаковки везде, где " "это возможно, поскольку это позволяет пользователям выполнять man:grep[1] по " "доступным портам для обнаружения, например, какой порт устанавливает " "определённый файл. Динамические списки должны быть использованы в основном " "для сложных портов, для которых изменения в списке упаковки кардинальным " "образом основаны на возможностях порта, настраиваемых параметрами, (и, таким " "образом, делая сопровождение статических списков упаковки невозможным), или " "портов, которые изменяют список упаковки на основе версии используемого им " "программного обеспечения (например, порты, которые порождают документы при " "помощи Javadoc)." #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:213 #, no-wrap msgid "Automated Package List Creation" msgstr "Автоматическое создание списка упаковки" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:218 msgid "" "First, make sure the port is almost complete, with only [.filename]#pkg-" "plist# missing. Running `make makeplist` will show an example for [." "filename]#pkg-plist#. The output of `makeplist` must be double checked for " "correctness as it tries to automatically guess a few things, and can get it " "wrong." msgstr "" "Сначала убедитесь, что порт почти готов, и отсутствует только файл [." "filename]#pkg-plist#. Запуск команды `make makeplist` покажет пример для " "файла [.filename]#pkg-plist#. Вывод `makeplist` необходимо дважды " "перепроверять на корректность, так как он пытается автоматически угадать " "некоторые вещи и может ошибаться." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:223 msgid "" "User configuration files should be installed as [.filename]#filename." "sample#, as it is described in crossref:plist[plist-config, Configuration " "Files]. [.filename]#info/dir# must not be listed and appropriate [." "filename]#install-info# lines must be added as noted in the crossref:" "makefiles[makefile-info,info files] section. Any libraries installed by the " "port must be listed as specified in the crossref:special[porting-shlibs," "shared libraries] section." msgstr "" "Файлы конфигурации пользователя должны устанавливаться как [." "filename]#filename.sample#, как описано в разделе crossref:plist[plist-" "config,Файлы конфигурации]. [.filename]#info/dir# не должен быть указан, а " "соответствующие строки [.filename]#install-info# должны быть добавлены, как " "указано в разделе crossref:makefiles[makefile-info,info-файлы]. Любые " "библиотеки, устанавливаемые портом, должны быть перечислены, как указано в " "разделе crossref:special[porting-shlibs,общие библиотеки]." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:225 #, no-wrap msgid "Expanding `PLIST_SUB` with Regular Expressions" msgstr "Расширение `PLIST_SUB` с помощью регулярных выражений" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:229 msgid "" "Strings to be replaced sometimes need to be very specific to avoid undesired " "replacements. This is a common problem with shorter values." msgstr "" "Строки, которые нужно заменить, иногда должны быть очень конкретными, чтобы " "избежать нежелательных замен. Это распространённая проблема с короткими " "значениями." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:231 msgid "" "To address this problem, for each `_PLACEHOLDER_=_value_`, a " "`PLACEHOLDER_regex=regex` can be set, with the `_regex_` part matching " "_value_ more precisely." msgstr "" "Для решения этой проблемы для каждого `_PLACEHOLDER_=_значение_` можно " "задать `PLACEHOLDER_regex=регулярное_выражение`, где " "`_регулярное_выражение_` более точно соответствует _значению_." #. type: Block title #: documentation/content/en/books/porters-handbook/plist/_index.adoc:233 #, no-wrap msgid "Using PLIST_SUB with Regular Expressions" msgstr "Использование PLIST_SUB с регулярными выражениями" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:241 msgid "" "Perl ports can install architecture dependent files in a specific tree. On " "FreeBSD to ease porting, this tree is called `mach`. For example, a port " "that installs a file whose path contains `mach` could have that part of the " "path string replaced with the wrong values. Consider this [." "filename]#Makefile#:" msgstr "" "Порты Perl могут устанавливать архитектурно-зависимые файлы в специальное " "дерево. В FreeBSD для упрощения портирования это дерево называется `mach`. " "Например, порт, который устанавливает файл, чей путь содержит `mach`, может " "иметь эту часть строки пути заменённой неправильными значениями. Рассмотрим " "этот [.filename]#Makefile#:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:249 #, no-wrap msgid "" "PORTNAME=\tMachine-Build\n" "DISTVERSION=\t1\n" "CATEGORIES=\tdevel perl5\n" "MASTER_SITES=\tCPAN\n" "PKGNAMEPREFIX=\tp5-\n" msgstr "" "PORTNAME=\tMachine-Build\n" "DISTVERSION=\t1\n" "CATEGORIES=\tdevel perl5\n" "MASTER_SITES=\tCPAN\n" "PKGNAMEPREFIX=\tp5-\n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:253 #, no-wrap msgid "" "MAINTAINER=\tperl@FreeBSD.org\n" "COMMENT=\tBuilding machine\n" "WWW=\t\thttps://search.cpan.org/dist/Machine-Build\n" msgstr "" "MAINTAINER=\tperl@FreeBSD.org\n" "COMMENT=\tBuilding machine\n" "WWW=\t\thttps://search.cpan.org/dist/Machine-Build\n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:256 #, no-wrap msgid "" "USES=\t\tperl5\n" "USE_PERL5=\tconfigure\n" msgstr "" "USES=\t\tperl5\n" "USE_PERL5=\tconfigure\n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:258 #, no-wrap msgid "PLIST_SUB=\tPERL_ARCH=mach\n" msgstr "PLIST_SUB=\tPERL_ARCH=mach\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:261 msgid "The files installed by the port are:" msgstr "Файлы, установленные портом:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:269 #, no-wrap msgid "" "/usr/local/bin/machine-build\n" "/usr/local/lib/perl5/site_perl/man/man1/machine-build.1.gz\n" "/usr/local/lib/perl5/site_perl/man/man3/Machine::Build.3.gz\n" "/usr/local/lib/perl5/site_perl/Machine/Build.pm\n" "/usr/local/lib/perl5/site_perl/mach/5.20/Machine/Build/Build.so\n" msgstr "" "/usr/local/bin/machine-build\n" "/usr/local/lib/perl5/site_perl/man/man1/machine-build.1.gz\n" "/usr/local/lib/perl5/site_perl/man/man3/Machine::Build.3.gz\n" "/usr/local/lib/perl5/site_perl/Machine/Build.pm\n" "/usr/local/lib/perl5/site_perl/mach/5.20/Machine/Build/Build.so\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:272 msgid "Running `make makeplist` wrongly generates:" msgstr "Запуск `make makeplist` ошибочно создаёт:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:280 #, no-wrap msgid "" "bin/%%PERL_ARCH%%ine-build\n" "%%PERL5_MAN1%%/%%PERL_ARCH%%ine-build.1.gz\n" "%%PERL5_MAN3%%/Machine::Build.3.gz\n" "%%SITE_PERL%%/Machine/Build.pm\n" "%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so\n" msgstr "" "bin/%%PERL_ARCH%%ine-build\n" "%%PERL5_MAN1%%/%%PERL_ARCH%%ine-build.1.gz\n" "%%PERL5_MAN3%%/Machine::Build.3.gz\n" "%%SITE_PERL%%/Machine/Build.pm\n" "%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:283 msgid "Change the `PLIST_SUB` line from the [.filename]#Makefile# to:" msgstr "Измените строку `PLIST_SUB` в [.filename]#Makefile# на:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:288 #, no-wrap msgid "" "PLIST_SUB=\tPERL_ARCH=mach \\\n" "\t\tPERL_ARCH_regex=\\bmach\\b\n" msgstr "" "PLIST_SUB=\tPERL_ARCH=mach \\\n" "\t\tPERL_ARCH_regex=\\bmach\\b\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:291 msgid "Now `make makeplist` correctly generates:" msgstr "Теперь `make makeplist` правильно генерирует:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:299 #, no-wrap msgid "" "bin/machine-build\n" "%%PERL5_MAN1%%/machine-build.1.gz\n" "%%PERL5_MAN3%%/Machine::Build.3.gz\n" "%%SITE_PERL%%/Machine/Build.pm\n" "%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so\n" msgstr "" "bin/machine-build\n" "%%PERL5_MAN1%%/machine-build.1.gz\n" "%%PERL5_MAN3%%/Machine::Build.3.gz\n" "%%SITE_PERL%%/Machine/Build.pm\n" "%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so\n" #. type: Title == #: documentation/content/en/books/porters-handbook/plist/_index.adoc:304 #, no-wrap msgid "Expanding Package List with Keywords" msgstr "Расширение списка пакетов, используя ключевые слова" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:310 msgid "" "All keywords can also take optional arguments in parentheses. The arguments " "are owner, group, and mode. This argument is used on the file or directory " "referenced. To change the owner, group, and mode of a configuration file, " "use:" msgstr "" "Все ключевые слова также могут принимать необязательные аргументы в скобках. " "Аргументами являются владелец, группа и режим доступа. Этот аргумент " "применяется к файлу или каталогу, на который ссылаются. Чтобы изменить " "владельца, группу и режим доступа конфигурационного файла, используйте:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:314 #, no-wrap msgid "@sample(games,games,640) etc/config.sample\n" msgstr "@sample(games,games,640) etc/config.sample\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:318 msgid "" "The arguments are optional. If only the group and mode need to be changed, " "use:" msgstr "" "Аргументы являются необязательными. Если необходимо изменить только группу и " "режим, используйте:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:322 #, no-wrap msgid "@sample(,games,660) etc/config.sample\n" msgstr "@sample(,games,660) etc/config.sample\n" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:328 msgid "" "If a keyword is used on an crossref:makefiles[makefile-options,optional] " "entry, it must to be added after the helper:" msgstr "" "Если ключевое слово используется в crossref:makefiles[makefile-options," "необязательной записи], оно должно быть добавлено после помощника:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:332 #, no-wrap msgid "%%FOO%%@sample etc/orbit.conf.sample\n" msgstr "%%FOO%%@sample etc/orbit.conf.sample\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:336 msgid "" "This is because the options plist helpers are used to comment out the line, " "so they need to be put first. See crossref:makefiles[options_sub," "`OPTIONS_SUB`] for more information." msgstr "" "Это происходит потому, что вспомогательные функции plist для опций " "используются для закомментирования строки, поэтому они должны быть указаны " "первыми. Дополнительную информацию см. в crossref:makefiles[options_sub," "`OPTIONS_SUB`]." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:339 #, no-wrap msgid "`@desktop-file-utils`" msgstr "`@desktop-file-utils`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:343 msgid "" "Will run `update-desktop-database -q` after installation and " "deinstallation. _Never_ use directly, add crossref:uses[uses-desktop-file-" "utils,`USES=desktop-file-utils`] to the [.filename]#Makefile#." msgstr "" "Будет выполнять `update-desktop-database -q` после установки и удаления. " "_Никогда_ не используйте напрямую, добавьте crossref:uses[uses-desktop-file-" "utils,`USES=desktop-file-utils`] в [.filename]#Makefile#." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:345 #, no-wrap msgid "`@fc` _directory_" msgstr "`@fc` _каталог_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:348 msgid "" "Add a `@dir` entry for the directory passed as an argument, and run `fc-" "cache -fs` on that directory after installation and deinstallation." msgstr "" "Добавить запись `@dir` для каталога, переданного в качестве аргумента, и " "выполнить `fc-cache -fs` для этого каталога после установки и удаления." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:350 #, no-wrap msgid "`@fontsdir` _directory_" msgstr "`@fontsdir` _каталог_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:354 msgid "" "Add a `@dir` entry for the directory passed as an argument, and run " "`mkfontscale` and `mkfontdir` on that directory after installation and " "deinstallation. Additionally, on deinstallation, it removes the [." "filename]#fonts.scale# and [.filename]#fonts.dir# cache files if they are " "empty." msgstr "" "Добавить запись `@dir` для каталога, переданного в качестве аргумента, и " "запустить `mkfontscale` и `mkfontdir` в этом каталоге после установки и " "удаления. Кроме того, при удалении удаляются кэш-файлы [.filename]#fonts." "scale# и [.filename]#fonts.dir#, если они пусты." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:356 #, no-wrap msgid "`@info` _file_" msgstr "`@info` _файл_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:362 msgid "" "Add the file passed as argument to the plist, and updates the info document " "index on installation and deinstallation. Additionally, it removes the " "index if empty on deinstallation. This should never be used manually, but " "always through `INFO`. See crossref:makefiles[makefile-info,Info Files] for " "more information." msgstr "" "Добавляет файл, переданный в качестве аргумента, в plist и обновляет индекс " "документа info при установке и удалении. Кроме того, удаляет индекс, если он " "пуст, при удалении. Это никогда не следует использовать вручную, а только " "через `INFO`. Подробнее см. в crossref:makefiles[makefile-info,Файлы Info]." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:364 #, no-wrap msgid "`@kld` _directory_" msgstr "`@kld` _каталог_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:368 msgid "" "Runs `kldxref` on the directory on installation and deinstallation. " "Additionally, on deinstallation, it will remove the directory if empty." msgstr "" "Выполняет `kldxref` для каталога при установке и удалении. Дополнительно при " "удалении каталог будет удалён, если он пуст." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:370 #, no-wrap msgid "`@rmtry` _file_" msgstr "`@rmtry` _файл_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:373 msgid "" "Will remove the file on deinstallation, and not give an error if the file is " "not there." msgstr "Удаляет файл при удалении и не выдаёт ошибку, если файл отсутствует." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:375 #, no-wrap msgid "`@sample` _file_ [_file_]" msgstr "`@sample` _файл_ [_файл_]" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:379 msgid "" "This is used to handle installation of configuration files, through example " "files bundled with the package. The \"actual\", non-sample, file is either " "the second filename, if present, or the first filename without the [." "filename]#.sample# extension." msgstr "" "Это используется для обработки установки файлов конфигурации, используя " "примеры файлов, поставляемых с пакетом. \"Реальный\" файл (не пример) — это " "либо второе имя файла, если оно присутствует, либо первое имя файла без " "расширения [.filename]#.sample#." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:384 msgid "" "This does three things. First, add the first file passed as argument, the " "sample file, to the plist. Then, on installation, if the actual file is not " "found, copy the sample file to the actual file. And finally, on " "deinstallation, remove the actual file if it has not been modified. See " "crossref:plist[plist-config, Configuration Files] for more information." msgstr "" "Это делает три вещи. Во-первых, добавляет первый переданный файл в качестве " "аргумента, образец файла, в plist. Затем, при установке, если фактический " "файл не найден, копирует образец файла в фактический файл. И наконец, при " "удалении, удаляет фактический файл, если он не был изменён. Дополнительную " "информацию см. в разделе crossref:plist[plist-config, Файлы конфигурации]." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:386 #, no-wrap msgid "`@shared-mime-info` _directory_" msgstr "`@shared-mime-info` _каталог_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:389 msgid "" "Runs `update-mime-database` on the directory on installation and " "deinstallation." msgstr "" "Выполняет `update-mime-database` для указанного каталога при установке и " "удалении." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:391 #, no-wrap msgid "`@shell` _file_" msgstr "`@shell` _файл_" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:394 msgid "Add the file passed as argument to the plist." msgstr "Добавить файл, переданный в качестве аргумента, в plist." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:397 msgid "" "On installation, add the full path to _file_ to [.filename]#/etc/shells#, " "while making sure it is not added twice. On deinstallation, remove it from " "[.filename]#/etc/shells#." msgstr "" "При установке добавить полный путь к _file_ в [.filename]#/etc/shells#, " "убедившись, что он не добавлен повторно. При удалении удалите его из [." "filename]#/etc/shells#." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:399 #, no-wrap msgid "`@terminfo`" msgstr "`@terminfo`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:403 msgid "" "Do not use by itself. If the port installs [.filename]#*.terminfo# files, " "add crossref:uses[uses-terminfo,`USES=terminfo`] to its [." "filename]#Makefile#." msgstr "" "Не использовать самостоятельно. Если порт устанавливает файлы [.filename]#*." "terminfo#, добавьте crossref:uses[uses-terminfo,`USES=terminfo`] в его [." "filename]#Makefile#." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:405 msgid "" "On installation and deinstallation, if `tic` is present, refresh [.filename]#" "${PREFIX}/shared/misc/terminfo.db# from the [.filename]#*.terminfo# files in " "[.filename]#${PREFIX}/shared/misc#." msgstr "" "При установке и удалении, если присутствует `tic`, обновить [.filename]#" "${PREFIX}/shared/misc/terminfo.db# из файлов [.filename]#*.terminfo# в [." "filename]#${PREFIX}/shared/misc#." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:407 #, no-wrap msgid "Base Keywords" msgstr "Основные ключевые слова" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:410 msgid "" "There are a few keywords that are hardcoded, and documented in man:pkg-" "create[8]. For the sake of completeness, they are also documented here." msgstr "" "Есть несколько ключевых слов, которые жёстко закодированы и документированы " "в man:pkg-create[8]. Для полноты изложения они также документированы здесь." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:412 #, no-wrap msgid "`@` [_file_]" msgstr "`@` [_файл_]" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:416 msgid "" "The empty keyword is a placeholder to use when the file's owner, group, or " "mode need to be changed. For example, to set the group of the file to " "`games` and add the setgid bit, add:" msgstr "" "Ключевое слово `empty` является заполнителем, используемым, когда необходимо " "изменить владельца, группу или права доступа к файлу. Например, чтобы " "установить группу файла в `games` и добавить бит setgid, добавьте:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:420 #, no-wrap msgid "@(,games,2755) sbin/daemon\n" msgstr "@(,games,2755) sbin/daemon\n" #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:423 #, no-wrap msgid "`@preexec` _command_, `@postexec` _command_, `@preunexec` _command_, `@postunexec` _command_" msgstr "`@preexec` _команда_, `@postexec` _команда_, `@preunexec` _команда_, `@postunexec` _команда_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:426 msgid "" "Execute _command_ as part of the package installation or deinstallation " "process." msgstr "Выполнить _команду_ как часть процесса установки или удаления пакета." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:427 #, no-wrap msgid "`@preexec` _command_" msgstr "`@preexec` _команда_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:429 msgid "Execute _command_ as part of the [.filename]#pre-install# scripts." msgstr "Выполнить _команду_ как часть скриптов [.filename]#pre-install#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:430 #, no-wrap msgid "`@postexec` _command_" msgstr "`@postexec` _команда_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:432 msgid "Execute _command_ as part of the [.filename]#post-install# scripts." msgstr "Выполнить _команду_ как часть скриптов [.filename]#post-install#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:433 #, no-wrap msgid "`@preunexec` _command_" msgstr "`@preunexec` _команда_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:435 msgid "Execute _command_ as part of the [.filename]#pre-deinstall# scripts." msgstr "Выполнить _команду_ как часть скриптов [.filename]#pre-deinstall#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:436 #, no-wrap msgid "`@postunexec` _command_" msgstr "`@postunexec` _команда_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:438 msgid "Execute _command_ as part of the [.filename]#post-deinstall# scripts." msgstr "Выполнить _команду_ как часть скриптов [.filename]#post-deinstall#." #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:441 msgid "" "If _command_ contains any of these sequences somewhere in it, they are " "expanded inline. For these examples, assume that `@cwd` is set to [." "filename]#/usr/local# and the last extracted file was [.filename]#bin/emacs#." msgstr "" "Если в _команде_ содержится любая из этих последовательностей, они " "раскрываются непосредственно. Для следующих примеров предположим, что `@cwd` " "установлен в [.filename]#/usr/local#, а последним извлечённым файлом был [." "filename]#bin/emacs#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:442 #, no-wrap msgid "`%F`" msgstr "`%F`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:445 msgid "" "Expand to the last filename extracted (as specified). In the example case [." "filename]#bin/emacs#." msgstr "" "Раскрывается до последнего извлеченного имени файла (как указано). В примере " "[.filename]#bin/emacs#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:446 #, no-wrap msgid "`%D`" msgstr "`%D`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:449 msgid "" "Expand to the current directory prefix, as set with `@cwd`. In the example " "case [.filename]#/usr/local#." msgstr "" "Раскрыть до текущего префикса каталога, установленного с помощью `@cwd`. В " "этом примере [.filename]#/usr/local#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:450 #, no-wrap msgid "`%B`" msgstr "`%B`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:453 msgid "" "Expand to the basename of the fully qualified filename, that is, the current " "directory prefix plus the last filespec, minus the trailing filename. In " "the example case, that would be [.filename]#/usr/local/bin#." msgstr "" "Раскрыть до базового имени полного имени файла, то есть префикс текущего " "каталога плюс последняя спецификация файла, за вычетом имени файла в конце " "спецификации. В данном примере это будет [.filename]#/usr/local/bin#." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:454 #, no-wrap msgid "`%f`" msgstr "`%f`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:457 msgid "" "Expand to the filename part of the fully qualified name, or the converse of `" "%B`. In the example case, [.filename]#emacs#." msgstr "" "Раскрывается до части имени файла в полном квалифицированном имени, или " "противоположный случай для `%B`. В примере, [.filename]#emacs#." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:462 msgid "" "These keywords are here to help you set up the package so that it is as " "ready to use as possible. They _must not_ be abused to start services, stop " "services, or run any other commands that will modify the currently running " "system." msgstr "" "Эти ключевые слова предназначены для помощи в настройке пакета, чтобы он был " "максимально готов к использованию. Они _не должны_ использоваться для " "запуска служб, остановки служб или выполнения любых других команд, которые " "изменяют текущую работающую систему." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:465 #, no-wrap msgid "`@mode` _mode_" msgstr "`@mode` _режим_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:470 msgid "" "Set default permission for all subsequently extracted files to _mode_. " "Format is the same as that used by man:chmod[1]. Use without an arg to set " "back to default permissions (mode of the file while being packed)." msgstr "" "Установить разрешения по умолчанию для всех последующих извлекаемых файлов в " "_режим_. Формат такой же, как используется в man:chmod[1]. Использование без " "аргумента вернёт разрешения по умолчанию (режим файла при упаковке)." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:475 msgid "" "This must be a numeric mode, like `644`, `4755`, or `600`. It cannot be a " "relative mode like `u+s`." msgstr "" "Это должен быть числовой режим, например `644`, `4755` или `600`. Нельзя " "использовать относительный режим, например `u+s`." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:478 #, no-wrap msgid "`@owner` _user_" msgstr "`@owner` _пользователь_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:482 msgid "" "Set default ownership for all subsequent files to _user_. Use without an " "argument to set back to default ownership (`root`)." msgstr "" "Установить владельца по умолчанию для всех последующих файлов в " "_пользователь_. Использование без аргумента вернёт владельца по умолчанию " "(`root`)." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:484 #, no-wrap msgid "`@group` _group_" msgstr "`@group` _группа_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:488 msgid "" "Set default group ownership for all subsequent files to _group_. Use " "without an arg to set back to default group ownership (`wheel`)." msgstr "" "Установить группу-владельца по умолчанию для всех последующих файлов в " "_группу_. Использование без аргумента вернёт группу-владельца по умолчанию " "(`wheel`)." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:490 #, no-wrap msgid "`@comment` _string_" msgstr "`@comment` _строка_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:493 msgid "This line is ignored when packing." msgstr "Эта строка игнорируется при упаковке." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:495 #, no-wrap msgid "`@dir` _directory_" msgstr "`@dir` _каталог_" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:501 msgid "" "Declare directory name. By default, directories created under `PREFIX` by a " "package installation are automatically removed. Use this when an empty " "directory under `PREFIX` needs to be created, or when the directory needs to " "have non default owner, group, or mode. Directories outside of `PREFIX` " "need to be registered. For example, [.filename]#/var/db/${PORTNAME}# needs " "to have a `@dir` entry whereas [.filename]#${PREFIX}/shared/${PORTNAME}# " "does not if it contains files or uses the default owner, group, and mode." msgstr "" "Объявить имя каталога. По умолчанию каталоги, созданные в `PREFIX` при " "установке пакета, автоматически удаляются. Используйте эту опцию, если " "необходимо создать пустой каталог в `PREFIX` или если каталогу требуется " "нестандартный владелец, группа или права. Каталоги за пределами `PREFIX` " "необходимо регистрировать. Например, [.filename]#/var/db/${PORTNAME}# " "требует записи `@dir`, тогда как [.filename]#${PREFIX}/shared/${PORTNAME}# — " "нет, если он содержит файлы или использует стандартные владельца, группу и " "права." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:503 #, no-wrap msgid "`@exec` _command_, `@unexec` _command_ (Deprecated)" msgstr "`@exec` _команда_, `@unexec` _команда_ (Устарело)" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:507 msgid "" "Execute _command_ as part of the installation or deinstallation process. " "Please use crossref:plist[plist-keywords-base-exec,\"`@preexec` _command_, " "`@postexec` _command_, `@preunexec` _command_, `@postunexec` _command_\"] " "instead." msgstr "" "Выполнить _команду_ как часть процесса установки или удаления. Рекомендуется " "использовать crossref:plist[plist-keywords-base-exec, \"`@preexec` " "_команда_, `@postexec` _команда_, `@preunexec` _команда_, `@postunexec` " "_команда_\"] вместо этого." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:509 #, no-wrap msgid "`@dirrm` _directory_ (Deprecated)" msgstr "`@dirrm` _каталог_ (Устарело)" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:513 msgid "" "Declare directory name to be deleted at deinstall time. By default, " "directories created under `PREFIX` by a package installation are deleted " "when the package is deinstalled." msgstr "" "Объявить имя каталога для удаления при деинсталляции. По умолчанию каталоги, " "созданные в `PREFIX` при установке пакета, удаляются при его деинсталляции." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:515 #, no-wrap msgid "`@dirrmtry` _directory_ (Deprecated)" msgstr "`@dirrmtry` _каталог_ (Устарело)" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:518 msgid "" "Declare directory name to be removed, as for `@dirrm`, but does not issue a " "warning if the directory cannot be removed." msgstr "" "Объявить имя каталога для удаления, аналогично `@dirrm`, но не выводить " "предупреждение, если каталог не может быть удален." #. type: Title === #: documentation/content/en/books/porters-handbook/plist/_index.adoc:520 #, no-wrap msgid "Creating New Keywords" msgstr "Создание новых ключевых слов" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:525 msgid "" "Package list files can be extended by keywords that are defined in the [." "filename]#${PORTSDIR}/Keywords# directory. The settings for each keyword " "are stored in a UCL file named [.filename]#keyword.ucl#. The file must " "contain at least one of these sections:" msgstr "" "Файлы списка пакетов могут быть расширены ключевыми словами, которые " "определены в каталоге [.filename]#${PORTSDIR}/Keywords#. Настройки каждого " "ключевого слова хранятся в файле UCL с именем [.filename]#keyword.ucl#. Файл " "должен содержать как минимум один из следующих разделов:" #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:527 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:536 #, no-wrap msgid "`attributes`" msgstr "`attributes`" #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:528 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:549 #, no-wrap msgid "`action`" msgstr "`action`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:529 msgid "`pre-install`" msgstr "`pre-install`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:530 msgid "`post-install`" msgstr "`post-install`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:531 msgid "`pre-deinstall`" msgstr "`pre-deinstall`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:532 msgid "`post-deinstall`" msgstr "`post-deinstall`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:533 msgid "`pre-upgrade`" msgstr "`pre-upgrade`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:534 msgid "`post-upgrade`" msgstr "`post-upgrade`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:542 msgid "" "Changes the owner, group, or mode used by the keyword. Contains an " "associative array where the possible keys are `owner`, `group`, and `mode`. " "The values are, respectively, a user name, a group name, and a file mode. " "For example:" msgstr "" "Изменяет владельца, группу или режим доступа, используемые ключевым словом. " "Содержит ассоциативный массив, в котором возможными ключами являются " "`owner`, `group` и `mode`. Значениями являются, соответственно, имя " "пользователя, имя группы и режим доступа к файлу. Например:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:546 #, no-wrap msgid "attributes: { owner: \"games\", group: \"games\", mode: 0555 }\n" msgstr "attributes: { owner: \"games\", group: \"games\", mode: 0555 }\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:552 msgid "" "Defines what happens to the keyword's parameter. Contains an array where the " "possible values are:" msgstr "" "Определяет, что происходит с параметром ключевого слова. Содержит массив, " "где возможные значения:" #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:553 #, no-wrap msgid "`setprefix`" msgstr "`setprefix`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:555 msgid "Set the prefix for the next plist entries." msgstr "Установите префикс для следующих записей в plist." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:556 #, no-wrap msgid "`dir`" msgstr "`dir`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:558 msgid "Register a directory to be created on install and removed on deinstall." msgstr "" "Зарегистрировать каталог для создания при установке и удаления при " "деинсталляции." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:559 #, no-wrap msgid "`dirrm`" msgstr "`dirrm`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:562 msgid "Register a directory to be deleted on deinstall. Deprecated." msgstr "Зарегистрировать каталог для удаления при деинсталляции. Устарело." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:563 #, no-wrap msgid "`dirrmtry`" msgstr "`dirrmtry`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:566 msgid "Register a directory to try and deleted on deinstall. Deprecated." msgstr "" "Зарегистрировать каталог для попытки удаления при деинсталляции. Устарело." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:567 #, no-wrap msgid "`file`" msgstr "`file`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:569 msgid "Register a file." msgstr "Зарегистрировать файл." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:570 #, no-wrap msgid "`setmode`" msgstr "`setmode`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:572 msgid "Set the mode for the next plist entries." msgstr "Установить режим для следующих записей plist." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:573 #, no-wrap msgid "`setowner`" msgstr "`setowner`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:575 msgid "Set the owner for the next plist entries." msgstr "Установить владельца для следующих записей plist." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:576 #, no-wrap msgid "`setgroup`" msgstr "`setgroup`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:578 msgid "Set the group for the next plist entries." msgstr "Установить группу для следующих записей в plist." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:579 #, no-wrap msgid "`comment`" msgstr "`comment`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:581 msgid "Does not do anything, equivalent to not entering an `action` section." msgstr "" "Не выполняет никаких действий, эквивалентно отсутствию раздела `action`." #. type: Labeled list #: documentation/content/en/books/porters-handbook/plist/_index.adoc:582 #, no-wrap msgid "`ignore_next`" msgstr "`ignore_next`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:584 msgid "Ignore the next entry in the plist." msgstr "Игнорировать следующую запись в plist." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:586 #, no-wrap msgid "`arguments`" msgstr "`arguments`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:590 msgid "" "If set to `true`, adds argument handling, splitting the whole line, `%@`, " "into numbered arguments, `%1`, `%2`, and so on. For example, for this line:" msgstr "" "Если установлено значение `true`, добавляется обработка аргументов, разделяя " "всю строку, `%@`, на нумерованные аргументы, `%1`, `%2`, и так далее. " "Например, для такой строки:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:594 #, no-wrap msgid "@foo some.content other.content\n" msgstr "@foo some.content other.content\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:597 msgid "`%1` and `%2` will contain:" msgstr "`%1` и `%2` будут содержать:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:602 #, no-wrap msgid "" "some.content\n" "other.content\n" msgstr "" "some.content\n" "other.content\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:607 msgid "" "It also affects how the crossref:plist[plist-keywords-action,`action`] entry " "works. When there is more than one argument, the argument number must be " "specified. For example:" msgstr "" "Это также влияет на работу записи crossref:plist[plist-keywords-action," "`action`]. Если аргументов больше одного, необходимо указать номер " "аргумента. Например:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:611 #, no-wrap msgid "actions: [file(1)]\n" msgstr "actions: [file(1)]\n" #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:614 #, no-wrap msgid "`pre-install`, `post-install`, `pre-deinstall`, `post-deinstall`, `pre-upgrade`, `post-upgrade`" msgstr "`pre-install`, `post-install`, `pre-deinstall`, `post-deinstall`, `pre-upgrade`, `post-upgrade`" #. type: Plain text #: documentation/content/en/books/porters-handbook/plist/_index.adoc:619 msgid "" "These keywords contains a man:sh[1] script to be executed before or after " "installation, deinstallation, or upgrade of the package. In addition to the " "usual `@exec %_foo_` placeholders described in crossref:plist[plist-keywords-" "base-exec,\"`@preexec` _command_, `@postexec` _command_, `@preunexec` " "_command_, `@postunexec` _command_\"], there is a new one, `%@`, which " "represents the argument of the keyword." msgstr "" "Эти ключевые слова содержат man:sh[1] скрипт, который выполняется до или " "после установки, удаления или обновления пакета. В дополнение к обычным " "заполнителям `@exec %_foo_`, описанным в разделе crossref:plist[plist-" "keywords-base-exec, \"`@preexec` _команда_, `@postexec` _команда_, " "`@preunexec` _команда_, `@postunexec` _команда_\"], существует новый " "заполнитель `%@`, который представляет аргумент ключевого слова." #. type: Title ==== #: documentation/content/en/books/porters-handbook/plist/_index.adoc:621 #, no-wrap msgid "Custom Keyword Examples" msgstr "Примеры пользовательских ключевых слов" #. type: Block title #: documentation/content/en/books/porters-handbook/plist/_index.adoc:624 #, no-wrap msgid "Example of a `@dirrmtryecho` Keyword" msgstr "Пример ключевого слова `@dirrmtryecho`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:629 msgid "" "This keyword does two things, it adds a `@dirrmtry _directory_` line to the " "packing list, and echoes the fact that the directory is removed when " "deinstalling the package." msgstr "" "Это ключевое слово выполняет две функции: добавляет строку `@dirrmtry " "_directory_` в список упаковки и сообщает о том, что каталог удаляется при " "деинсталляции пакета." #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/plist/_index.adoc:636 #, no-wrap msgid "" "actions: [dirrmtry]\n" "post-deinstall: <