# 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: 2025-06-29 21:20+0100\n" "PO-Revision-Date: 2026-03-04 20:01+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/developers-handbook/policies/_index.adoc:1 #: documentation/content/en/books/developers-handbook/policies/_index.adoc:17 #, no-wrap msgid "Source Tree Guidelines and Policies" msgstr "Руководство и политика работы с деревом исходного кода" #. type: YAML Front Matter: title #: documentation/content/en/books/developers-handbook/policies/_index.adoc:1 #, no-wrap msgid "Chapter 5. Source Tree Guidelines and Policies" msgstr "Глава 5. Руководство и политика работы с деревом исходного кода" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:55 msgid "" "This chapter documents various guidelines and policies in force for the " "FreeBSD source tree." msgstr "" "Эта глава документирует различные руководства и политики, действующие для " "дерева исходных кодов FreeBSD." #. type: Title == #: documentation/content/en/books/developers-handbook/policies/_index.adoc:57 #, no-wrap msgid "Style Guidelines" msgstr "Рекомендации по стилю" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:61 msgid "" "Consistent coding style is extremely important, particularly with large " "projects like FreeBSD. Code should follow the FreeBSD coding styles " "described in man:style[9] and man:style.Makefile[5]." msgstr "" "Соблюдение единого стиля написания кода чрезвычайно важно, особенно в " "крупных проектах, таких как FreeBSD. Код должен соответствовать стилям " "программирования FreeBSD, описанным в man:style[9] и man:style.Makefile[5]." #. type: Title == #: documentation/content/en/books/developers-handbook/policies/_index.adoc:63 #, no-wrap msgid "`MAINTAINER` on Makefiles" msgstr "`MAINTAINER` в Makefile-ах" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:67 msgid "" "If a particular portion of the FreeBSD [.filename]#src/# distribution is " "being maintained by a person or group of persons, this is communicated " "through an entry in [.filename]#src/MAINTAINERS#. Maintainers of ports " "within the Ports Collection express their maintainership to the world by " "adding a `MAINTAINER` line to the [.filename]#Makefile# of the port in " "question:" msgstr "" "Если определённая часть дистрибутива FreeBSD [.filename]#src/# " "поддерживается человеком или группой лиц, это указывается в файле [." "filename]#src/MAINTAINERS#. Сопровождающие портов в Коллекции портов " "указывают свою ответственность, добавляя строку `MAINTAINER` в [." "filename]#Makefile# соответствующего порта:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/policies/_index.adoc:71 #, no-wrap msgid "MAINTAINER= email-addresses\n" msgstr "MAINTAINER= email-addresses\n" #. type: delimited block = 4 #: documentation/content/en/books/developers-handbook/policies/_index.adoc:78 msgid "" "For other parts of the repository, or for sections not listed as having a " "maintainer, or when you are unsure who the active maintainer is, try looking " "at the recent commit history of the relevant parts of the source tree. It " "is quite often the case that a maintainer is not explicitly named, but the " "people who are actively working in a part of the source tree for, say, the " "last couple of years are interested in reviewing changes. Even if this is " "not specifically mentioned in the documentation or the source itself, asking " "for a review as a form of courtesy is a very reasonable thing to do." msgstr "" "Для других частей репозитория или для разделов, в которых не указан " "сопровождающий, или если вы не уверены, кто является активным " "сопровождающим, попробуйте посмотреть историю последних коммитов " "соответствующих частей дерева исходного кода. Довольно часто сопровождающий " "явно не указан, но люди, которые активно работали с частью дерева исходного " "кода, скажем, последние пару лет, заинтересованы в проверке изменений. Даже " "если это не указано явно в документации или в самом исходном коде, запросить " "проверку из вежливости — вполне разумное действие." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:81 msgid "The role of the maintainer is as follows:" msgstr "Роль сопровождающего заключается в следующем:" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:83 msgid "" "The maintainer owns and is responsible for that code. This means that he or " "she is responsible for fixing bugs and answering problem reports pertaining " "to that piece of the code, and in the case of contributed software, for " "tracking new versions, as appropriate." msgstr "" "Сопровождающий является владельцем и ответственным за этот код. Это " "означает, что он или она отвечает за исправление ошибок и решение проблем, " "связанных с этой частью кода, а в случае с предоставленным программным " "обеспечением — за отслеживание новых версий, если это необходимо." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:84 msgid "" "Changes to directories which have a maintainer defined shall be sent to the " "maintainer for review before being committed. Only if the maintainer does " "not respond for an unacceptable period of time, to several emails, will it " "be acceptable to commit changes without review by the maintainer. However, " "it is suggested that you try to have the changes reviewed by someone else if " "at all possible." msgstr "" "Изменения в каталогах, для которых определен сопровождающий, должны быть " "отправлены сопровождающему на проверку и рецензирование перед коммитом. " "Только если сопровождающий не отвечает в течение недопустимо долгого времени " "на несколько писем, допустимо закоммитить изменения без его проверки. Тем не " "менее, рекомендуется по возможности попытаться получить рецензирование " "изменений у кого-нибудь ещё." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:85 msgid "" "It is of course not acceptable to add a person or group as maintainer unless " "they agree to assume this duty. On the other hand it does not have to be a " "committer and it can easily be a group of people." msgstr "" "Конечно, недопустимо добавлять человека или группу в качестве " "сопровождающего, если они не согласны взять на себя эти обязанности. С " "другой стороны, это не обязательно должен быть один коммиттер, и это может " "быть и группа людей." #. type: Title == #: documentation/content/en/books/developers-handbook/policies/_index.adoc:87 #, no-wrap msgid "Contributed Software" msgstr "Стороннее программное обеспечение" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:92 msgid "" "Some parts of the FreeBSD distribution consist of software that is actively " "being maintained outside the FreeBSD project. For historical reasons, we " "call this _contributed_ software. Some examples are LLVM, man:zlib[3], and " "man:awk[1]." msgstr "" "Некоторые части дистрибутива FreeBSD состоят из программного обеспечения, " "которое активно поддерживается за пределами проекта FreeBSD. По историческим " "причинам мы называем это _сторонним_ программным обеспечением. Некоторые " "примеры: LLVM, man:zlib[3] и man:awk[1]." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:96 msgid "" "The accepted procedure for managing contributed software involves creating a " "_vendor branch_, where the software can be imported cleanly (without " "modification) and updates can be tracked in a versioned manner. Then, the " "content of the vendor branch is applied to the source tree, possibly with " "local modifications. FreeBSD-specific build glue is maintained in the " "source tree, not in the vendor branch." msgstr "" "Принятая процедура управления вносимым программным обеспечением включает " "создание _ветки поставщика_ (_vendor branch_), где программное обеспечение " "может быть импортировано в чистом виде (без изменений), а обновления могут " "отслеживаться с учётом версий. Затем содержимое ветки поставщика применяется " "к дереву исходного кода, возможно, с локальными изменениями. Специфичные для " "FreeBSD элементы сборки поддерживаются в дереве исходного кода, а не в ветке " "поставщика." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:100 msgid "" "Depending on their needs and complexity, individual software projects may " "deviate from this procedure, at the discretion of the maintainer. The exact " "steps required to update a particular piece of contributed software should " "be recorded in a file named `FREEBSD-upgrade`; for example, link:https://" "cgit.freebsd.org/src/tree/contrib/libarchive/FREEBSD-upgrade[libarchive's " "FREEBSD-upgrade file]." msgstr "" "В зависимости от потребностей и сложности, отдельные программные проекты " "могут отклоняться от этой процедуры по усмотрению сопровождающего. Точные " "шаги, необходимые для обновления конкретного программного обеспечения, " "должны быть записаны в файле с именем `FREEBSD-upgrade`; например, " "link:https://cgit.freebsd.org/src/tree/contrib/libarchive/FREEBSD-upgrade[" "файл FREEBSD-upgrade libarchive]." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:103 msgid "" "Contributed software is usually placed in the [.filepath]#contrib/# " "subdirectory of the source tree, with some exceptions. Contributed software " "used only by the kernel lives under [.filepath]#sys/contrib/#." msgstr "" "Стороннее программное обеспечение обычно размещается в подкаталоге [." "filepath]#contrib/# дерева исходных кодов, за некоторыми исключениями. " "Стороннее программное обеспечение, используемое только ядром, находится в [." "filepath]#sys/contrib/#." #. type: delimited block = 4 #: documentation/content/en/books/developers-handbook/policies/_index.adoc:107 msgid "" "Because it makes it harder to import future versions minor, trivial and/or " "cosmetic changes are _strongly discouraged_ on files that are still tracking " "the vendor branch." msgstr "" "Поскольку это затрудняет импорт будущих версий, незначительные, тривиальные " "и/или косметические изменения _настоятельно не рекомендуются_ для файлов, " "которые всё ещё отслеживают ветку поставщика." #. type: Title === #: documentation/content/en/books/developers-handbook/policies/_index.adoc:110 #, no-wrap msgid "Vendor Imports" msgstr "Импорт веток поставщика" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:113 msgid "" "The standard process for managing contributed software and vendor branches " "is described in detail by the extref:{committers-guide}#vendor-import-" "git[Committer's Guide]." msgstr "" "Стандартный процесс управления сторонним программным обеспечением и ветками " "поставщиков подробно описан в extref:{committers-guide}#vendor-import-git[" "Руководстве коммиттера]." #. type: Title == #: documentation/content/en/books/developers-handbook/policies/_index.adoc:115 #, no-wrap msgid "Encumbered Files" msgstr "Файлы с правовыми ограничениями" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:121 msgid "" "It might occasionally be necessary to include an encumbered file in the " "FreeBSD source tree. For example, if a device requires a small piece of " "binary code to be loaded to it before the device will operate, and we do not " "have the source to that code, then the binary file is said to be " "encumbered. The following policies apply to including encumbered files in " "the FreeBSD source tree." msgstr "" "Время от времени может возникнуть необходимость включить файл с правовыми " "ограничениями (обремененными лицензиями, патентами) в дерево исходного кода " "FreeBSD. Например, если устройство требует загрузки небольшого бинарного " "кода перед началом работы, а у нас нет исходного кода для него, то такой " "бинарный файл считается обремененным. Следующие политики применяются к " "включению обремененных файлов в дерево исходного кода FreeBSD." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:123 msgid "" "Any file which is interpreted or executed by the system CPU(s) and not in " "source format is encumbered." msgstr "" "Любой файл, который интерпретируется или выполняется процессором(-ами) " "системы и не представлен в исходном формате, является обременённым." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:124 msgid "Any file with a license more restrictive than BSD or GNU is encumbered." msgstr "" "Любой файл с лицензией более ограничительной, чем BSD или GNU, является " "обременённым." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:125 msgid "" "A file which contains downloadable binary data for use by the hardware is " "not encumbered, unless (1) or (2) apply to it." msgstr "" "Файл, содержащий загружаемые двоичные данные для использования " "оборудованием, не является обремененным, если к нему не применяется пункт (1)" " или (2)." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:126 msgid "" "Any encumbered file requires specific approval from the link:https://www." "FreeBSD.org/administration/#t-core[Core Team] before it is added to the " "repository." msgstr "" "Любой файл с правовыми ограничениями требует специального одобрения от " "link:https://www.FreeBSD.org/administration/#t-core[Основной команды (Core " "Team)] перед добавлением в репозиторий." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:127 msgid "" "Encumbered files go in [.filename]#src/contrib# or [.filename]#src/sys/" "contrib#." msgstr "" "Обремененные файлы помещаются в [.filename]#src/contrib# или [.filename]#src/" "sys/contrib#." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:128 msgid "" "The entire module should be kept together. There is no point in splitting " "it, unless there is code-sharing with non-encumbered code." msgstr "" "Весь модуль должен храниться вместе. Нет смысла разделять его, если только " "нет совместного использования кода с необременённой частью кода." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:130 msgid "" "In the past binary files were typically uuencoded, and named [." "filename]#arch/filename.o.uu#. This is no longer necessary, and binary " "files may be added to the repository unchanged." msgstr "" "В прошлом бинарные файлы обычно кодировались с помощью uuencode и назывались " "[.filename]#arch/filename.o.uu#. Теперь в этом нет необходимости, и бинарные " "файлы могут добавляться в репозиторий без изменений." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:131 msgid "Kernel files:" msgstr "Файлы ядра системы:" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:132 msgid "" "Should always be referenced in [.filename]#conf/files.*# (for build " "simplicity)." msgstr "" "Всегда должны быть указана в [.filename]#conf/files.*# (для упрощения " "сборки)." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:133 msgid "" "Should always be in [.filename]#LINT#, but the link:https://www.FreeBSD.org/" "administration/#t-core[Core Team] decides per case if it should be commented " "out or not. The link:https://www.FreeBSD.org/administration/#t-core[Core " "Team] can, of course, change their minds later on." msgstr "" "Всегда должны быть в [.filename]#LINT#, но link:https://www.FreeBSD.org/" "administration/#t-core[Основная команда (Core Team)] решает в каждом " "конкретном случае, следует ли их закомментировать или нет. link:https://www." "FreeBSD.org/administration/#t-core[Основная команда] может, конечно, позже " "изменить свое решение." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:134 msgid "The _Release Engineer_ decides whether or not it goes into the release." msgstr "_Инженер по выпуску_ решает, будет ли это включено в выпуск." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:136 msgid "User-land files:" msgstr "Пользовательские файлы:" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:137 msgid "" "The link:https://www.FreeBSD.org/administration/#t-core[Core team] decides " "if the code should be part of the installed base system." msgstr "" "Команда link:https://www.FreeBSD.org/administration/#t-core[Основная команда " "(Core team)] принимает решение о включении кода в базовую устанавливаемую " "систему." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:138 msgid "" "The link:https://www.FreeBSD.org/administration/#t-re[Release Engineering] " "decides if it goes into the release." msgstr "" "link:https://www.FreeBSD.org/administration/#t-re[Команда подготовки релизов]" " решает, будет ли это включено в релиз." #. type: Title == #: documentation/content/en/books/developers-handbook/policies/_index.adoc:140 #, no-wrap msgid "Shared Libraries" msgstr "Динамические библиотеки" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:144 msgid "" "If you are adding shared library support to a port or other piece of " "software that does not have one, the version numbers should follow these " "rules. Generally, the resulting numbers will have nothing to do with the " "release version of the software." msgstr "" "Если вы добавляете поддержку динамических библиотек в порт или другое " "программное обеспечение, у которого её нет, номера версий библиотек должны " "следовать этим правилам. Обычно итоговые номера не будут иметь ничего общего " "с версией выпуска программного обеспечения." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:146 msgid "For ports:" msgstr "Для портов:" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:148 msgid "Prefer using the number already selected by upstream" msgstr "Предпочитайте использовать номер, уже выбранный вышестоящим проектом" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:149 msgid "If upstream provides symbol versioning, ensure that we use their script" msgstr "" "Если вышестоящий источник предоставляет управление версиями символов, " "убедитесь, что мы используем их скрипт" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:151 msgid "For the base system:" msgstr "Для базовой системы:" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:153 msgid "Start library version from 1" msgstr "Начните версии библиотеки с 1" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:154 msgid "It is strongly recommended to add symbol versioning to the new library" msgstr "" "Настоятельно рекомендуется добавить контроль версий символов в новую " "библиотеку" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:155 msgid "" "If there is an incompatible change, handle it with symbol versioning, " "maintaining backward ABI compatibility" msgstr "" "Если есть несовместимое изменение, обработайте его с помощью версионирования " "символов, сохраняя обратную совместимость ABI" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:156 msgid "" "If this is impossible, or the library does not use symbol versioning, bump " "the library version" msgstr "" "Если это невозможно или библиотека не использует версионирование символов, " "увеличьте версию библиотеки" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:157 msgid "" "Before even considering bumping library version for symbol-versioned " "library, consult with Release Engineering team, providing reasons why the " "change is so important that it should be allowed despite breaking the ABI" msgstr "" "Прежде чем даже рассматривать увеличение версии библиотеки для библиотеки с " "версионированием символов, проконсультируйтесь с Командой подготовки " "релизов, предоставив причины, почему изменение настолько важно, что его " "следует разрешить, несмотря на нарушение ABI" #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:159 msgid "" "For instance, added functions and bugfixes not changing the interfaces are " "fine, while deleted functions, changed function call syntax, etc. should " "either provide backward-compat symbols, or will force the major version " "number to change." msgstr "" "Например, добавленные функции и исправления ошибок, не изменяющие " "интерфейсы, допустимы, тогда как удалённые функции, изменённый синтаксис " "вызовов и т.д. должны либо предоставлять обратно-совместимые символы, либо " "приведут к изменению старшего номера версии." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:161 msgid "" "It is the duty of the committer making the change to handle library " "versioning." msgstr "" "Обязанность коммиттера, вносящего изменения, — управлять версионированием " "библиотек." #. type: Plain text #: documentation/content/en/books/developers-handbook/policies/_index.adoc:166 msgid "" "The ELF dynamic linker matches library names literally. There is a popular " "convention where library version is written in the form `libexample.so.x.y`, " "where x is the major version, and y is minor. Common practice is to set the " "library' soname (`DT_SONAME` ELF tag) to `libexample.so.x`, and set up " "symlinks `libexample.so.x->libexample.so.x.y`, `libexample.so->libexample.so." "x` on library installation for the latest minor version y. Then, since the " "static linker searches for `libexample.so` when the `-lexample` command line " "option is specified, objects linked with libexample get a dependency on the " "right library. Almost all popular build systems use this scheme " "automatically." msgstr "" "Динамический загрузчик ELF сопоставляет имена библиотек буквально. " "Существует популярное соглашение, согласно которому версия библиотеки " "записывается в виде `libexample.so.x.y`, где x — это мажорная версия, а y — " "минорная. Общепринятой практикой является установка поля soname у библиотеки " "(тег ELF `DT_SONAME`) в `libexample.so.x`, а также создание символических " "ссылок `libexample.so.x->libexample.so.x.y`, `libexample.so->libexample.so.x`" " при установке библиотеки для последней минорной версии y. Таким образом, " "поскольку статический компоновщик ищет `libexample.so`, когда указана опция " "командной строки `-lexample`, объекты, скомпонованные с libexample, получают " "информацию о зависимости от правильной библиотеки. Почти все популярные " "системы сборки автоматически используют эту схему."