# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # Alexey, 2016. # Azamat Hackimov , 2014-2017. # kogamatranslator49 , 2015. # Darima Kogan , 2014. # Max Is , 2016. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:09+0200\n" "PO-Revision-Date: 2019-10-12 08:58+0300\n" "Last-Translator: Yuri Kozlov \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=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" "X-Generator: Lokalize 2.0\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "pkeys" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "ИМЯ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "pkeys - overview of Memory Protection Keys" msgstr "pkeys - обзор ключей защиты памяти" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "ОПИСАНИЕ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Memory Protection Keys (pkeys) are an extension to existing page-based " "memory permissions. Normal page permissions using page tables require " "expensive system calls and TLB invalidations when changing permissions. " "Memory Protection Keys provide a mechanism for changing protections without " "requiring modification of the page tables on every permission change." msgstr "" "Ключи защиты памяти (pkeys) — это расширение существующих постраничных прав " "на память. Для обычных прав на страницу используются страничные таблицы, " "требующие для изменении прав затратных системных вызовов и аннулирования " "TLB. Ключи защиты памяти предоставляют механизм изменения защиты без " "необходимости изменять страничные таблицы при каждом изменении прав." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To use pkeys, software must first \"tag\" a page in the page tables with a " "pkey. After this tag is in place, an application only has to change the " "contents of a register in order to remove write access, or all access to a " "tagged page." msgstr "" "Чтобы использовать pkeys, ПО сначала должно «пометить» (tag) страницу в " "страничных таблицах значением pkey. После размещения этой метки для удаления " "прав на запись или весь доступ к помеченной странице приложению нужно " "изменить только содержимое регистра." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Protection keys work in conjunction with the existing B, " "B, and B permissions passed to system calls such as " "B(2) and B(2), but always act to further restrict these " "traditional permission mechanisms." msgstr "" "Ключи защиты вместе с существующими правами B, B и " "B передаются в системные вызовы, такие как B(2) и " "B(2), но всегда считаются как дополнительное ограничение к " "существующим традиционным механизмам прав доступа." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If a process performs an access that violates pkey restrictions, it receives " "a B signal. See B(2) for details of the information " "available with that signal." msgstr "" "Если процесс осуществляет доступ, нарушающий ограничения pkey, то он " "получает сигнал B. Подробную информацию об этом сигнале смотрите в " "B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To use the pkeys feature, the processor must support it, and the kernel must " "contain support for the feature on a given processor. As of early 2016 only " "future Intel x86 processors are supported, and this hardware supports 16 " "protection keys in each process. However, pkey 0 is used as the default " "key, so a maximum of 15 are available for actual application use. The " "default key is assigned to any memory region for which a pkey has not been " "explicitly assigned via B(2)." msgstr "" "Чтобы использовать свойство pkeys, это должен поддерживать процессор, а ядро " "должно включать поддержку этого свойства для этого процессора. К началу " "2016 года это относится только к будущим процессорам Intel x86, и данная " "аппаратура поддерживает 16 ключей защиты на каждый процесс. Однако pkey 0 " "используется как ключ по умолчанию, поэтому для приложения доступно только " "15. Ключ по умолчанию назначается любой области памяти, для которой pkey не " "был назначен явным образом с помощью B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Protection keys have the potential to add a layer of security and " "reliability to applications. But they have not been primarily designed as a " "security feature. For instance, WRPKRU is a completely unprivileged " "instruction, so pkeys are useless in any case that an attacker controls the " "PKRU register or can execute arbitrary instructions." msgstr "" "Потенциально, ключи защиты могут добавить уровень безопасности и надежности " "приложений. Но, прежде всего, они не разрабатывались как средство защиты. " "Например, WRPKRU — это полностью непривилегированная инструкция, поэтому " "pkeys бесполезны, когда атакующий контролирует регистр PKRU или может " "выполнять любые инструкции." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Applications should be very careful to ensure that they do not \"leak\" " "protection keys. For instance, before calling B(2), the " "application should be sure that no memory has that pkey assigned. If the " "application left the freed pkey assigned, a future user of that pkey might " "inadvertently change the permissions of an unrelated data structure, which " "could impact security or stability. The kernel currently allows in-use " "pkeys to have B(2) called on them because it would have " "processor or memory performance implications to perform the additional " "checks needed to disallow it. Implementation of the necessary checks is " "left up to applications. Applications may implement these checks by " "searching the IpidI file for memory regions with the pkey " "assigned. Further details can be found in B(5)." msgstr "" "Приложения должны следить за тем, чтобы их ключи защиты не «не утекли». " "Например, перед вызовом B(2) приложение должно проверить, что " "pkey не назначен памяти. Если приложение оставит назначенным освобождённый " "pkey, то будущий пользователь этого pkey может непреднамеренно изменить " "права на не относящуюся к делу структуру данных, что может привести к " "проблемам с безопасностью или стабильностью. В настоящее время ядро " "позволяет вызывать B(2) для задействованных pkeys, так как " "выполнение дополнительных проверок повлияло бы на производительность " "процессора или памяти. Реализация необходимых проверок переложена на " "приложение. Приложения могут найти области памяти, которым назначен pkey, в " "файле IpidI. Дополнительная информация представлена в " "B(5)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Any application wanting to use protection keys needs to be able to function " "without them. They might be unavailable because the hardware that the " "application runs on does not support them, the kernel code does not contain " "support, the kernel support has been disabled, or because the keys have all " "been allocated, perhaps by a library the application is using. It is " "recommended that applications wanting to use protection keys should simply " "call B(2) and test whether the call succeeds, instead of " "attempting to detect support for the feature in any other way." msgstr "" "Приложение, которое хочет воспользоваться ключами защиты, может работать и " "без них. Ключи могут быть недоступны из-за отсутствия аппаратной поддержки " "системе, где запускается приложение, в коде ядра может не быть поддержки, " "поддержка в ядре может быть выключена или все ключи уже задействованы " "библиотекой, которую использует приложение. В приложениях рекомендуется " "просто вызывать B(2) и проверять успешность выполнения, а не " "пытаться проверять наличие поддержки каким-то другим образом." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Although unnecessary, hardware support for protection keys may be enumerated " "with the I instruction. Details of how to do this can be found in " "the Intel Software Developers Manual. The kernel performs this enumeration " "and exposes the information in I under the \"flags\" field. " "The string \"pku\" in this field indicates hardware support for protection " "keys and the string \"ospke\" indicates that the kernel contains and has " "enabled protection keys support." msgstr "" "Хотя и необязательно, поддержку ключей защиты в аппаратуре можно определить " "помощью инструкции I. От том, как это сделать, смотрите в программном " "руководстве разработчика Intel. Ядро определяет наличие поддержки и выводит " "информацию в I в поле «flags». Строка «pku» в этом поле " "означает, что аппаратура поддерживает ключи защиты, а строка «ospke» " "означает, что ядро содержит включённую поддержку защиты." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Applications using threads and protection keys should be especially " "careful. Threads inherit the protection key rights of the parent at the " "time of the B(2), system call. Applications should either ensure " "that their own permissions are appropriate for child threads at the time " "when B(2) is called, or ensure that each child thread can perform " "its own initialization of protection key rights." msgstr "" "Если приложение использует нити и ключи защиты, то нужно быть особенно " "осторожным. Нити наследуют права ключей защиты родителя при выполнении " "системного вызова B(2). Приложения должны убедиться, что их " "собственные права подходят для дочерних нитей до вызова B(2) или " "выполнять инициализацию прав ключей защиты в самих нитях." #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Signal Handler Behavior" msgstr "Поведение обработчика сигналов" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Each time a signal handler is invoked (including nested signals), the thread " "is temporarily given a new, default set of protection key rights that " "override the rights from the interrupted context. This means that " "applications must re-establish their desired protection key rights upon " "entering a signal handler if the desired rights differ from the defaults. " "The rights of any interrupted context are restored when the signal handler " "returns." msgstr "" "Каждый раз, когда вызывается обработчик сигнала (включая вложенные сигналы), " "нити временно даётся новый набор прав ключа защиты по умолчанию, который " "заменяет права прерванного контекста. Это означает, что приложения должны " "переустанавливать свои желаемые права ключа защиты при входе в обработчик " "сигнала, если желаемые права отличаются от значения по умолчанию. Права " "любого прерванного контекста восстанавливаются при завершении обработчика " "сигналов." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This signal behavior is unusual and is due to the fact that the x86 PKRU " "register (which stores protection key access rights) is managed with the " "same hardware mechanism (XSAVE) that manages floating-point registers. The " "signal behavior is the same as that of floating-point registers." msgstr "" "Данное поведение сигнала необычно из-за того, что регистр x86 PKRU (который " "хранит права доступа ключа защиты) управляется тем же аппаратным механизмом " "(XSAVE) что и регистры плавающей запятой. Поведение сигнала такое же как у " "регистров плавающей запятой." #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Protection Keys system calls" msgstr "Системные вызовы ключей защиты" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The Linux kernel implements the following pkey-related system calls: " "B(2), B(2), and B(2)." msgstr "" "В ядре Linux реализованы следующие системные вызовы для работы с pkey: " "B(2), B(2) и B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The Linux pkey system calls are available only if the kernel was configured " "and built with the B option." msgstr "" "Системные вызовы Linux pkey доступны только, если ядро было собрано с " "включённым параметром B." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "ПРИМЕРЫ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below allocates a page of memory with read and write " "permissions. It then writes some data to the memory and successfully reads " "it back. After that, it attempts to allocate a protection key and disallows " "access to the page by using the WRPKRU instruction. It then tries to access " "the page, which we now expect to cause a fatal signal to the application." msgstr "" "Программа, представленная далее, выделяет страницу памяти с правами на " "чтение и запись. Затем она записывает кусок данных в памяти и читает его. " "После этого она пытается выделить ключ защиты и запретить доступ к странице " "с помощью инструкции WRPKRU. Далее она пытается получить доступ к странице, " "что, как мы ожидаем, вызовет сигнал завершения приложения." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$B< ./a.out>\n" "buffer contains: 73\n" "about to read buffer again...\n" "Segmentation fault (core dumped)\n" msgstr "" "$B< ./a.out>\n" "буфер содержит: 73\n" "читаем буфер снова...\n" "Segmentation fault (core dumped)\n" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "Исходный код программы" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Eunistd.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" "\\&\n" "int\n" "main(void)\n" "{\n" " int status;\n" " int pkey;\n" " int *buffer;\n" "\\&\n" " /*\n" " * Allocate one page of memory.\n" " */\n" " buffer = mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,\n" " MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);\n" " if (buffer == MAP_FAILED)\n" " err(EXIT_FAILURE, \"mmap\");\n" "\\&\n" " /*\n" " * Put some random data into the page (still OK to touch).\n" " */\n" " *buffer = __LINE__;\n" " printf(\"buffer contains: %d\\en\", *buffer);\n" "\\&\n" " /*\n" " * Allocate a protection key:\n" " */\n" " pkey = pkey_alloc(0, 0);\n" " if (pkey == -1)\n" " err(EXIT_FAILURE, \"pkey_alloc\");\n" "\\&\n" " /*\n" " * Disable access to any memory with \"pkey\" set,\n" " * even though there is none right now.\n" " */\n" " status = pkey_set(pkey, PKEY_DISABLE_ACCESS);\n" " if (status)\n" " err(EXIT_FAILURE, \"pkey_set\");\n" "\\&\n" " /*\n" " * Set the protection key on \"buffer\".\n" " * Note that it is still read/write as far as mprotect() is\n" " * concerned and the previous pkey_set() overrides it.\n" " */\n" " status = pkey_mprotect(buffer, getpagesize(),\n" " PROT_READ | PROT_WRITE, pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_mprotect\");\n" "\\&\n" " printf(\"about to read buffer again...\\en\");\n" "\\&\n" " /*\n" " * This will crash, because we have disallowed access.\n" " */\n" " printf(\"buffer contains: %d\\en\", *buffer);\n" "\\&\n" " status = pkey_free(pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_free\");\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "СМОТРИТЕ ТАКЖЕ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(2), B(2), B(2), B(2)" msgstr "" "B(2), B(2), B(2), B(2)" #. type: TH #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "2022-10-30" msgstr "30 октября 2022 г." #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "Linux man-pages 6.03" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Eunistd.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" msgstr "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Eunistd.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(void)\n" "{\n" " int status;\n" " int pkey;\n" " int *buffer;\n" msgstr "" "int\n" "main(void)\n" "{\n" " int status;\n" " int pkey;\n" " int *buffer;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * Allocate one page of memory.\n" " */\n" " buffer = mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,\n" " MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);\n" " if (buffer == MAP_FAILED)\n" " err(EXIT_FAILURE, \"mmap\");\n" msgstr "" " /*\n" " * выделяем страницу памяти\n" " */\n" " buffer = mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,\n" " MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);\n" " if (buffer == MAP_FAILED)\n" " err(EXIT_FAILURE, \"mmap\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * Put some random data into the page (still OK to touch).\n" " */\n" " *buffer = __LINE__;\n" " printf(\"buffer contains: %d\\en\", *buffer);\n" msgstr "" " /*\n" " * пишем произвольные данные в страницу (чуть)\n" " */\n" " *buffer = __LINE__;\n" " printf(\"буфер содержит: %d\\en\", *buffer);\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * Allocate a protection key:\n" " */\n" " pkey = pkey_alloc(0, 0);\n" " if (pkey == -1)\n" " err(EXIT_FAILURE, \"pkey_alloc\");\n" msgstr "" " /*\n" " * выделяем ключ защиты:\n" " */\n" " pkey = pkey_alloc(0, 0);\n" " if (pkey == -1)\n" " err(EXIT_FAILURE, \"pkey_alloc\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * Disable access to any memory with \"pkey\" set,\n" " * even though there is none right now.\n" " */\n" " status = pkey_set(pkey, PKEY_DISABLE_ACCESS);\n" " if (status)\n" " err(EXIT_FAILURE, \"pkey_set\");\n" msgstr "" " /*\n" " * запрещаем доступ к памяти, на которой будет установлен «pkey»,\n" " * хотя пока ничего не запрещено\n" " */\n" " status = pkey_set(pkey, PKEY_DISABLE_ACCESS);\n" " if (status)\n" " err(EXIT_FAILURE, \"pkey_set\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * Set the protection key on \"buffer\".\n" " * Note that it is still read/write as far as mprotect() is\n" " * concerned and the previous pkey_set() overrides it.\n" " */\n" " status = pkey_mprotect(buffer, getpagesize(),\n" " PROT_READ | PROT_WRITE, pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_mprotect\");\n" msgstr "" " /*\n" " * установим ключ защиты на «буфер»\n" " * заметим, что он доступен пока не применён mprotect()\n" " * и ключ не заменен созданным ранее pkey_set()\n" " */\n" " status = pkey_mprotect(buffer, getpagesize(),\n" " PROT_READ | PROT_WRITE, pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_mprotect\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " printf(\"about to read buffer again...\\en\");\n" msgstr " printf(\"читаем буфер снова...\\en\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /*\n" " * This will crash, because we have disallowed access.\n" " */\n" " printf(\"buffer contains: %d\\en\", *buffer);\n" msgstr "" " /*\n" " * приложение падает, так как мы запретили доступ\n" " */\n" " printf(\"буфер содержит: %d\\en\", *buffer);\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " status = pkey_free(pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_free\");\n" msgstr "" " status = pkey_free(pkey);\n" " if (status == -1)\n" " err(EXIT_FAILURE, \"pkey_free\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" " exit(EXIT_SUCCESS);\n" "}\n" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "Linux man-pages 6.04" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"