# 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. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-05-01 19:56-0300\n" "PO-Revision-Date: 2025-09-05 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: YAML Front Matter: description #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:1 #, no-wrap msgid "How to quickly create a new FreeBSD Port" msgstr "Как быстро создать новый порт FreeBSD" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:1 #, no-wrap msgid "Chapter 3. Quick Porting" msgstr "Глава 3. Быстрое портирование" #. type: Title = #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:14 #, no-wrap msgid "Quick Porting" msgstr "Быстрое портирование" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:53 msgid "" "This section describes how to quickly create a new port. For applications " "where this quick method is not adequate, the full \"Slow Porting\" process " "is described in crossref:slow-porting[slow-porting,Slow Porting]." msgstr "" "В этом разделе описано, как быстро создать новый порт. Для случаев, когда " "этот быстрый метод не подходит, полный процесс \"Медленного портирования\" " "описан в разделе crossref:slow-porting[slow-porting,Медленное портирование]." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:55 msgid "" "First, get the original tarball and put it into `DISTDIR`, which defaults to " "[.filename]#/usr/ports/distfiles#." msgstr "" "Во-первых, скачайте оригинальный tar-файл и поместите его в каталог `DISTDIR`" ", который по умолчанию есть не что иное, как [.filename]#/usr/ports/" "distfiles#." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:61 msgid "" "These steps assume that the software compiled out-of-the-box. In other " "words, absolutely no changes were required for the application to work on a " "FreeBSD system. If anything had to be changed, refer to crossref:slow-" "porting[slow-porting,Slow Porting]." msgstr "" "Здесь предполагается, что программное обеспечение компилируется без проблем " "как есть, то есть для работы приложения на вашей системе FreeBSD не " "потребовалось абсолютно никаких изменений. Если требовалось что-то изменить, " "то вам придется обратиться также и к следующему разделу — crossref:slow-" "porting[slow-porting,Медленное портирование]." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:66 msgid "" "It is recommended to set the `DEVELOPER` man:make[1] variable in " "[.filename]#/etc/make.conf# before getting into porting." msgstr "" "Перед началом портирования рекомендуется установить переменную man:make[1] " "`DEVELOPER` в [.filename]#/etc/make.conf#." #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:70 #, no-wrap msgid "# echo DEVELOPER=yes >> /etc/make.conf\n" msgstr "# echo DEVELOPER=yes >> /etc/make.conf\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:73 msgid "" "This setting enables the \"developer mode\" that displays deprecation " "warnings and activates some further quality checks on calling `make`." msgstr "" "Эта настройка включает \"режим разработчика\", в котором отображаются " "предупреждения при использовании устаревших конструкций и задействуются " "некоторые дополнительные проверки при вызове команды `make`." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:76 #, no-wrap msgid "Writing the Makefile" msgstr "Создание файла [.filename]#Makefile#" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:79 msgid "The minimal [.filename]#Makefile# would look something like this:" msgstr "Минимальный [.filename]#Makefile# будет выглядеть примерно так:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:86 #, no-wrap msgid "" "PORTNAME=\toneko\n" "DISTVERSION=\t1.1b\n" "CATEGORIES=\tgames\n" "MASTER_SITES=\tftp://ftp.rediris.es/sites/ftp.freebsd.org/pub/FreeBSD/\n" msgstr "" "PORTNAME=\toneko\n" "DISTVERSION=\t1.1b\n" "CATEGORIES=\tgames\n" "MASTER_SITES=\tftp://ftp.rediris.es/sites/ftp.freebsd.org/pub/FreeBSD/\n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:90 #, no-wrap msgid "" "MAINTAINER=\tyouremail@example.com\n" "COMMENT=\tCat chasing a mouse all over the screen\n" "WWW=\t\thttp://www.daidouji.com/oneko/\n" msgstr "" "MAINTAINER=\tyouremail@example.com\n" "COMMENT=\tCat chasing a mouse all over the screen\n" "WWW=\t\thttp://www.daidouji.com/oneko/\n" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:92 #, no-wrap msgid ".include \n" msgstr ".include \n" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:96 msgid "" "Try to figure it out. A more detailed example is shown in the " "crossref:porting-samplem[porting-samplem,sample Makefile] section." msgstr "" "Посмотрим, сможете ли вы его понять. Более подробный пример приведен в " "секции crossref:porting-samplem[porting-samplem,пример Makefile]." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:98 #, no-wrap msgid "Writing the Description Files" msgstr "Создание информационных файлов" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:103 msgid "" "There are two description files that are required for any port, whether they " "actually package or not. They are [.filename]#pkg-descr# and " "[.filename]#pkg-plist#. Their [.filename]#pkg-# prefix distinguishes them " "from other files." msgstr "" "Имеется два информационных файла, которые требуются для любого порта, вне " "зависимости от того, является ли он пакетом или нет. Это [.filename]#pkg-" "descr# и [.filename]#pkg-plist#. Префикс [.filename]#pkg-# отличает их от " "других файлов." #. type: Title === #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:105 #, no-wrap msgid "[.filename]#pkg-descr#" msgstr "[.filename]#pkg-descr#" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:109 msgid "" "This is a longer description of the port. One to a few paragraphs concisely " "explaining what the port does is sufficient." msgstr "" "Это более подробное краткое описание порта. От одного до нескольких абзацев, " "кратко описывающих, что представляет собой порт, будет достаточно." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:116 msgid "" "This is _not_ a manual or an in-depth description on how to use or compile " "the port! _Please be careful when copying from the [.filename]#README# or " "manpage_. Too often they are not a concise description of the port or are " "in an awkward format. For example, manpages have justified spacing, which " "looks particularly bad with monospaced fonts." msgstr "" "Это _не_ руководство и не подробное описание того, как использовать или " "компилировать порт! _Пожалуйста, будьте осторожны при копировании из [." "filename]#README# или manpage_. Очень часто они не содержат краткого " "описания порта или имеют неудобный формат. Например, manpages используют " "выравнивание по ширине, что особенно плохо выглядит с моноширинными шрифтами." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:118 msgid "" "On the other hand, the content of [.filename]#pkg-descr# must be longer than " "the crossref:makefiles[makefile-comment,`COMMENT` line from the Makefile]. " "It must explain in more depth what the port is all about." msgstr "" "С другой стороны, содержимое файла [.filename]#pkg-descr# должно быть " "длиннее, чем crossref:makefiles[makefile-comment,строка `COMMENT` из " "Makefile]. Оно должно более подробно объяснять, что собой представляет " "данный порт." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:122 msgid "" "A well-written [.filename]#pkg-descr# describes the port completely enough " "that users would not have to consult the documentation or visit the website " "to understand what the software does, how it can be useful, or what " "particularly nice features it has. Mentioning certain requirements like a " "graphical toolkit, heavy dependencies, runtime environment, or " "implementation languages help users decide whether this port will work for " "them." msgstr "" "Хорошо составленный [.filename]#pkg-descr# описывает порт достаточно полно, " "чтобы пользователю не приходилось сверяться с документацией или посещать " "вебсайт для понимания того, что делает данное программное обеспечение, чем " "оно может быть полезно или какие хорошие функции у него имеются. Упоминание " "про определённые требования, такие как используемый графический " "инструментарий, тяжёлые зависимости, окружение для запуска или используемый " "язык программирования помогут пользователям определиться, будет ли этот порт " "для них работать." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:126 msgid "" "The URL that used to be included as the last line of the [.filename]#pkg-" "descr# file has been moved to the [.filename]#Makefile#." msgstr "" "URL, который ранее включался в последнюю строку файла [.filename]#pkg-descr#" ", был перемещен в [.filename]#Makefile#." #. type: Title === #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:129 #, no-wrap msgid "[.filename]#pkg-plist#" msgstr "[.filename]#pkg-plist#" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:134 msgid "" "This file lists all the files installed by the port. It is also called the " "\"packing list\" because the package is generated by packing the files " "listed here. The pathnames are relative to the installation prefix (usually " "[.filename]#/usr/local#)." msgstr "" "Здесь перечисляются все файлы, устанавливаемые портом. Его также называют " "\"списком для упаковки\", потому что пакет генерируется упаковкой файлов, " "которые здесь указаны. Имена путей указываются относительно установочного " "префикса (обычно [.filename]#/usr/local#)." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:136 msgid "Here is a small example:" msgstr "Вот маленький пример:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:145 #, no-wrap msgid "" "bin/oneko\n" "man/man1/oneko.1.gz\n" "lib/X11/app-defaults/Oneko\n" "lib/X11/oneko/cat1.xpm\n" "lib/X11/oneko/cat2.xpm\n" "lib/X11/oneko/mouse.xpm\n" msgstr "" "bin/oneko\n" "man/man1/oneko.1.gz\n" "lib/X11/app-defaults/Oneko\n" "lib/X11/oneko/cat1.xpm\n" "lib/X11/oneko/cat2.xpm\n" "lib/X11/oneko/mouse.xpm\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:148 msgid "" "Refer to the man:pkg-create[8] manual page for details on the packing list." msgstr "" "Обратитесь к странице справочной системы по команде man:pkg-create[8] с " "подробным описанием формата списка упаковки." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:155 msgid "" "It is recommended to keep all the filenames in this file sorted " "alphabetically. It will make verifying changes when upgrading the port much " "easier. The sorting should be applied after variable expansion takes " "place. The framework does this correctly when the package list is " "crossref:plist[plist-autoplist,generated automatically]." msgstr "" "Рекомендуется, чтобы имена файлов в этом списке были отсортированы в " "алфавитном порядке. Это позволит значительно облегчить сверку изменений при " "обновлении порта. Фреймворк делает это корректно, когда список пакета " "crossref:plist[plist-autoplist,сгенерирован автоматически]." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:161 msgid "" "Creating a packing list manually can be a very tedious task. If the port " "installs a large numbers of files, crossref:plist[plist-autoplist,creating " "the packing list automatically] might save time." msgstr "" "Создание списка упаковки вручную может оказаться весьма трудоёмкой задачей. " "Если порт устанавливает большое количество файлов, раздел об crossref:plist" "[plist-autoplist,автоматическом построении списка упаковки] может помочь " "сэкономить время." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:166 msgid "" "There is only one case when [.filename]#pkg-plist# can be omitted from a " "port. If the port installs just a handful of files, list them in " "`PLIST_FILES`, within the port's [.filename]#Makefile#. For instance, we " "could get along without [.filename]#pkg-plist# in the above " "[.filename]#oneko# port by adding these lines to the [.filename]#Makefile#:" msgstr "" "Существует только одно исключение, когда у порта может отсутствовать [." "filename]#pkg-plist#. Если порт устанавливает лишь несколько файлов, а " "возможно, и каталогов, то они могут быть перечислены в переменных " "`PLIST_FILES` и `PLIST_DIRS`, соответственно, внутри файла [." "filename]#Makefile# порта. К примеру, мы можем обойтись без файла [.filename" "]#pkg-plist# у приведённого выше порта [.filename]#oneko#, добавив следующие " "строки в [.filename]#Makefile#:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:175 #, no-wrap msgid "" "PLIST_FILES=\tbin/oneko \\\n" "\t\tman/man1/oneko.1.gz \\\n" "\t\tlib/X11/app-defaults/Oneko \\\n" "\t\tlib/X11/oneko/cat1.xpm \\\n" "\t\tlib/X11/oneko/cat2.xpm \\\n" "\t\tlib/X11/oneko/mouse.xpm\n" msgstr "" "PLIST_FILES=\tbin/oneko \\\n" "\t\tman/man1/oneko.1.gz \\\n" "\t\tlib/X11/app-defaults/Oneko \\\n" "\t\tlib/X11/oneko/cat1.xpm \\\n" "\t\tlib/X11/oneko/cat2.xpm \\\n" "\t\tlib/X11/oneko/mouse.xpm\n" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:182 msgid "" "Usage of `PLIST_FILES` should not be abused. When looking for the origin of " "a file, people usually try to grep through the [.filename]#pkg-plist# files " "in the ports tree. Listing files in `PLIST_FILES` in the " "[.filename]#Makefile# makes that search more difficult." msgstr "" "Использование `PLIST_FILES` не должно быть чрезмерным. При поиске " "происхождения файла обычно просматривают файлы [.filename]#pkg-plist# в " "дереве портов с помощью grep. Указание файлов в `PLIST_FILES` в [." "filename]#Makefile# усложняет этот поиск." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:187 msgid "" "If a port needs to create an empty directory, or creates directories outside " "of [.filename]#${PREFIX}# during installation, refer to crossref:plist[plist-" "dir-cleaning,Cleaning Up Empty Directories] for more information." msgstr "" "Если порту требуется создать пустой каталог или он создает каталоги вне [." "filename]#${PREFIX}# во время установки, обратитесь к разделу crossref:plist" "[plist-dir-cleaning,Очистка пустых каталогов] для получения дополнительной " "информации." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:193 msgid "" "As `PLIST_FILES` is a man:make[1] variable, any entry with spaces must be " "quoted. For example, if using keywords described in man:pkg-create[8] and " "crossref:plist[plist-keywords,Expanding Package List with Keywords], the " "entry must be quoted." msgstr "" "Поскольку `PLIST_FILES` является переменной man:make[1], любая запись с " "пробелами должна быть заключена в кавычки. Например, при использовании " "ключевых слов, описанных в man:pkg-create[8] и crossref:plist[plist-" "keywords,Расширение списка пакетов с помощью ключевых слов], запись должна " "быть заключена в кавычки." #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:197 #, no-wrap msgid "PLIST_FILES=\t\"@sample ${ETCDIR}/oneko.conf.sample\"\n" msgstr "PLIST_FILES=\t\"@sample ${ETCDIR}/oneko.conf.sample\"\n" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:201 msgid "" "Later we will see how [.filename]#pkg-plist# and `PLIST_FILES` can be used " "to fulfill crossref:plist[plist,more sophisticated tasks]." msgstr "" "Позже мы увидим, как [.filename]#pkg-plist# и `PLIST_FILES` могут " "использоваться для выполнения crossref:plist[plist,более сложных задач]." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:203 #, no-wrap msgid "Creating the Checksum File" msgstr "Создание файла с контрольной суммой" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:208 msgid "" "Just type `make makesum`. The ports framework will automatically generate " "[.filename]#distinfo#. Do not try to generate the file manually." msgstr "" "Просто введите команду `make makesum`. Правила утилиты make автоматически " "сгенерируют файл [.filename]#distinfo#. Не пытайтесь создавать этот файл " "вручную." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:210 #, no-wrap msgid "Testing the Port" msgstr "Тестирование порта" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:214 msgid "" "Make sure that the port rules do exactly what is desired, including " "packaging up the port. These are the important points to verify:" msgstr "" "Вы должны удостовериться, что правила построения порта выполняют именно то, " "что вы хотите, включая создание пакета для порта. Вот те важные вещи, " "которые вы должны проверить:" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:216 msgid "" "[.filename]#pkg-plist# does not contain anything not installed by the port." msgstr "" "[.filename]#pkg-plist# не содержит ничего сверх того, что устанавливается " "портом." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:217 msgid "" "[.filename]#pkg-plist# contains everything that is installed by the port." msgstr "" "[.filename]#pkg-plist# содержит абсолютно все, что устанавливается портом." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:218 msgid "" "The port can be installed using the `install` target. This verifies that the " "install script works correctly." msgstr "" "Порт может быть установлен с помощью указания цели `install`. Это позволяет " "убедиться в правильной работе сценария установки." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:219 msgid "" "The port can be deinstalled properly using the `deinstall` target. This " "verifies that the deinstall script works correctly." msgstr "" "Порт может быть правильным образом удалён с помощью указания цели `deinstall`" ". Это позволяет убедиться в правильной работе сценария удаления." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:220 msgid "" "The port only has access to network resources during the `fetch` target " "phase. This is important for package builders, such as package:ports-mgmt/" "poudriere[]." msgstr "" "Порт имеет доступ к сетевым ресурсам только во время фазы цели `fetch`. Это " "важно для сборщиков пакетов, таких как package:ports-mgmt/poudriere[]." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:221 msgid "" "Make sure that `make package` can be run as a normal user (that is, not as " "`root`). If that fails, the software may need to be patched. See also " "crossref:uses[uses-fakeroot,`fakeroot`] and crossref:uses[uses-" "uidfix,`uidfix`]." msgstr "" "Убедитесь, что команду `make package` можно выполнить от имени обычного " "пользователя (то есть не от `root`). Если это не работает, возможно, " "потребуется исправить программное обеспечение. См. также crossref:uses[uses-" "fakeroot,`fakeroot`] и crossref:uses[uses-uidfix,`uidfix`]." #. type: Block title #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:223 #, no-wrap msgid "Procedure: Recommended Test Ordering" msgstr "*Procedure: Рекомендуемый порядок проверки*" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:225 msgid "`make stage`" msgstr "`make stage`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:226 msgid "`make stage-qa`" msgstr "`make check-orphans`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:227 msgid "`make package`" msgstr "`make package`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:228 msgid "`make install`" msgstr "`make install`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:229 msgid "`make deinstall`" msgstr "`make deinstall`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:230 msgid "`make package` (as user)" msgstr "`make package` (как пользователь)" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:232 msgid "Make certain no warnings are shown in any of the stages." msgstr "Убедитесь, что на любом из этапов не выдается никаких предупреждений." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:235 msgid "" "Thorough automated testing can be done with package:ports-mgmt/poudriere[] " "from the Ports Collection, see crossref:testing[testing-poudriere,poudriere] " "for more information. It maintains `jails` where all of the steps shown " "above can be tested without affecting the state of the host system." msgstr "" "Тщательное автоматизированное тестирование можно выполнить с помощью package" ":ports-mgmt/poudriere[] из коллекции портов, дополнительную информацию см. в " "crossref:testing[testing-poudriere,poudriere]. Он поддерживает `клетки`, в " "которых можно протестировать все указанные выше шаги без воздействия на " "состояние основной системы." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:237 #, no-wrap msgid "Checking the Port with `portlint`" msgstr "Проверка вашего порта утилитой `portlint`" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:242 msgid "" "Please use `portlint` to see if the port conforms to our guidelines. The " "package:ports-mgmt/portlint[] program is part of the ports collection. In " "particular, check that the crossref:porting-samplem[porting-" "samplem,Makefile] is in the right shape and the crossref:porting-" "pkgname[porting-pkgname,package] is named appropriately." msgstr "" "Будьте добры, пользуйтесь утилитой `portlint` для проверки того, что ваш " "порт соответствует нашим рекомендациям. Программа package:ports-mgmt/" "portlint[] является частью Коллекции Портов. В частности, вы можете захотеть " "проверить, правильно ли сформирован файл crossref:porting-samplem[porting-" "samplem,Makefile] и соответствующим ли образом именован crossref:porting-" "pkgname[porting-pkgname,пакет]." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:246 msgid "" "Do not blindly follow the output of `portlint`. It is a static lint tool and " "sometimes gets things wrong." msgstr "" "Не следуйте слепо выводу `portlint`. Это статический инструмент для " "проверки, и иногда он ошибается." #. type: Title == #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:249 #, no-wrap msgid "Submitting the New Port" msgstr "Посылка нового порта" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:252 msgid "" "Before submitting the new port, read the crossref:porting-dads[porting-" "dads,DOs and DON'Ts] section." msgstr "" "Перед посылкой нового порта прочитайте раздел о том, что crossref:porting-" "dads[porting-dads,можно и нельзя] делать." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:254 msgid "" "Once happy with the port, the only thing remaining is to put it in the main " "FreeBSD ports tree and make everybody else happy about it too." msgstr "" "Когда вы наконец довольны своим первым портом, единственное, что осталось " "сделать, это включить его в основное дерево портов FreeBSD и осчастливить " "этим всех остальных." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:258 msgid "" "We do not need the [.filename]#work# directory or the " "[.filename]#pkgname.txz# package, so delete them now." msgstr "" "Нам не нужны каталог [.filename]#work# или пакет [.filename]#pkgname.txz#, " "поэтому их можно удалить." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:262 msgid "" "Next, create a man:patch[1], file. Assuming the port is called `oneko` and " "is in the `games` category." msgstr "" "Далее создайте файл man:patch[1]. Предположим, что порт называется `oneko` и " "находится в категории `games`." #. type: Block title #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:264 #, no-wrap msgid "Creating a [.filename]#.diff# for a New Port" msgstr "Создание [.filename]#.diff# для нового порта" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:268 msgid "" "Add all the files with `git add .`, then review the diff with `git diff`. " "For example:" msgstr "" "Добавьте все файлы с помощью `git add .`, затем просмотрите изменения с " "помощью `git diff`. Например:" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:273 #, no-wrap msgid "" "% git add .\n" "% git diff --staged\n" msgstr "" "% git add .\n" "% git diff --staged\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:277 msgid "" "Make sure that all required files are included, then commit the change to " "your local branch and generate a patch with `git format-patch`" msgstr "" "Убедитесь, что все необходимые файлы включены, затем зафиксируйте изменение " "в вашей локальной ветке и создайте патч с помощью `git format-patch`" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:282 #, no-wrap msgid "" "% git commit\n" "% git format-patch origin/main\n" msgstr "" "% git commit\n" "% git format-patch origin/main\n" #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:286 msgid "" "Patch generated with `git format-patch` will include author identity and " "email addresses, making it easier for developers to apply (with `git am`) " "and give proper credit." msgstr "" "Патч, созданный с помощью `git format-patch`, будет содержать идентификатор " "автора и адреса электронной почты, что упрощает применение разработчиками (с " "помощью `git am`) и правильное указание авторства." #. type: delimited block * 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:290 msgid "" "To make it easier for committers to apply the patch on their working copy of " "the ports tree, please generate the [.filename]#.diff# from the base of your " "ports tree." msgstr "" "Чтобы упростить применение патча для коммиттеров в их рабочей копии дерева " "портов, пожалуйста, создайте файл [.filename]#.diff# из корня вашего дерева " "портов." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:297 msgid "" "Submit [.filename]#oneko.diff# with the https://bugs.freebsd.org/submit/[bug " "submission form]. Use product \"Ports & Packages\", component \"Individual " "Port(s)\", and follow the guidelines shown there. Add a short description " "of the program to the Description field of the PR (perhaps a short version " "of `COMMENT`), and remember to add [.filename]#oneko.diff# as an attachment." msgstr "" "Отправьте файл [.filename]#oneko.diff# через https://bugs.freebsd.org/submit/" "[форму отправки отчётов об ошибках]. Укажите продукт \"Ports & Packages\", " "компонент \"Individual Port(s)\" и следуйте приведённым там инструкциям. " "Добавьте краткое описание программы в поле Description PR (например, " "сокращённую версию `COMMENT`) и не забудьте прикрепить файл [.filename]#oneko" ".diff#." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:303 msgid "" "Giving a good description in the summary of the problem report makes the " "work of port committers and triagers a lot easier. The expected format for " "new ports is \"[NEW PORT] _category/portname short description of the " "port_\". Using this scheme makes it easier and faster to begin the work of " "committing the new port." msgstr "" "Хорошее описание в заголовке сообщения о проблеме значительно облегчает " "работу коммиттеров портов. Для новых портов мы предпочитаем нечто вроде \"[" "NEW PORT] _категория/название_порта краткое описание порта_\". Следование " "этой схеме упрощает и ускоряет начало работы по добавлению нового порта." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:308 msgid "" "After submitting the port, please be patient. The time needed to include a " "new port in FreeBSD can vary from a few days to a few months. A simple " "search form of the Problem Report database can be searched at https://" "bugs.freebsd.org/bugzilla/query.cgi[]." msgstr "" "После отправки порта, пожалуйста, потерпите. Время, необходимое для " "включения нового порта во FreeBSD, может занимать от нескольких дней до " "нескольких месяцев. https://bugs.freebsd.org/bugzilla/query.cgi[ Здесь] " "можно увидеть список ожидающих PR для портов." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:310 msgid "" "To get a listing of _open_ port PRs, select _Open_ and _Ports & Packages_ in " "the search form, then click btn:[Search]." msgstr "" "Чтобы получить список _открытых_ PR для портов, выберите _Open_ и _Ports & " "Packages_ в форме поиска, затем нажмите btn:[Search]." #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:313 msgid "" "After looking at the new port, we will reply if necessary, and commit it to " "the tree. The submitter's name will also be added to the list of extref:" "{contributors}[Additional FreeBSD Contributors, contrib-additional] and " "other files." msgstr "" "После ознакомления с новым портом мы ответим, если это необходимо, и добавим " "его в дерево. Имя отправителя также будет добавлено в список " "extref:{contributors}[Дополнительных участников FreeBSD, contrib-additional] " "и другие файлы." #. type: Plain text #: documentation/content/en/books/porters-handbook/quick-porting/_index.adoc:318 msgid "" "Previously it was possible to submit patches for new ports using a " "man:shar[1] file; this is no longer the case with the evolution of " "man:git[1]. Committers no longer accept man:shar[1] files as their use is " "prone to mistake and does not add the relevant entry in the category's " "[.filename]#Makefile#." msgstr "" "Ранее можно было отправлять исправления для новых портов, используя файл " "man:shar[1]; однако с развитием man:git[1] это больше не актуально. " "Коммиттеры больше не принимают файлы man:shar[1], так как их использование " "чревато ошибками и не добавляет соответствующую запись в [." "filename]#Makefile# категории."