diff --git a/documentation/content/ru/articles/bsdl-gpl/_index.adoc b/documentation/content/ru/articles/bsdl-gpl/_index.adoc index 579cf7d05e..079e07a998 100644 --- a/documentation/content/ru/articles/bsdl-gpl/_index.adoc +++ b/documentation/content/ru/articles/bsdl-gpl/_index.adoc @@ -1,205 +1,205 @@ --- authors: - author: 'Bruce Montague' email: brucem@alumni.cse.ucsc.edu description: 'Почему вы должны использовать лицензию в стиле BSD для вашего Open Source проекта' tags: ["bsdl", "gpl", "FreeBSD License"] title: 'Почему вы должны использовать лицензию в стиле BSD для вашего Open Source проекта' trademarks: ["freebsd", "intel", "general"] --- = Почему вы должны использовать лицензию в стиле BSD для вашего Open Source проекта :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/bsdl-gpl/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] ''' toc::[] [[intro]] == Введение Этот документ обосновывает использование лицензии в стиле BSD для программного обеспечения и данных; в частности, он рекомендует применять лицензию в стиле BSD вместо GPL. Его также можно рассматривать как введение и краткое сравнение открытых лицензий BSD и GPL. [[history]] == Очень краткая история открытого исходного кода Долгое время до того, как термин "Открытое программное обеспечение" вошел в употребление, программное обеспечение разрабатывалось свободными объединениями программистов и свободно обменивалось. Начиная с ранних 1950-х годов, организации, такие как http://www.share.org[SHARE] и http://www.decus.org[DECUS], разрабатывали большую часть программного обеспечения, которое компании-производители аппаратного обеспечения поставляли вместе со своими продуктами. В то время компьютерные компании занимались аппаратным обеспечением; все, что снижало стоимость программного обеспечения и делало больше программ доступными, повышало конкурентоспособность производителей аппаратного обеспечения. Эта модель изменилась в 1960-х годах. В 1965 году ADR разработала первый лицензированный программный продукт, независимый от компании-производителя оборудования. ADR конкурировала с бесплатным пакетом IBM, изначально разработанным клиентами IBM. ADR запатентовала своё программное обеспечение в 1968 году. Чтобы предотвратить распространение своей программы, они предоставляли её по договору аренды оборудования, где оплата распределялась на весь срок службы продукта. Таким образом, ADR сохраняла право собственности и могла контролировать перепродажу и повторное использование. В 1969 году Министерство юстиции США обвинило IBM в уничтожении бизнесов путем объединения бесплатного программного обеспечения с аппаратным обеспечением IBM. В результате этого иска IBM прекратила практику объединения; то есть, программное обеспечение стало независимым продуктом, отдельным от аппаратного обеспечения. В 1968 году компания Informatics представила приложение — первый коммерческий хит продукт, и быстро утвердила концепцию программного продукта, программной компании и очень высоких норм прибыли. Informatics разработала бессрочную лицензию, которая теперь является стандартом во всей компьютерной отрасли, при которой право собственности никогда не передаётся клиенту. [[unix-license]] == Unix с точки зрения лицензирования BSD AT&T, владевшая оригинальной реализацией Unix, была регулируемой государством монополией, связанной антимонопольными судебными разбирательствами; юридически она не могла продавать продукт на рынке программного обеспечения. Однако она имела возможность предоставлять его учебным заведениям по цене носителя. Университеты быстро приняли Unix после того, как конференция по операционным системам объявила о его доступности. Крайне полезным было то, что Unix работал на PDP-11 — очень доступном 16-битном компьютере — и был написан на языке высокого уровня, который явно подходил для системного программирования. У DEC PDP-11, по сути, был открытый аппаратный интерфейс, разработанный для того, чтобы клиентам было легко писать свою собственную ОС, что было обычной практикой. Как знаменито заявил основатель DEC Кен Олсен: «программное обеспечение приходит с небес, когда у тебя хорошее железо». Автор Unix Кен Томпсон вернулся в свой альма-матер, Калифорнийский университет в Беркли (UCB), в 1975 году и преподавал, построчно рассказывая, как работает ядро. В итоге это привело к созданию развивающейся системы, известной как BSD (Berkeley Standard Distribution). UCB перевел Unix на 32-битную архитектуру, добавил виртуальную память и реализовал версию стека TCP/IP, на котором, по сути, был построен Интернет. UCB сделал BSD доступным за стоимость носителя по условиям лицензии, которая стала известна как "лицензия BSD". Клиент покупал Unix у AT&T, а затем заказывал ленту BSD у UCB. В середине 1980-х годов антимонопольный иск правительства против AT&T завершился разделом компании. AT&T по-прежнему владела Unix и теперь могла продавать его. AT&T начала агрессивную кампанию по лицензированию, и большинство коммерческих Unix того времени стали производными от AT&T. В начале 1990-х годов AT&T подала в суд на UCB за нарушения лицензий, связанных с BSD. UCB обнаружила, что AT&T включила в свои продукты множество улучшений, сделанных в BSD, без указания авторства или оплаты, и последовало длительное судебное разбирательство, в основном между AT&T и UCB. В этот период некоторые программисты UCB начали проект по переписыванию любого кода AT&T, связанного с BSD. В результате этого проекта появилась система под названием BSD 4.4-lite (lite, потому что это была не полная система; в ней отсутствовали 6 ключевых файлов AT&T). Длинная серия статей, опубликованных чуть позже в журнале Dr. Dobbs, описывала версию Unix для ПК на базе 386, производную от BSD, с файлами-заменителями под лицензией BSD для 6 отсутствующих файлов из 4.4 lite. Эта система, названная 386BSD, была создана бывшим программистом из UCB Уильямом Джолитцем. Она стала первоосновой всех современных PC BSD. В середине 1990-х годов Novell приобрела права на Unix у AT&T, и было достигнуто (тогда секретное) соглашение о прекращении судебного разбирательства. Вскоре UCB прекратила поддержку BSD. [[current-bsdl]] == Текущее состояние FreeBSD и лицензий BSD Так называемая http://www.opensource.org/licenses/bsd-license.php[новая лицензия BSD], применяемая к FreeBSD в последние годы, по сути, означает, что вы можете делать что угодно с программой или её исходным кодом, но не получаете никаких гарантий, и ни один из авторов не несёт ответственности (по сути, вы не можете ни на кого подать в суд). Эта новая лицензия BSD призвана стимулировать коммерциализацию продукта. Любой код BSD может быть продан или включён в проприетарные продукты без каких-либо ограничений на доступность вашего кода или ваше будущее поведение. Не путайте новую лицензию BSD с "общественным достоянием" (лицензия Public Domain). Хотя объект в общественном достоянии также свободен для использования всеми, у него нет владельца. [[origins-gpl]] == Истоки GPL Пока будущее Unix оставалось неясным в конце 1980-х и начале 1990-х годов, GPL, ещё одна разработка с важными лицензионными аспектами, достигла зрелости. Ричард Столлман, разработчик Emacs, был сотрудником MIT, когда его лаборатория перешла с собственных разработок на проприетарные системы. Столлман был расстроен, обнаружив, что не может законно вносить даже незначительные улучшения в систему. (Многие его коллеги ушли, чтобы основать две компании, основанные на программном обеспечении, разработанном в MIT и лицензированном MIT; по-видимому, возникли разногласия по поводу доступа к исходному коду этого программного обеспечения). Столлман разработал альтернативу коммерческой лицензии на программное обеспечение и назвал её GPL, или «Универсальная общественная лицензия GNU» (GNU Public License). Он также основал некоммерческую организацию — http://www.fsf.org[Фонд свободного программного обеспечения] (FSF), целью которой была разработка целой операционной системы, включая все сопутствующие программы, которая не подчинялась бы проприетарным лицензиям. Эта система была названа GNU, что означает «GNU is Not Unix» (GNU — не Unix). GPL была создана как антитеза стандартной проприетарной лицензии. Для этого любые изменения, внесённые в программу под GPL, должны были возвращаться сообществу GPL (путем требования, чтобы исходный код программы был доступен пользователю), и любая программа, использующая или связывающаяся с кодом под GPL, должна была распространяться под GPL. Лицензия GPL предназначена для предотвращения перехода программного обеспечения в проприетарное состояние. Как сказано в последнем абзаце GPL: "This General Public License does not permit incorporating your program into proprietary programs (Стандартная Общественная Лицензия GNU не разрешает включать вашу программу в программы, использование которых ограничено их правообладателями)."<> http://www.opensource.org/licenses/gpl-license.php[GPL] — это сложная лицензия, поэтому вот несколько эмпирических правил при использовании GPL: * вы можете брать сколько угодно за распространение, поддержку или документацию к программному обеспечению, но вы не можете продавать само программное обеспечение. * эмпирическое правило гласит, что если для компиляции программы требуется исходный код под GPL, то программа должна распространяться под лицензией GPL. Статическая линковка с библиотекой под GPL требует, чтобы программа также была под GPL. * В соответствии с GPL, любые патенты, связанные с ПО под лицензией GPL, должны быть лицензированы для свободного использования всеми. * простое объединение программного обеспечения, например, размещение нескольких программ на одном диске, не считается включением программ под лицензией GPL в программы, не подпадающие под GPL. * вывод программы не считается производным произведением. Это позволяет использовать компилятор gcc в коммерческих средах без юридических проблем. * поскольку ядро Linux распространяется под лицензией GPL, любой код, статически связанный с ядром Linux, должен быть лицензирован под GPL. Это требование можно обойти, используя динамическую загрузку модулей ядра. Это позволяет компаниям распространять двоичные драйверы, но часто имеет недостаток в том, что они будут работать только с определёнными версиями ядра Linux. Из-за своей сложности во многих частях мира сегодня юридические аспекты GPL игнорируются в отношении Linux и связанного с ним программного обеспечения. Долгосрочные последствия этого неясны. [[origins-lgpl]] == Истоки Linux и LGPL -Пока бушевали коммерческие войны Unix, ядро Linux разрабатывалось как клон Unix для ПК. Линус Торвальдс признает, что существование компилятора GNU C и связанных с ним инструментов GNU стало основой для появления Linux. Он выпустил ядро Linux под лицензией GPL. +Пока бушевали коммерческие войны Unix, ядро Linux разрабатывалось как клон Unix для ПК. Линус Торвальдс признаёт, что существование компилятора GNU C и связанных с ним инструментов GNU стало основой для появления Linux. Он выпустил ядро Linux под лицензией GPL. Помните, что лицензия GPL требует, чтобы любой код, статически связанный с кодом под GPL, также распространялся под GPL. Исходный код такой программы должен быть предоставлен пользователю. Однако динамическая линковка не считается нарушением GPL. Давление с целью размещения проприетарных приложений в Linux стало слишком сильным. Такие приложения часто должны быть связаны с системными библиотеками. Это привело к созданию модифицированной версии GPL под названием http://www.opensource.org/licenses/lgpl-license.php[LGPL] ("Library", позже переименована в "Lesser" GPL). LGPL разрешает проприетарному коду быть связанным с библиотекой GNU C, glibc. Вам не нужно раскрывать исходный код, который был динамически связан с библиотекой под LGPL. Если вы статически связываете приложение с glibc, как это часто требуется во встроенных системах, вы не можете сохранить ваше приложение проприетарным, то есть исходный код должен быть опубликован. И GPL, и LGPL требуют, чтобы любые изменения кода, подпадающего под лицензию, были выпущены. [[orphaning]] == Открытые лицензии и проблема заброшенности проектов Одной из серьёзных проблем, связанных с проприетарным программным обеспечением, является так называемое "осиротение". Это происходит, когда единичный сбой в бизнесе или изменение стратегии продукта приводит к краху огромной пирамиды зависимых систем и компаний по причинам, не зависящим от них. Десятилетия опыта показали, что текущий размер или успех поставщика программного обеспечения не гарантирует, что их ПО останется доступным, поскольку рыночные условия и стратегии могут быстро меняться. Лицензия GPL пытается предотвратить потерю поддержки, разрывая связь с проприетарной интеллектуальной собственностью. Лицензия BSD предоставляет небольшой компании эквивалент программного обеспечения на условном депонировании без каких-либо юридических сложностей или затрат. Если программа под лицензией BSD становится заброшенной, компания может просто взять её под свой контроль в проприетарном режиме, если она от неё зависит. Ещё лучше, когда кодовая база BSD поддерживается небольшим неформальным консорциумом, поскольку процесс разработки не зависит от выживания отдельной компании или линейки продуктов. Выживаемость команды разработчиков, когда они находятся в режиме продуктивной работы, гораздо важнее простой физической доступности исходного кода. [[license-cannot]] == Что лицензия не может сделать Ни одна лицензия не может гарантировать доступность программного обеспечения в будущем. Хотя владелец авторских прав традиционно может изменять условия авторского права в любое время, в сообществе BSD принято считать, что такая попытка просто приведёт к ответвлению исходного кода. Лицензия GPL явно запрещает отзыв лицензии. Однако случалось, что компания (Mattel) приобрела авторские права на продукт под GPL (cphack), отозвала все авторские права, обратилась в суд и выиграла дело <>. То есть они легально отозвали всё распространение и все производные работы, основанные на этих авторских правах. Остаётся открытым вопрос, может ли подобное произойти с более крупным и распределённым проектом; также есть некоторая путаница относительно того, действительно ли данное ПО распространялось под лицензией GPL. В другом примере, Red Hat приобрела Cygnus, инженерную компанию, которая взяла на себя разработку инструментов компилятора FSF. Cygnus смогла это сделать, потому что разработала бизнес-модель, в которой они продавали поддержку для программного обеспечения GNU. Это позволило им нанять около 50 инженеров и направлять развитие программ, внося основную часть изменений в код программы. Как отмечает Дональд Розенберг: «проекты, использующие лицензии вроде GPL... живут под постоянной угрозой, что кто-то перехватит проект, создав лучшую версию кода и сделав это быстрее, чем оригинальные владельцы.» <> [[gpl-advantages]] == Преимущества и недостатки GPL Распространённая причина использовать GPL — это модификация или расширение компилятора gcc. Это особенно актуально при работе с уникальными специализированными процессорами в средах, где все затраты на программное обеспечение, скорее всего, считаются накладными расходами, с минимальными ожиданиями того, что другие будут использовать получившийся компилятор. Лицензия GPL также привлекательна для небольших компаний, продающих CD в условиях, где принцип «купи-дешево, продай-дорого» может по-прежнему обеспечить конечному пользователю очень недорогой продукт. Она также привлекательна для компаний, которые рассчитывают выжить за счет предоставления различных форм технической поддержки, включая документацию, для мира интеллектуальной собственности под GPL. Менее известное и непреднамеренное использование GPL заключается в том, что она очень выгодна крупным компаниям, которые хотят подорвать позиции компаний-разработчиков программного обеспечения. Другими словами, GPL хорошо подходит для использования в качестве маркетингового оружия, потенциально снижая общую экономическую выгоду и способствуя монополистическому поведению. Лицензия GPL может представлять реальную проблему для тех, кто хочет коммерциализировать программное обеспечение и получать от него прибыль. Например, GPL усложняет задачу выпускника, который хочет создать компанию для коммерциализации результатов своих исследований, или затрудняет ситуацию для студента, который планирует присоединиться к компании в расчете на коммерциализацию перспективного исследовательского проекта. Для тех, кто должен работать со статически связанными реализациями множества программных стандартов, GPL часто является неудобной лицензией, поскольку она исключает использование проприетарных реализаций этих стандартов. Таким образом, GPL минимизирует количество программ, которые могут быть созданы с использованием стандарта под лицензией GPL. Лицензия GPL задумывалась так, чтобы не предоставлять механизм для разработки стандарта, на основе которого создаются проприетарные продукты. (Это не относится к приложениям для Linux, поскольку они не используют статическую линковку, а вместо этого применяют API на основе трапов/ловушек.) -Лицензия GPL пытается заставить программистов вносить вклад в развивающийся набор программ, а затем конкурировать в распространении и поддержке этого набора. Такая ситуация нереалистична для многих необходимых стандартов ядра системы, которые могут применяться в самых разных средах, требующих коммерческой настройки или интеграции с унаследованными стандартами под существующими (не-GPL) лицензиями. Системы реального времени часто статически связываются, поэтому GPL и LGPL определенно рассматриваются многими компаниями, работающими с встраиваемыми системами, как потенциальные проблемы. +Лицензия GPL пытается заставить программистов вносить вклад в развивающийся набор программ, а затем конкурировать в распространении и поддержке этого набора. Такая ситуация нереалистична для многих необходимых стандартов ядра системы, которые могут применяться в самых разных средах, требующих коммерческой настройки или интеграции с унаследованными стандартами под существующими (не-GPL) лицензиями. Системы реального времени часто статически связываются, поэтому GPL и LGPL определённо рассматриваются многими компаниями, работающими с встраиваемыми системами, как потенциальные проблемы. GPL - это попытка удержать усилия, независимо от спроса, на этапах исследований и разработки. Это максимизирует выгоды для исследователей и разработчиков, при неизвестных затратах для тех, кто мог бы получить выгоду от более широкого распространения. GPL была разработана для предотвращения перехода результатов исследований в проприетарные продукты. Этот шаг часто считается последним этапом в традиционном процессе передачи технологий, и он обычно достаточно сложен даже в самых благоприятных условиях; GPL была призвана сделать это невозможным. [[bsd-advantages]] == Преимущества BSD Лицензия в стиле BSD — это хороший выбор для долгосрочных исследований или других проектов, которым требуется среда разработки, обладающая следующими характеристиками: * имеет почти нулевую стоимость * будет развиваться в течение длительного времени * позволяет любому сохранить возможность коммерциализации конечных результатов с минимальными юридическими проблемами. Это последнее соображение часто может быть решающим, как это было, когда проект Apache выбирал свою лицензию: "Этот тип лицензии идеально подходит для продвижения использования эталонного кода, реализующего протокол для общего сервиса. Это ещё одна причина, по которой мы выбрали его для группы Apache - многие из нас хотели, чтобы HTTP выжил и стал по-настоящему многосторонним стандартом, и мы нисколько не возражали бы, если бы Microsoft или Netscape решили включить наш HTTP-движок или любой другой компонент нашего кода в свои продукты, если бы это способствовало достижению цели сохранения HTTP общим... Всё это означает, что, стратегически говоря, проект должен сохранять достаточную динамику, а участники должны осознавать большую ценность внесения своего кода в проект, даже того кода, который мог бы иметь ценность, оставаясь проприетарным." Разработчики часто находят лицензию BSD привлекательной, так как она минимизирует юридические сложности и позволяет им делать с кодом всё, что угодно. В отличие от этого, те, кто в первую очередь планирует использовать систему, а не программировать её, или ожидает, что другие будут развивать код, или не рассчитывает зарабатывать на жизнь работой, связанной с системой (например, государственные служащие), находят GPL привлекательной, потому что она обязывает других разработчиков предоставлять им код и не позволяет их работодателю сохранять авторские права, что потенциально может привести к «забвению» или потере поддержки программного обеспечения. Если вы хотите заставить своих конкурентов помогать вам, GPL привлекательна. Лицензия BSD — это не просто подарок. Вопрос «почему мы должны помогать нашим конкурентам или позволять им красть нашу работу?» часто возникает в связи с лицензией BSD. Под лицензией BSD, если одна компания начинает доминировать в нише продукта, который другие считают стратегическим, остальные компании могут с минимальными усилиями создать мини-консорциум, направленный на восстановление паритета путем внесения вклада в конкурирующий вариант BSD, что увеличивает конкуренцию и справедливость на рынке. Это позволяет каждой компании верить, что она сможет извлечь прибыль из какого-либо преимущества, которое она может предоставить, одновременно способствуя экономической гибкости и эффективности. Чем быстрее и проще сотрудничающие участники смогут это сделать, тем успешнее они будут. Лицензия BSD по сути является минимально сложной лицензией, которая делает такое поведение возможным. Ключевой эффект GPL, делающий полную и конкурентоспособную систему с открытым исходным кодом широко доступной по стоимости носителя, является разумной целью. Лицензия в стиле BSD, в сочетании с ad-hoc-консорциумами индивидуумов, может достичь этой цели без разрушения экономических предположений, заложенных в развертывающем конце трубопровода передачи технологий. [[recommendations]] == Конкретные рекомендации по использованию лицензии BSD * Лицензия BSD предпочтительна для передачи результатов исследований таким образом, чтобы они широко внедрялись и приносили максимальную пользу экономике. Таким образом, агентства, финансирующие исследования, такие как NSF, ONR и DARPA, должны на самых ранних этапах финансируемых исследовательских проектов поощрять принятие лицензий в стиле BSD для программного обеспечения, данных, результатов и открытого аппаратного обеспечения. Они также должны поощрять создание стандартов на основе реализованных систем с открытым исходным кодом и текущих проектов с открытым исходным кодом. * Политика правительства должна минимизировать затраты и сложности перехода от исследований к внедрению. По возможности, гранты должны требовать, чтобы результаты были доступны под дружественной к коммерциализации лицензией в стиле BSD. * Во многих случаях долгосрочные результаты лицензии в стиле BSD более точно отражают цели, провозглашенные в исследовательском уставе университетов, чем когда результаты защищены авторским правом или запатентованы и подлежат проприетарному лицензированию университета. Существуют неподтвержденные данные, что в долгосрочной перспективе университеты получают больше финансовых выгод, публикуя результаты исследований и затем обращаясь за пожертвованиями к коммерчески успешным выпускникам. * Компании давно осознают, что создание де-факто стандартов является ключевым маркетинговым приемом. Лицензия BSD хорошо подходит для этой роли, если компания действительно обладает уникальным преимуществом в развитии системы. Лицензия юридически привлекательна для широкой аудитории, в то время как экспертиза компании гарантирует их контроль. Бывают случаи, когда GPL может быть подходящим инструментом для попытки создать такой стандарт, особенно при попытке подорвать или кооптировать другие. Однако GPL наказывает за эволюцию этого стандарта, потому что она продвигает набор инструментов, а не коммерчески применимый стандарт. Использование такого набора постоянно поднимает вопросы коммерциализации и юридические проблемы. Может оказаться невозможным совмещать стандарты, если некоторые из них под GPL, а другие — нет. Настоящий технический стандарт не должен требовать исключения других стандартов по нетехническим причинам. * Компании, заинтересованные в продвижении развивающегося стандарта, который может стать основой коммерческих продуктов других компаний, должны остерегаться GPL. Независимо от используемой лицензии, итоговое программное обеспечение обычно переходит к тем, кто фактически вносит большинство инженерных изменений и лучше всего понимает состояние системы. GPL просто добавляет больше юридических сложностей к результату. * Крупные компании, занимающиеся разработкой открытого исходного кода, должны понимать, что программисты ценят Open Source, потому что это позволяет сохранить доступ к программному обеспечению при смене работодателя. Некоторые компании поощряют такое поведение как дополнительное преимущество работы, особенно когда задействованное ПО не имеет прямого стратегического значения. По сути, это предварительно предоставленная пенсионная льгота с потенциальными упущенными возможностями, но без прямых затрат. Поощрение сотрудников к работе на признание коллег вне компании — это недорогое и переносимое преимущество, которое компания иногда может предоставить практически без негативных последствий. * Небольшие компании с программными проектами, уязвимыми к заброшенности, должны по возможности использовать лицензию BSD. Компании любого размера должны рассмотреть возможность создания подобных проектов с открытым исходным кодом, когда это взаимовыгодно для поддержания минимальных юридических и организационных накладных расходов, связанных с настоящим проектом в стиле BSD с открытым исходным кодом. * Некоммерческие организации должны по возможности участвовать в проектах с открытым исходным кодом. Чтобы минимизировать проблемы в разработке программного обеспечения, такие как смешивание кода под разными лицензиями, следует поощрять лицензии в стиле BSD. Осторожность в отношении GPL особенно важна для некоммерческих организаций, взаимодействующих с развивающимися странами. В некоторых регионах, где применение закона становится дорогостоящим процессом, простота новой лицензии BSD по сравнению с GPL может быть значительным преимуществом. [[conclusion]] == Заключение В отличие от лицензии GPL, которая предназначена для предотвращения коммерциализации открытого исходного кода в проприетарных целях, лицензия BSD накладывает минимальные ограничения на дальнейшие действия. Это позволяет коду BSD оставаться открытым или быть интегрированным в коммерческие решения, в зависимости от изменяющихся потребностей проекта или компании. Другими словами, лицензия BSD не превращается в юридическую "бомбу замедленного действия" на каком-либо этапе процесса разработки. Помимо этого, поскольку лицензия BSD не обладает юридической сложностью лицензий GPL или LGPL, она позволяет разработчикам и компаниям тратить время на создание и продвижение качественного кода, вместо того чтобы беспокоиться о возможном нарушении лицензирования. [[addenda]] [bibliography] == Библиографические ссылки * [[[one,1]]] http://www.gnu.org/licenses/gpl.html * [[[two,2]]] http://archives.cnn.com/2000/TECH/computing/03/28/cyberpatrol.mirrors/ * [[[three,3]]] Open Source: the Unauthorized White Papers, Donald K. Rosenberg, IDG Books, 2000. Quotes are from page 114, "Effects of the GNU GPL". * [[[four,4]]] В разделе "What License to Use?" книги http://www.oreilly.com/catalog/opensources/book/brian.html Этот технический документ представляет собой сжатое изложение оригинальной работы, доступной по адресу http://alumni.cse.ucsc.edu/~brucem/open_source_license.htm diff --git a/documentation/content/ru/articles/bsdl-gpl/_index.po b/documentation/content/ru/articles/bsdl-gpl/_index.po index 0626f2d061..441a4e994e 100644 --- a/documentation/content/ru/articles/bsdl-gpl/_index.po +++ b/documentation/content/ru/articles/bsdl-gpl/_index.po @@ -1,1163 +1,1163 @@ # SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Edson Brandi , 2025. -# Vladlen Popolitov , 2025. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2022-02-01 09:21-0300\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/bsdl-gpl/_index.adoc:1 #: documentation/content/en/articles/bsdl-gpl/_index.adoc:11 #, no-wrap msgid "Why you should use a BSD style license for your Open Source Project" msgstr "" "Почему вы должны использовать лицензию в стиле BSD для вашего Open Source " "проекта" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:43 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:47 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:52 msgid "" "This document makes a case for using a BSD style license for software and " "data; specifically it recommends using a BSD style license in place of the " "GPL. It can also be read as a BSD versus GPL Open Source License " "introduction and summary." msgstr "" "Этот документ обосновывает использование лицензии в стиле BSD для " "программного обеспечения и данных; в частности, он рекомендует применять " "лицензию в стиле BSD вместо GPL. Его также можно рассматривать как введение " "и краткое сравнение открытых лицензий BSD и GPL." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:54 #, no-wrap msgid "Very Brief Open Source History" msgstr "Очень краткая история открытого исходного кода" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:60 msgid "" "Long before the term \"Open Source\" was used, software was developed by " "loose associations of programmers and freely exchanged. Starting in the " "early 1950's, organizations such as http://www.share.org[SHARE] and http://" "www.decus.org[DECUS] developed much of the software that computer hardware " "companies bundled with their hardware offerings. At that time computer " "companies were in the hardware business; anything that reduced software cost " "and made more programs available made the hardware companies more " "competitive." msgstr "" "Долгое время до того, как термин \"Открытое программное обеспечение\" вошел " "в употребление, программное обеспечение разрабатывалось свободными " "объединениями программистов и свободно обменивалось. Начиная с ранних 1950-х " "годов, организации, такие как http://www.share.org[SHARE] и http://www.decus." "org[DECUS], разрабатывали большую часть программного обеспечения, которое " "компании-производители аппаратного обеспечения поставляли вместе со своими " "продуктами. В то время компьютерные компании занимались аппаратным " "обеспечением; все, что снижало стоимость программного обеспечения и делало " "больше программ доступными, повышало конкурентоспособность производителей " "аппаратного обеспечения." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:67 msgid "" "This model changed in the 1960's. In 1965 ADR developed the first licensed " "software product independent of a hardware company. ADR was competing " "against a free IBM package originally developed by IBM customers. ADR " "patented their software in 1968. To stop sharing of their program, they " "provided it under an equipment lease in which payment was spread over the " "lifetime of the product. ADR thus retained ownership and could control " "resale and reuse." msgstr "" "Эта модель изменилась в 1960-х годах. В 1965 году ADR разработала первый " "лицензированный программный продукт, независимый от компании-производителя " "оборудования. ADR конкурировала с бесплатным пакетом IBM, изначально " "разработанным клиентами IBM. ADR запатентовала своё программное обеспечение " "в 1968 году. Чтобы предотвратить распространение своей программы, они " "предоставляли её по договору аренды оборудования, где оплата распределялась " "на весь срок службы продукта. Таким образом, ADR сохраняла право " "собственности и могла контролировать перепродажу и повторное использование." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:70 msgid "" "In 1969 the US Department of Justice charged IBM with destroying businesses " "by bundling free software with IBM hardware. As a result of this suit, IBM " "unbundled its software; that is, software became independent products " "separate from hardware." msgstr "" "В 1969 году Министерство юстиции США обвинило IBM в уничтожении бизнесов " "путем объединения бесплатного программного обеспечения с аппаратным " "обеспечением IBM. В результате этого иска IBM прекратила практику " "объединения; то есть, программное обеспечение стало независимым продуктом, " "отдельным от аппаратного обеспечения." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:75 msgid "" "In 1968 Informatics introduced the first commercial killer-app and rapidly " "established the concept of the software product, the software company, and " "very high rates of return. Informatics developed the perpetual license " "which is now standard throughout the computer industry, wherein ownership is " "never transferred to the customer." msgstr "" "В 1968 году компания Informatics представила приложение — первый " "коммерческий хит продукт, и быстро утвердила концепцию программного " "продукта, программной компании и очень высоких норм прибыли. Informatics " "разработала бессрочную лицензию, которая теперь является стандартом во всей " "компьютерной отрасли, при которой право собственности никогда не передаётся " "клиенту." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:77 #, no-wrap msgid "Unix from a BSD Licensing Perspective" msgstr "Unix с точки зрения лицензирования BSD" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:83 msgid "" "AT&T, who owned the original Unix implementation, was a publicly regulated " "monopoly tied up in anti-trust court; it was legally unable to sell a " "product into the software market. It was, however, able to provide it to " "academic institutions for the price of media." msgstr "" "AT&T, владевшая оригинальной реализацией Unix, была регулируемой " "государством монополией, связанной антимонопольными судебными " "разбирательствами; юридически она не могла продавать продукт на рынке " "программного обеспечения. Однако она имела возможность предоставлять его " "учебным заведениям по цене носителя." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:89 msgid "" "Universities rapidly adopted Unix after an OS conference publicized its " "availability. It was extremely helpful that Unix ran on the PDP-11, a very " "affordable 16-bit computer, and was coded in a high-level language that was " "demonstrably good for systems programming. The DEC PDP-11 had, in effect, " "an open hardware interface designed to make it easy for customers to write " "their own OS, which was common. As DEC founder Ken Olsen famously " "proclaimed, \"software comes from heaven when you have good hardware\"." msgstr "" "Университеты быстро приняли Unix после того, как конференция по операционным " "системам объявила о его доступности. Крайне полезным было то, что Unix " "работал на PDP-11 — очень доступном 16-битном компьютере — и был написан на " "языке высокого уровня, который явно подходил для системного " "программирования. У DEC PDP-11, по сути, был открытый аппаратный интерфейс, " "разработанный для того, чтобы клиентам было легко писать свою собственную " "ОС, что было обычной практикой. Как знаменито заявил основатель DEC Кен " "Олсен: «программное обеспечение приходит с небес, когда у тебя хорошее " "железо»." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:95 msgid "" "Unix author Ken Thompson returned to his alma mater, University of " "California Berkeley (UCB), in 1975 and taught the kernel line-by-line. This " "ultimately resulted in an evolving system known as BSD (Berkeley Standard " "Distribution). UCB converted Unix to 32-bits, added virtual memory, and " "implemented the version of the TCP/IP stack upon which the Internet was " "essentially built. UCB made BSD available for the cost of media, under what " "became known as \"the BSD license\". A customer purchased Unix from AT&T " "and then ordered a BSD tape from UCB." msgstr "" "Автор Unix Кен Томпсон вернулся в свой альма-матер, Калифорнийский " "университет в Беркли (UCB), в 1975 году и преподавал, построчно рассказывая, " "как работает ядро. В итоге это привело к созданию развивающейся системы, " "известной как BSD (Berkeley Standard Distribution). UCB перевел Unix на 32-" "битную архитектуру, добавил виртуальную память и реализовал версию стека TCP/" "IP, на котором, по сути, был построен Интернет. UCB сделал BSD доступным за " "стоимость носителя по условиям лицензии, которая стала известна как " "\"лицензия BSD\". Клиент покупал Unix у AT&T, а затем заказывал ленту BSD у " "UCB." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:99 msgid "" "In the mid-1980s a government anti-trust case against AT&T ended with the " "break-up of AT&T. AT&T still owned Unix and was now able to sell it. AT&T " "embarked on an aggressive licensing effort and most commercial Unixes of the " "day became AT&T-derived." msgstr "" "В середине 1980-х годов антимонопольный иск правительства против AT&T " "завершился разделом компании. AT&T по-прежнему владела Unix и теперь могла " "продавать его. AT&T начала агрессивную кампанию по лицензированию, и " "большинство коммерческих Unix того времени стали производными от AT&T." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:105 msgid "" "In the early 1990's AT&T sued UCB over license violations related to BSD. " "UCB discovered that AT&T had incorporated, without acknowledgment or " "payment, many improvements due to BSD into AT&T's products, and a lengthy " "court case, primarily between AT&T and UCB, ensued. During this period some " "UCB programmers embarked on a project to rewrite any AT&T code associated " "with BSD. This project resulted in a system called BSD 4.4-lite (lite " "because it was not a complete system; it lacked 6 key AT&T files)." msgstr "" "В начале 1990-х годов AT&T подала в суд на UCB за нарушения лицензий, " "связанных с BSD. UCB обнаружила, что AT&T включила в свои продукты множество " "улучшений, сделанных в BSD, без указания авторства или оплаты, и последовало " "длительное судебное разбирательство, в основном между AT&T и UCB. В этот " "период некоторые программисты UCB начали проект по переписыванию любого кода " "AT&T, связанного с BSD. В результате этого проекта появилась система под " "названием BSD 4.4-lite (lite, потому что это была не полная система; в ней " "отсутствовали 6 ключевых файлов AT&T)." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:109 msgid "" "A lengthy series of articles published slightly later in Dr. Dobbs magazine " "described a BSD-derived 386 PC version of Unix, with BSD-licensed " "replacement files for the 6 missing 4.4 lite files. This system, named " "386BSD, was due to ex-UCB programmer William Jolitz. It became the original " "basis of all the PC BSDs in use today." msgstr "" "Длинная серия статей, опубликованных чуть позже в журнале Dr. Dobbs, " "описывала версию Unix для ПК на базе 386, производную от BSD, с файлами-" "заменителями под лицензией BSD для 6 отсутствующих файлов из 4.4 lite. Эта " "система, названная 386BSD, была создана бывшим программистом из UCB Уильямом " "Джолитцем. Она стала первоосновой всех современных PC BSD." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:112 msgid "" "In the mid 1990s, Novell purchased AT&T's Unix rights and a (then secret) " "agreement was reached to terminate the lawsuit. UCB soon terminated its " "support for BSD." msgstr "" "В середине 1990-х годов Novell приобрела права на Unix у AT&T, и было " "достигнуто (тогда секретное) соглашение о прекращении судебного " "разбирательства. Вскоре UCB прекратила поддержку BSD." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:114 #, no-wrap msgid "The Current State of FreeBSD and BSD Licenses" msgstr "Текущее состояние FreeBSD и лицензий BSD" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:120 msgid "" "The so-called http://www.opensource.org/licenses/bsd-license.php[new BSD " "license] applied to FreeBSD within the last few years is effectively a " "statement that you can do anything with the program or its source, but you " "do not have any warranty and none of the authors has any liability " "(basically, you cannot sue anybody). This new BSD license is intended to " "encourage product commercialization. Any BSD code can be sold or included " "in proprietary products without any restrictions on the availability of your " "code or your future behavior." msgstr "" "Так называемая http://www.opensource.org/licenses/bsd-license.php[новая " "лицензия BSD], применяемая к FreeBSD в последние годы, по сути, означает, " "что вы можете делать что угодно с программой или её исходным кодом, но не " "получаете никаких гарантий, и ни один из авторов не несёт ответственности (" "по сути, вы не можете ни на кого подать в суд). Эта новая лицензия BSD " "призвана стимулировать коммерциализацию продукта. Любой код BSD может быть " "продан или включён в проприетарные продукты без каких-либо ограничений на " "доступность вашего кода или ваше будущее поведение." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:123 msgid "" "Do not confuse the new BSD license with \"public domain\". While an item in " "the public domain is also free for all to use, it has no owner." msgstr "" "Не путайте новую лицензию BSD с \"общественным достоянием\" (лицензия Public " "Domain). Хотя объект в общественном достоянии также свободен для " "использования всеми, у него нет владельца." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:125 #, no-wrap msgid "The origins of the GPL" msgstr "Истоки GPL" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:129 msgid "" "While the future of Unix had been so muddled in the late 1980s and early " "1990s, the GPL, another development with important licensing considerations, " "reached fruition." msgstr "" "Пока будущее Unix оставалось неясным в конце 1980-х и начале 1990-х годов, " "GPL, ещё одна разработка с важными лицензионными аспектами, достигла " "зрелости." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:138 msgid "" "Richard Stallman, the developer of Emacs, was a member of the staff at MIT " "when his lab switched from home-grown to proprietary systems. Stallman " "became upset when he found that he could not legally add minor improvements " "to the system. (Many of Stallman's co-workers had left to form two " "companies based on software developed at MIT and licensed by MIT; there " "appears to have been disagreement over access to the source code for this " "software). Stallman devised an alternative to the commercial software " "license and called it the GPL, or \"GNU Public License\". He also started a " "non-profit foundation, the http://www.fsf.org[Free Software Foundation] " "(FSF), which intended to develop an entire operating system, including all " "associated software, that would not be subject to proprietary licensing. " "This system was called GNU, for \"GNU is Not Unix\"." msgstr "" "Ричард Столлман, разработчик Emacs, был сотрудником MIT, когда его " "лаборатория перешла с собственных разработок на проприетарные системы. " "Столлман был расстроен, обнаружив, что не может законно вносить даже " "незначительные улучшения в систему. (Многие его коллеги ушли, чтобы основать " "две компании, основанные на программном обеспечении, разработанном в MIT и " "лицензированном MIT; по-видимому, возникли разногласия по поводу доступа к " "исходному коду этого программного обеспечения). Столлман разработал " "альтернативу коммерческой лицензии на программное обеспечение и назвал её " "GPL, или «Универсальная общественная лицензия GNU» (GNU Public License). Он " "также основал некоммерческую организацию — http://www.fsf.org[Фонд " "свободного программного обеспечения] (FSF), целью которой была разработка " "целой операционной системы, включая все сопутствующие программы, которая не " "подчинялась бы проприетарным лицензиям. Эта система была названа GNU, что " "означает «GNU is Not Unix» (GNU — не Unix)." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:143 msgid "" "The GPL was designed to be the antithesis of the standard proprietary " "license. To this end, any modifications that were made to a GPL program " "were required to be given back to the GPL community (by requiring that the " "source of the program be available to the user) and any program that used or " "linked to GPL code was required to be under the GPL. The GPL was intended " "to keep software from becoming proprietary. As the last paragraph of the " "GPL states:" msgstr "" "GPL была создана как антитеза стандартной проприетарной лицензии. Для этого " "любые изменения, внесённые в программу под GPL, должны были возвращаться " "сообществу GPL (путем требования, чтобы исходный код программы был доступен " "пользователю), и любая программа, использующая или связывающаяся с кодом под " "GPL, должна была распространяться под GPL. Лицензия GPL предназначена для " "предотвращения перехода программного обеспечения в проприетарное состояние. " "Как сказано в последнем абзаце GPL:" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:145 msgid "" "\"This General Public License does not permit incorporating your program " "into proprietary programs.\"<>" msgstr "" "\"This General Public License does not permit incorporating your program " "into proprietary programs (Стандартная Общественная Лицензия GNU не " "разрешает включать вашу программу в программы, использование которых " "ограничено их правообладателями).\"<>" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:147 msgid "" "The http://www.opensource.org/licenses/gpl-license.php[GPL] is a complex " "license so here are some rules of thumb when using the GPL:" msgstr "" "http://www.opensource.org/licenses/gpl-license.php[GPL] — это сложная " "лицензия, поэтому вот несколько эмпирических правил при использовании GPL:" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:149 msgid "" "you can charge as much as you want for distributing, supporting, or " "documenting the software, but you cannot sell the software itself." msgstr "" "вы можете брать сколько угодно за распространение, поддержку или " "документацию к программному обеспечению, но вы не можете продавать само " "программное обеспечение." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:150 msgid "" "the rule-of-thumb states that if GPL source is required for a program to " "compile, the program must be under the GPL. Linking statically to a GPL " "library requires a program to be under the GPL." msgstr "" "эмпирическое правило гласит, что если для компиляции программы требуется " "исходный код под GPL, то программа должна распространяться под лицензией " "GPL. Статическая линковка с библиотекой под GPL требует, чтобы программа " "также была под GPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:151 msgid "" "the GPL requires that any patents associated with GPLed software must be " "licensed for everyone's free use." msgstr "" "В соответствии с GPL, любые патенты, связанные с ПО под лицензией GPL, " "должны быть лицензированы для свободного использования всеми." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:152 msgid "" "simply aggregating software together, as when multiple programs are put on " "one disk, does not count as including GPLed programs in non-GPLed programs." msgstr "" "простое объединение программного обеспечения, например, размещение " "нескольких программ на одном диске, не считается включением программ под " "лицензией GPL в программы, не подпадающие под GPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:153 msgid "" "output of a program does not count as a derivative work. This enables the " "gcc compiler to be used in commercial environments without legal problems." msgstr "" "вывод программы не считается производным произведением. Это позволяет " "использовать компилятор gcc в коммерческих средах без юридических проблем." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:154 msgid "" "since the Linux kernel is under the GPL, any code statically linked with the " "Linux kernel must be GPLed. This requirement can be circumvented by " "dynamically linking loadable kernel modules. This permits companies to " "distribute binary drivers, but often has the disadvantage that they will " "only work for particular versions of the Linux kernel." msgstr "" "поскольку ядро Linux распространяется под лицензией GPL, любой код, " "статически связанный с ядром Linux, должен быть лицензирован под GPL. Это " "требование можно обойти, используя динамическую загрузку модулей ядра. Это " "позволяет компаниям распространять двоичные драйверы, но часто имеет " "недостаток в том, что они будут работать только с определёнными версиями " "ядра Linux." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:157 msgid "" "Due in part to its complexity, in many parts of the world today the " "legalities of the GPL are being ignored in regard to Linux and related " "software. The long-term ramifications of this are unclear." msgstr "" "Из-за своей сложности во многих частях мира сегодня юридические аспекты GPL " "игнорируются в отношении Linux и связанного с ним программного обеспечения. " "Долгосрочные последствия этого неясны." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:159 #, no-wrap msgid "The origins of Linux and the LGPL" msgstr "Истоки Linux и LGPL" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:164 msgid "" "While the commercial Unix wars raged, the Linux kernel was developed as a PC " "Unix clone. Linus Torvalds credits the existence of the GNU C compiler and " "the associated GNU tools for the existence of Linux. He put the Linux " "kernel under the GPL." msgstr "" "Пока бушевали коммерческие войны Unix, ядро Linux разрабатывалось как клон " -"Unix для ПК. Линус Торвальдс признает, что существование компилятора GNU C и " +"Unix для ПК. Линус Торвальдс признаёт, что существование компилятора GNU C и " "связанных с ним инструментов GNU стало основой для появления Linux. Он " "выпустил ядро Linux под лицензией GPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:173 msgid "" "Remember that the GPL requires anything that statically links to any code " "under the GPL also be placed under the GPL. The source for this code must " "thus be made available to the user of the program. Dynamic linking, " "however, is not considered a violation of the GPL. Pressure to put " "proprietary applications on Linux became overwhelming. Such applications " "often must link with system libraries. This resulted in a modified version " "of the GPL called the http://www.opensource.org/licenses/lgpl-license." "php[LGPL] (\"Library\", since renamed to \"Lesser\", GPL). The LGPL allows " "proprietary code to be linked to the GNU C library, glibc. You do not have " "to release the source code which has been dynamically linked to an LGPLed " "library." msgstr "" "Помните, что лицензия GPL требует, чтобы любой код, статически связанный с " "кодом под GPL, также распространялся под GPL. Исходный код такой программы " "должен быть предоставлен пользователю. Однако динамическая линковка не " "считается нарушением GPL. Давление с целью размещения проприетарных " "приложений в Linux стало слишком сильным. Такие приложения часто должны быть " "связаны с системными библиотеками. Это привело к созданию модифицированной " "версии GPL под названием http://www.opensource.org/licenses/lgpl-license." "php[LGPL] (\"Library\", позже переименована в \"Lesser\" GPL). LGPL " "разрешает проприетарному коду быть связанным с библиотекой GNU C, glibc. Вам " "не нужно раскрывать исходный код, который был динамически связан с " "библиотекой под LGPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:177 msgid "" "If you statically link an application with glibc, such as is often required " "in embedded systems, you cannot keep your application proprietary, that is, " "the source must be released. Both the GPL and LGPL require any " "modifications to the code directly under the license to be released." msgstr "" "Если вы статически связываете приложение с glibc, как это часто требуется во " "встроенных системах, вы не можете сохранить ваше приложение проприетарным, " "то есть исходный код должен быть опубликован. И GPL, и LGPL требуют, чтобы " "любые изменения кода, подпадающего под лицензию, были выпущены." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:179 #, no-wrap msgid "Open Source licenses and the Orphaning Problem" msgstr "Открытые лицензии и проблема заброшенности проектов" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:184 msgid "" "One of the serious problems associated with proprietary software is known as " "\"orphaning\". This occurs when a single business failure or change in a " "product strategy causes a huge pyramid of dependent systems and companies to " "fail for reasons beyond their control. Decades of experience have shown " "that the momentary size or success of a software supplier is no guarantee " "that their software will remain available, as current market conditions and " "strategies can change rapidly." msgstr "" "Одной из серьёзных проблем, связанных с проприетарным программным " "обеспечением, является так называемое \"осиротение\". Это происходит, когда " "единичный сбой в бизнесе или изменение стратегии продукта приводит к краху " "огромной пирамиды зависимых систем и компаний по причинам, не зависящим от " "них. Десятилетия опыта показали, что текущий размер или успех поставщика " "программного обеспечения не гарантирует, что их ПО останется доступным, " "поскольку рыночные условия и стратегии могут быстро меняться." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:186 msgid "" "The GPL attempts to prevent orphaning by severing the link to proprietary " "intellectual property." msgstr "" "Лицензия GPL пытается предотвратить потерю поддержки, разрывая связь с " "проприетарной интеллектуальной собственностью." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:191 msgid "" "A BSD license gives a small company the equivalent of software-in-escrow " "without any legal complications or costs. If a BSD-licensed program becomes " "orphaned, a company can simply take over, in a proprietary manner, the " "program on which they are dependent. An even better situation occurs when a " "BSD code-base is maintained by a small informal consortium, since the " "development process is not dependent on the survival of a single company or " "product line. The survivability of the development team when they are " "mentally in the zone is much more important than simple physical " "availability of the source code." msgstr "" "Лицензия BSD предоставляет небольшой компании эквивалент программного " "обеспечения на условном депонировании без каких-либо юридических сложностей " "или затрат. Если программа под лицензией BSD становится заброшенной, " "компания может просто взять её под свой контроль в проприетарном режиме, " "если она от неё зависит. Ещё лучше, когда кодовая база BSD поддерживается " "небольшим неформальным консорциумом, поскольку процесс разработки не зависит " "от выживания отдельной компании или линейки продуктов. Выживаемость команды " "разработчиков, когда они находятся в режиме продуктивной работы, гораздо " "важнее простой физической доступности исходного кода." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:193 #, no-wrap msgid "What a license cannot do" msgstr "Что лицензия не может сделать" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:197 msgid "" "No license can guarantee future software availability. Although a copyright " "holder can traditionally change the terms of a copyright at anytime, the " "presumption in the BSD community is that such an attempt simply causes the " "source to fork." msgstr "" "Ни одна лицензия не может гарантировать доступность программного обеспечения " "в будущем. Хотя владелец авторских прав традиционно может изменять условия " "авторского права в любое время, в сообществе BSD принято считать, что такая " "попытка просто приведёт к ответвлению исходного кода." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:203 msgid "" "The GPL explicitly disallows revoking the license. It has occurred, " "however, that a company (Mattel) purchased a GPL copyright (cphack), revoked " "the entire copyright, went to court, and prevailed <>. That is, they " "legally revoked the entire distribution and all derivative works based on " "the copyright. Whether this could happen with a larger and more dispersed " "distribution is an open question; there is also some confusion regarding " "whether the software was really under the GPL." msgstr "" "Лицензия GPL явно запрещает отзыв лицензии. Однако случалось, что компания " "(Mattel) приобрела авторские права на продукт под GPL (cphack), отозвала все " "авторские права, обратилась в суд и выиграла дело <>. То есть они " "легально отозвали всё распространение и все производные работы, основанные " "на этих авторских правах. Остаётся открытым вопрос, может ли подобное " "произойти с более крупным и распределённым проектом; также есть некоторая " "путаница относительно того, действительно ли данное ПО распространялось под " "лицензией GPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:208 msgid "" "In another example, Red Hat purchased Cygnus, an engineering company that " "had taken over development of the FSF compiler tools. Cygnus was able to do " "so because they had developed a business model in which they sold support " "for GNU software. This enabled them to employ some 50 engineers and drive " "the direction of the programs by contributing the preponderance of " "modifications. As Donald Rosenberg states \"projects using licenses like " "the GPL...live under constant threat of having someone take over the project " "by producing a better version of the code and doing it faster than the " "original owners.\" <>" msgstr "" "В другом примере, Red Hat приобрела Cygnus, инженерную компанию, которая " "взяла на себя разработку инструментов компилятора FSF. Cygnus смогла это " "сделать, потому что разработала бизнес-модель, в которой они продавали " "поддержку для программного обеспечения GNU. Это позволило им нанять около 50 " "инженеров и направлять развитие программ, внося основную часть изменений в " "код программы. Как отмечает Дональд Розенберг: «проекты, использующие " "лицензии вроде GPL... живут под постоянной угрозой, что кто-то перехватит " "проект, создав лучшую версию кода и сделав это быстрее, чем оригинальные " "владельцы.» <>" #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:210 #, no-wrap msgid "GPL Advantages and Disadvantages" msgstr "Преимущества и недостатки GPL" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:214 msgid "" "A common reason to use the GPL is when modifying or extending the gcc " "compiler. This is particularly apt when working with one-off specialty CPUs " "in environments where all software costs are likely to be considered " "overhead, with minimal expectations that others will use the resulting " "compiler." msgstr "" "Распространённая причина использовать GPL — это модификация или расширение " "компилятора gcc. Это особенно актуально при работе с уникальными " "специализированными процессорами в средах, где все затраты на программное " "обеспечение, скорее всего, считаются накладными расходами, с минимальными " "ожиданиями того, что другие будут использовать получившийся компилятор." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:217 msgid "" "The GPL is also attractive to small companies selling CDs in an environment " "where \"buy-low, sell-high\" may still give the end-user a very inexpensive " "product. It is also attractive to companies that expect to survive by " "providing various forms of technical support, including documentation, for " "the GPLed intellectual property world." msgstr "" "Лицензия GPL также привлекательна для небольших компаний, продающих CD в " "условиях, где принцип «купи-дешево, продай-дорого» может по-прежнему " "обеспечить конечному пользователю очень недорогой продукт. Она также " "привлекательна для компаний, которые рассчитывают выжить за счет " "предоставления различных форм технической поддержки, включая документацию, " "для мира интеллектуальной собственности под GPL." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:220 msgid "" "A less publicized and unintended use of the GPL is that it is very favorable " "to large companies that want to undercut software companies. In other " "words, the GPL is well suited for use as a marketing weapon, potentially " "reducing overall economic benefit and contributing to monopolistic behavior." msgstr "" "Менее известное и непреднамеренное использование GPL заключается в том, что " "она очень выгодна крупным компаниям, которые хотят подорвать позиции " "компаний-разработчиков программного обеспечения. Другими словами, GPL хорошо " "подходит для использования в качестве маркетингового оружия, потенциально " "снижая общую экономическую выгоду и способствуя монополистическому поведению." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:223 msgid "" "The GPL can present a real problem for those wishing to commercialize and " "profit from software. For example, the GPL adds to the difficulty a " "graduate student will have in directly forming a company to commercialize " "his research results, or the difficulty a student will have in joining a " "company on the assumption that a promising research project will be " "commercialized." msgstr "" "Лицензия GPL может представлять реальную проблему для тех, кто хочет " "коммерциализировать программное обеспечение и получать от него прибыль. " "Например, GPL усложняет задачу выпускника, который хочет создать компанию " "для коммерциализации результатов своих исследований, или затрудняет ситуацию " "для студента, который планирует присоединиться к компании в расчете на " "коммерциализацию перспективного исследовательского проекта." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:228 msgid "" "For those who must work with statically-linked implementations of multiple " "software standards, the GPL is often a poor license, because it precludes " "using proprietary implementations of the standards. The GPL thus minimizes " "the number of programs that can be built using a GPLed standard. The GPL " "was intended to not provide a mechanism to develop a standard on which one " "engineers proprietary products. (This does not apply to Linux applications " "because they do not statically link, rather they use a trap-based API.)" msgstr "" "Для тех, кто должен работать со статически связанными реализациями множества " "программных стандартов, GPL часто является неудобной лицензией, поскольку " "она исключает использование проприетарных реализаций этих стандартов. Таким " "образом, GPL минимизирует количество программ, которые могут быть созданы с " "использованием стандарта под лицензией GPL. Лицензия GPL задумывалась так, " "чтобы не предоставлять механизм для разработки стандарта, на основе которого " "создаются проприетарные продукты. (Это не относится к приложениям для Linux, " "поскольку они не используют статическую линковку, а вместо этого применяют " "API на основе трапов/ловушек.)" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:232 msgid "" "The GPL attempts to make programmers contribute to an evolving suite of " "programs, then to compete in the distribution and support of this suite. " "This situation is unrealistic for many required core system standards, which " "may be applied in widely varying environments which require commercial " "customization or integration with legacy standards under existing (non-GPL) " "licenses. Real-time systems are often statically linked, so the GPL and " "LGPL are definitely considered potential problems by many embedded systems " "companies." msgstr "" "Лицензия GPL пытается заставить программистов вносить вклад в развивающийся " "набор программ, а затем конкурировать в распространении и поддержке этого " "набора. Такая ситуация нереалистична для многих необходимых стандартов ядра " "системы, которые могут применяться в самых разных средах, требующих " "коммерческой настройки или интеграции с унаследованными стандартами под " "существующими (не-GPL) лицензиями. Системы реального времени часто " -"статически связываются, поэтому GPL и LGPL определенно рассматриваются " +"статически связываются, поэтому GPL и LGPL определённо рассматриваются " "многими компаниями, работающими с встраиваемыми системами, как потенциальные " "проблемы." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:235 msgid "" "The GPL is an attempt to keep efforts, regardless of demand, at the research " "and development stages. This maximizes the benefits to researchers and " "developers, at an unknown cost to those who would benefit from wider " "distribution." msgstr "" "GPL - это попытка удержать усилия, независимо от спроса, на этапах " "исследований и разработки. Это максимизирует выгоды для исследователей и " "разработчиков, при неизвестных затратах для тех, кто мог бы получить выгоду " "от более широкого распространения." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:239 msgid "" "The GPL was designed to keep research results from transitioning to " "proprietary products. This step is often assumed to be the last step in the " "traditional technology transfer pipeline and it is usually difficult enough " "under the best of circumstances; the GPL was intended to make it impossible." msgstr "" "GPL была разработана для предотвращения перехода результатов исследований в " "проприетарные продукты. Этот шаг часто считается последним этапом в " "традиционном процессе передачи технологий, и он обычно достаточно сложен " "даже в самых благоприятных условиях; GPL была призвана сделать это " "невозможным." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:241 #, no-wrap msgid "BSD Advantages" msgstr "Преимущества BSD" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:244 msgid "" "A BSD style license is a good choice for long duration research or other " "projects that need a development environment that:" msgstr "" "Лицензия в стиле BSD — это хороший выбор для долгосрочных исследований или " "других проектов, которым требуется среда разработки, обладающая следующими " "характеристиками:" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:246 msgid "has near zero cost" msgstr "имеет почти нулевую стоимость" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:247 msgid "will evolve over a long period of time" msgstr "будет развиваться в течение длительного времени" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:248 msgid "" "permits anyone to retain the option of commercializing final results with " "minimal legal issues." msgstr "" "позволяет любому сохранить возможность коммерциализации конечных результатов " "с минимальными юридическими проблемами." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:250 msgid "" "This final consideration may often be the dominant one, as it was when the " "Apache project decided upon its license:" msgstr "" "Это последнее соображение часто может быть решающим, как это было, когда " "проект Apache выбирал свою лицензию:" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:254 msgid "" "\"This type of license is ideal for promoting the use of a reference body of " "code that implements a protocol for common service. This is another reason " "why we choose it for the Apache group - many of us wanted to see HTTP " "survive and become a true multiparty standard, and would not have minded in " "the slightest if Microsoft or Netscape choose to incorporate our HTTP engine " "or any other component of our code into their products, if it helped further " "the goal of keeping HTTP common... All this means that, strategically " "speaking, the project needs to maintain sufficient momentum, and that " "participants realize greater value by contributing their code to the " "project, even code that would have had value if kept proprietary.\"" msgstr "" "\"Этот тип лицензии идеально подходит для продвижения использования " "эталонного кода, реализующего протокол для общего сервиса. Это ещё одна " "причина, по которой мы выбрали его для группы Apache - многие из нас хотели, " "чтобы HTTP выжил и стал по-настоящему многосторонним стандартом, и мы " "нисколько не возражали бы, если бы Microsoft или Netscape решили включить " "наш HTTP-движок или любой другой компонент нашего кода в свои продукты, если " "бы это способствовало достижению цели сохранения HTTP общим... Всё это " "означает, что, стратегически говоря, проект должен сохранять достаточную " "динамику, а участники должны осознавать большую ценность внесения своего " "кода в проект, даже того кода, который мог бы иметь ценность, оставаясь " "проприетарным.\"" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:258 msgid "" "Developers tend to find the BSD license attractive as it keeps legal issues " "out of the way and lets them do whatever they want with the code. In " "contrast, those who expect primarily to use a system rather than program it, " "or expect others to evolve the code, or who do not expect to make a living " "from their work associated with the system (such as government employees), " "find the GPL attractive, because it forces code developed by others to be " "given to them and keeps their employer from retaining copyright and thus " "potentially \"burying\" or orphaning the software. If you want to force " "your competitors to help you, the GPL is attractive." msgstr "" "Разработчики часто находят лицензию BSD привлекательной, так как она " "минимизирует юридические сложности и позволяет им делать с кодом всё, что " "угодно. В отличие от этого, те, кто в первую очередь планирует использовать " "систему, а не программировать её, или ожидает, что другие будут развивать " "код, или не рассчитывает зарабатывать на жизнь работой, связанной с системой " "(например, государственные служащие), находят GPL привлекательной, потому " "что она обязывает других разработчиков предоставлять им код и не позволяет " "их работодателю сохранять авторские права, что потенциально может привести к " "«забвению» или потере поддержки программного обеспечения. Если вы хотите " "заставить своих конкурентов помогать вам, GPL привлекательна." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:265 msgid "" "A BSD license is not simply a gift. The question \"why should we help our " "competitors or let them steal our work?\" comes up often in relation to a " "BSD license. Under a BSD license, if one company came to dominate a product " "niche that others considered strategic, the other companies can, with " "minimal effort, form a mini-consortium aimed at reestablishing parity by " "contributing to a competitive BSD variant that increases market competition " "and fairness. This permits each company to believe that it will be able to " "profit from some advantage it can provide, while also contributing to " "economic flexibility and efficiency. The more rapidly and easily the " "cooperating members can do this, the more successful they will be. A BSD " "license is essentially a minimally complicated license that enables such " "behavior." msgstr "" "Лицензия BSD — это не просто подарок. Вопрос «почему мы должны помогать " "нашим конкурентам или позволять им красть нашу работу?» часто возникает в " "связи с лицензией BSD. Под лицензией BSD, если одна компания начинает " "доминировать в нише продукта, который другие считают стратегическим, " "остальные компании могут с минимальными усилиями создать мини-консорциум, " "направленный на восстановление паритета путем внесения вклада в " "конкурирующий вариант BSD, что увеличивает конкуренцию и справедливость на " "рынке. Это позволяет каждой компании верить, что она сможет извлечь прибыль " "из какого-либо преимущества, которое она может предоставить, одновременно " "способствуя экономической гибкости и эффективности. Чем быстрее и проще " "сотрудничающие участники смогут это сделать, тем успешнее они будут. " "Лицензия BSD по сути является минимально сложной лицензией, которая делает " "такое поведение возможным." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:268 msgid "" "A key effect of the GPL, making a complete and competitive Open Source " "system widely available at cost of media, is a reasonable goal. A BSD style " "license, in conjunction with ad-hoc-consortiums of individuals, can achieve " "this goal without destroying the economic assumptions built around the " "deployment-end of the technology transfer pipeline." msgstr "" "Ключевой эффект GPL, делающий полную и конкурентоспособную систему с " "открытым исходным кодом широко доступной по стоимости носителя, является " "разумной целью. Лицензия в стиле BSD, в сочетании с ad-hoc-консорциумами " "индивидуумов, может достичь этой цели без разрушения экономических " "предположений, заложенных в развертывающем конце трубопровода передачи " "технологий." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:270 #, no-wrap msgid "Specific Recommendations for using a BSD license" msgstr "Конкретные рекомендации по использованию лицензии BSD" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:275 msgid "" "The BSD license is preferable for transferring research results in a way " "that will widely be deployed and most benefit an economy. As such, research " "funding agencies, such as the NSF, ONR and DARPA, should encourage in the " "earliest phases of funded research projects, the adoption of BSD style " "licenses for software, data, results, and open hardware. They should also " "encourage formation of standards based around implemented Open Source " "systems and ongoing Open Source projects." msgstr "" "Лицензия BSD предпочтительна для передачи результатов исследований таким " "образом, чтобы они широко внедрялись и приносили максимальную пользу " "экономике. Таким образом, агентства, финансирующие исследования, такие как " "NSF, ONR и DARPA, должны на самых ранних этапах финансируемых " "исследовательских проектов поощрять принятие лицензий в стиле BSD для " "программного обеспечения, данных, результатов и открытого аппаратного " "обеспечения. Они также должны поощрять создание стандартов на основе " "реализованных систем с открытым исходным кодом и текущих проектов с открытым " "исходным кодом." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:277 msgid "" "Government policy should minimize the costs and difficulties in moving from " "research to deployment. When possible, grants should require results to be " "available under a commercialization friendly BSD style license." msgstr "" "Политика правительства должна минимизировать затраты и сложности перехода от " "исследований к внедрению. По возможности, гранты должны требовать, чтобы " "результаты были доступны под дружественной к коммерциализации лицензией в " "стиле BSD." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:278 msgid "" "In many cases, the long-term results of a BSD style license more accurately " "reflect the goals proclaimed in the research charter of universities than " "what occurs when results are copyrighted or patented and subject to " "proprietary university licensing. Anecdotal evidence exists that " "universities are financially better rewarded in the long run by releasing " "research results and then appealing to donations from commercially " "successful alumni." msgstr "" "Во многих случаях долгосрочные результаты лицензии в стиле BSD более точно " "отражают цели, провозглашенные в исследовательском уставе университетов, чем " "когда результаты защищены авторским правом или запатентованы и подлежат " "проприетарному лицензированию университета. Существуют неподтвержденные " "данные, что в долгосрочной перспективе университеты получают больше " "финансовых выгод, публикуя результаты исследований и затем обращаясь за " "пожертвованиями к коммерчески успешным выпускникам." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:279 msgid "" "Companies have long recognized that the creation of de facto standards is a " "key marketing technique. The BSD license serves this role well, if a company " "really has a unique advantage in evolving the system. The license is legally " "attractive to the widest audience while the company's expertise ensures " "their control. There are times when the GPL may be the appropriate vehicle " "for an attempt to create such a standard, especially when attempting to " "undermine or co-opt others. The GPL, however, penalizes the evolution of " "that standard, because it promotes a suite rather than a commercially " "applicable standard. Use of such a suite constantly raises commercialization " "and legal issues. It may not be possible to mix standards when some are " "under the GPL and others are not. A true technical standard should not " "mandate exclusion of other standards for non-technical reasons." msgstr "" "Компании давно осознают, что создание де-факто стандартов является ключевым " "маркетинговым приемом. Лицензия BSD хорошо подходит для этой роли, если " "компания действительно обладает уникальным преимуществом в развитии системы. " "Лицензия юридически привлекательна для широкой аудитории, в то время как " "экспертиза компании гарантирует их контроль. Бывают случаи, когда GPL может " "быть подходящим инструментом для попытки создать такой стандарт, особенно " "при попытке подорвать или кооптировать другие. Однако GPL наказывает за " "эволюцию этого стандарта, потому что она продвигает набор инструментов, а не " "коммерчески применимый стандарт. Использование такого набора постоянно " "поднимает вопросы коммерциализации и юридические проблемы. Может оказаться " "невозможным совмещать стандарты, если некоторые из них под GPL, а другие — " "нет. Настоящий технический стандарт не должен требовать исключения других " "стандартов по нетехническим причинам." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:280 msgid "" "Companies interested in promoting an evolving standard, which can become the " "core of other companies' commercial products, should be wary of the GPL. " "Regardless of the license used, the resulting software will usually devolve " "to whoever actually makes the majority of the engineering changes and most " "understands the state of the system. The GPL simply adds more legal friction " "to the result." msgstr "" "Компании, заинтересованные в продвижении развивающегося стандарта, который " "может стать основой коммерческих продуктов других компаний, должны " "остерегаться GPL. Независимо от используемой лицензии, итоговое программное " "обеспечение обычно переходит к тем, кто фактически вносит большинство " "инженерных изменений и лучше всего понимает состояние системы. GPL просто " "добавляет больше юридических сложностей к результату." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:281 msgid "" "Large companies, in which Open Source code is developed, should be aware " "that programmers appreciate Open Source because it leaves the software " "available to the employee when they change employers. Some companies " "encourage this behavior as an employment perk, especially when the software " "involved is not directly strategic. It is, in effect, a front-loaded " "retirement benefit with potential lost opportunity costs but no direct " "costs. Encouraging employees to work for peer acclaim outside the company is " "a cheap portable benefit a company can sometimes provide with near zero " "downside." msgstr "" "Крупные компании, занимающиеся разработкой открытого исходного кода, должны " "понимать, что программисты ценят Open Source, потому что это позволяет " "сохранить доступ к программному обеспечению при смене работодателя. " "Некоторые компании поощряют такое поведение как дополнительное преимущество " "работы, особенно когда задействованное ПО не имеет прямого стратегического " "значения. По сути, это предварительно предоставленная пенсионная льгота с " "потенциальными упущенными возможностями, но без прямых затрат. Поощрение " "сотрудников к работе на признание коллег вне компании — это недорогое и " "переносимое преимущество, которое компания иногда может предоставить " "практически без негативных последствий." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:282 msgid "" "Small companies with software projects vulnerable to orphaning should " "attempt to use the BSD license when possible. Companies of all sizes should " "consider forming such Open Source projects when it is to their mutual " "advantage to maintain the minimal legal and organization overheads " "associated with a true BSD-style Open Source project." msgstr "" "Небольшие компании с программными проектами, уязвимыми к заброшенности, " "должны по возможности использовать лицензию BSD. Компании любого размера " "должны рассмотреть возможность создания подобных проектов с открытым " "исходным кодом, когда это взаимовыгодно для поддержания минимальных " "юридических и организационных накладных расходов, связанных с настоящим " "проектом в стиле BSD с открытым исходным кодом." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:283 msgid "" "Non-profits should participate in Open Source projects when possible. To " "minimize software engineering problems, such as mixing code under different " "licenses, BSD-style licenses should be encouraged. Being leery of the GPL " "should particularly be the case with non-profits that interact with the " "developing world. In some locales where application of law becomes a costly " "exercise, the simplicity of the new BSD license, as compared to the GPL, may " "be of considerable advantage." msgstr "" "Некоммерческие организации должны по возможности участвовать в проектах с " "открытым исходным кодом. Чтобы минимизировать проблемы в разработке " "программного обеспечения, такие как смешивание кода под разными лицензиями, " "следует поощрять лицензии в стиле BSD. Осторожность в отношении GPL особенно " "важна для некоммерческих организаций, взаимодействующих с развивающимися " "странами. В некоторых регионах, где применение закона становится " "дорогостоящим процессом, простота новой лицензии BSD по сравнению с GPL " "может быть значительным преимуществом." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:285 #, no-wrap msgid "Conclusion" msgstr "Заключение" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:290 msgid "" "In contrast to the GPL, which is designed to prevent the proprietary " "commercialization of Open Source code, the BSD license places minimal " "restrictions on future behavior. This allows BSD code to remain Open Source " "or become integrated into commercial solutions, as a project's or company's " "needs change. In other words, the BSD license does not become a legal time-" "bomb at any point in the development process." msgstr "" "В отличие от лицензии GPL, которая предназначена для предотвращения " "коммерциализации открытого исходного кода в проприетарных целях, лицензия " "BSD накладывает минимальные ограничения на дальнейшие действия. Это " "позволяет коду BSD оставаться открытым или быть интегрированным в " "коммерческие решения, в зависимости от изменяющихся потребностей проекта или " "компании. Другими словами, лицензия BSD не превращается в юридическую \"бомбу" " замедленного действия\" на каком-либо этапе процесса разработки." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:292 msgid "" "In addition, since the BSD license does not come with the legal complexity " "of the GPL or LGPL licenses, it allows developers and companies to spend " "their time creating and promoting good code rather than worrying if that " "code violates licensing." msgstr "" "Помимо этого, поскольку лицензия BSD не обладает юридической сложностью " "лицензий GPL или LGPL, она позволяет разработчикам и компаниям тратить время " "на создание и продвижение качественного кода, вместо того чтобы беспокоиться " "о возможном нарушении лицензирования." #. type: Title == #: documentation/content/en/articles/bsdl-gpl/_index.adoc:295 #, no-wrap msgid "Bibliographical References" msgstr "Библиографические ссылки" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:298 msgid "[[[one,1]]] http://www.gnu.org/licenses/gpl.html" msgstr "[[[one,1]]] http://www.gnu.org/licenses/gpl.html" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:300 msgid "" "[[[two,2]]] http://archives.cnn.com/2000/TECH/computing/03/28/cyberpatrol." "mirrors/" msgstr "" "[[[two,2]]] http://archives.cnn.com/2000/TECH/computing/03/28/cyberpatrol." "mirrors/" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:302 msgid "" "[[[three,3]]] Open Source: the Unauthorized White Papers, Donald K. " "Rosenberg, IDG Books, 2000. Quotes are from page 114, \"Effects of the GNU " "GPL\"." msgstr "" "[[[three,3]]] Open Source: the Unauthorized White Papers, Donald K. " "Rosenberg, IDG Books, 2000. Quotes are from page 114, \"Effects of the GNU " "GPL\"." #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:304 msgid "" "[[[four,4]]] In the \"What License to Use?\" section of http://www.oreilly." "com/catalog/opensources/book/brian.html" msgstr "" "[[[four,4]]] В разделе \"What License to Use?\" книги http://www.oreilly.com/" "catalog/opensources/book/brian.html" #. type: Plain text #: documentation/content/en/articles/bsdl-gpl/_index.adoc:305 msgid "" "This whitepaper is a condensation of an original work available at http://" "alumni.cse.ucsc.edu/~brucem/open_source_license.htm" msgstr "" "Этот технический документ представляет собой сжатое изложение оригинальной " "работы, доступной по адресу http://alumni.cse.ucsc.edu/~brucem/" "open_source_license.htm" diff --git a/documentation/content/ru/articles/building-products/_index.adoc b/documentation/content/ru/articles/building-products/_index.adoc index f26b77090a..d974d5ed7f 100644 --- a/documentation/content/ru/articles/building-products/_index.adoc +++ b/documentation/content/ru/articles/building-products/_index.adoc @@ -1,341 +1,341 @@ --- authors: - author: 'Joseph Koshy' email: jkoshy@FreeBSD.org description: 'Как FreeBSD может помочь вам создать лучший продукт' organizations: - organization: 'The FreeBSD Project' tags: ["FreeBSD", "FreeBSD as base for your product"] title: 'Создание продуктов на основе FreeBSD' trademarks: ["freebsd", "general"] --- = Создание продуктов на основе FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/building-products/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Проект FreeBSD — это всемирный, основанный на добровольцах и совместной работе проект, разрабатывающий переносимую и высококачественную операционную систему. Проект FreeBSD распространяет исходный код своего продукта под либеральной лицензией с целью поощрения использования своего кода. Сотрудничество с проектом FreeBSD может помочь организациям сократить время выхода на рынок, снизить инженерные затраты и улучшить качество своих продуктов. В этой статье рассматриваются вопросы использования кода FreeBSD в устройствах и программных продуктах. В ней подчеркиваются характеристики FreeBSD, которые делают её отличной основой для разработки продуктов. В заключение статьи предлагаются несколько «лучших практик» для организаций, сотрудничающих с проектом FreeBSD. ''' toc::[] [[introduction]] == Введение Современный FreeBSD известен как высокопроизводительная серверная операционная система. Он развернут на миллионах веб-серверов и хостов, доступных из интернета, по всему миру. Код FreeBSD также является неотъемлемой частью множества продуктов — от устройств, таких как сетевые маршрутизаторы, межсетевые экраны и системы хранения данных, до персональных компьютеров. Части FreeBSD также использовались в коммерческом коробочном программном обеспечении (см. crossref:building-products[freebsd-intro, FreeBSD как набор строительных блоков]). В этой статье мы рассматриваем проект link:https://www.FreeBSD.org/[FreeBSD] как ресурс для разработки программного обеспечения — как набор строительных блоков и процессов, которые можно использовать для создания продуктов. Хотя исходный код FreeBSD распространяется свободно, чтобы в полной мере воспользоваться преимуществами работы проекта, организациям необходимо _сотрудничать_ с ним. В последующих разделах этой статьи мы обсудим эффективные способы взаимодействия с проектом и подводные камни, которых следует избегать при этом. *Предупреждение для читателя.* Автор считает, что перечисленные в этой статье характеристики проекта FreeBSD были в основном верны на момент написания статьи (2005 год). Однако читателю следует учитывать, что практики и процессы, используемые сообществами открытого исходного кода, могут меняться со временем, поэтому информацию в этой статье следует рассматривать как ориентировочную, а не нормативную. === Целевая аудитория Этот документ может быть интересен следующим широким группам людей: * Принимающие решения в продуктовых компаниях, ищущие способы повысить качество своего продукта, сократить время выхода на рынок и снизить инженерные затраты в долгосрочной перспективе. * Консультанты по технологиям, ищущие передовые методы использования "открытого исходного кода". * Заинтересованные в понимании динамики проектов с открытым исходным кодом представители отрасли. * Разработчики программного обеспечения, желающие использовать FreeBSD и ищущие способы внести свой вклад. === Цели статьи Прочитав эту статью, вы должны: * Понимание целей проекта FreeBSD и его организационной структуры. * Понимание модели разработки и процессов выпуска релизов. * Понимание того, как традиционные корпоративные процессы разработки программного обеспечения отличаются от используемых в проекте FreeBSD. * Осведомленность о каналах связи, используемых проектом, и уровне прозрачности, который вы можете ожидать. * Осознание оптимальных способов работы с проектом — как лучше всего снизить инженерные затраты, ускорить выход на рынок, управлять уязвимостями безопасности и сохранить будущую совместимость с вашим продуктом по мере развития проекта FreeBSD. === Структура статьи Остальная часть статьи структурирована следующим образом: * crossref:building-products[freebsd-intro, FreeBSD как набор строительных блоков] представляет проект FreeBSD, исследует его организационную структуру, ключевые технологии и процессы разработки релизов. * crossref:building-products[freebsd-collaboration, Сотрудничество с FreeBSD] описывает способы взаимодействия с проектом FreeBSD. В нём рассматриваются типичные проблемы, с которыми сталкиваются компании при работе с добровольными проектами, такими как FreeBSD. * crossref:building-products[conclusion, Заключение] завершает. [[freebsd-intro]] == FreeBSD как набор строительных блоков FreeBSD представляет собой отличную основу для создания продуктов: * Исходный код FreeBSD распространяется под либеральной лицензией BSD, что способствует его использованию в коммерческих продуктах crossref:building-products[Mon2005,"Почему следует использовать лицензию в стиле BSD для вашего открытого проекта"] с минимальными сложностями. * Проект FreeBSD обладает превосходными инженерными практиками, которые можно использовать. * Проект обеспечивает исключительную прозрачность своей работы, позволяя организациям, использующим его код, эффективно планировать будущее. * Культура проекта FreeBSD, унаследованная от Исследовательской группы по информатике Калифорнийского университета в Беркли crossref:building-products[McKu1999-1,"Двадцать лет Berkeley Unix: от собственности AT&T до свободного распространения"], способствует созданию высококачественных продуктов. Некоторые функции FreeBSD задают современный уровень развития технологий. crossref:building-products[GoldGab2005,"Инновации происходят в другом месте: открытое ПО как бизнес-стратегия"] подробно рассматривает бизнес-причины использования открытого ПО. Для организаций преимущества использования компонентов FreeBSD в своих продуктах включают сокращение времени выхода на рынок, снижение затрат на разработку и уменьшение рисков разработки. === Сборка с FreeBSD Вот несколько способов, как организации использовали FreeBSD: * В качестве вышестоящего источника для проверенного кода библиотек и утилит. + Будучи "нисходящими" по отношению к проекту, организации используют новые функции, исправления ошибок и тестирование, которые получает вышестоящий код. * Как встроенная ОС (например, для OEM-маршрутизаторов и устройств с межсетевым экраном). В этой модели организации используют настроенное ядро FreeBSD и набор прикладных программ вместе с проприетарным уровнем управления для своего устройства. OEM-производители получают выгоду от добавления поддержки нового оборудования проектом FreeBSD на уровне вышестоящего кода, а также от тестирования, которое проходит базовая система. + FreeBSD поставляется с автономной средой разработки, которая позволяет легко создавать подобные конфигурации. * Как совместимая с Unix среда для функций управления высокопроизводительными устройствами хранения данных и сетевого оборудования, работающая на отдельном процессорном "лезвии". + FreeBSD предоставляет инструменты для создания выделенных образов ОС и прикладных программ. Его реализация API BSD Unix является зрелой и проверенной. FreeBSD также может обеспечить стабильную среду кросс-разработки для других компонентов высокопроизводительных устройств. * Как средство для получения широкого тестирования и поддержки от международной команды разработчиков для некритичной "интеллектуальной собственности". + В этой модели организации вносят полезные инфраструктурные фреймворки в проект FreeBSD (например, см. man:netgraph[3]). Широкое распространение кода помогает быстро выявлять проблемы производительности и ошибки. Участие высококлассных разработчиков также приводит к полезным расширениям инфраструктуры, от которых выигрывает и сама организация-вкладчик. * Как среда разработки, поддерживающая кросс-разработку для встраиваемых ОС, таких как http://www.rtems.com/[RTEMS] и http://ecos.sourceware.org/[eCOS]. + В обширной коллекции портированных приложений и пакетов FreeBSD, насчитывающей {numports} элементов, доступно множество полноценных сред разработки. * В качестве способа поддержки Unix-подобного API в проприетарной ОС, повышая её привлекательность для разработчиков приложений. + В этой части ядра FreeBSD и прикладных программ "портированы" для работы вместе с другими задачами в проприетарной ОС. Наличие стабильной и хорошо протестированной реализации Unix(TM) API может сократить усилия, необходимые для переноса популярных приложений на проприетарную ОС. Поскольку FreeBSD поставляется с качественной документацией по своей внутренней структуре и имеет эффективные процессы управления уязвимостями и выпуска релизов, затраты на поддержание актуальности остаются низкими. [[freebsd-technologies]] === Технологии В проекте FreeBSD поддерживается большое количество технологий. Ниже приведен их выбор: * Полная система, способная самостоятельно осуществлять кросс-хостинг для link:https://www.FreeBSD.org/platforms/[множества архитектур:] * Модульное симметричное многопроцессорное ядро с загружаемыми модулями и гибкой, удобной системой настройки. * Поддержка эмуляции бинарных файлов Linux(TM) и SVR4 с почти нативной скоростью. Поддержка бинарных сетевых драйверов Windows(TM) (NDIS). * Библиотеки для множества задач программирования: архиваторы, поддержка FTP и HTTP, поддержка потоков, а также полноценная среда программирования, аналогичная POSIX(TM). * Безопасность: Принудительное управление доступом (man:mac[9]), клетки (man:jail[2]), ACL и поддержка криптографических устройств в ядре. * Сетевые возможности: работа с межсетевым экраном, управление QoS, высокопроизводительные TCP/IP сети с поддержкой множества расширений. + Встроенная в FreeBSD система Netgraph (man:netgraph[4]) позволяет гибко соединять модули сетевого ядра между собой. * Поддержка технологий хранения данных: Fibre Channel, SCSI, программный и аппаратный RAID, ATA и SATA. + FreeBSD поддерживает множество файловых систем, а его родная файловая система UFS2 поддерживает мягкие обновления, снимки и очень большие размеры файловых систем (16TB на файловую систему) crossref:building-products[McKu1999,"Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem"]. + Встроенная в ядро FreeBSD система GEOM (man:geom[4]) позволяет гибко комбинировать модули хранения данных. * Более {numports} портированных приложений, как коммерческих, так и с открытым исходным кодом, управляемых через коллекцию портов FreeBSD. === Организационная структура Организационная структура FreeBSD не является иерархической. Существует два основных типа участников FreeBSD: обычные пользователи FreeBSD и разработчики с правом записи (известные в жаргоне как _коммиттеры_) в исходную базу. В первой группе участвуют тысячи разработчиков; подавляющее большинство вкладов в FreeBSD поступает от участников этой группы. Права на коммит (доступ на запись) в репозиторий предоставляются тем, кто регулярно вносит вклад в проект. Права на коммит связаны с дополнительными обязанностями, и новым коммиттерам назначаются наставники, чтобы помочь им освоиться. .Организация FreeBSD image::freebsd-organization.png[] Разрешение конфликтов осуществляется «Основной командой» из девяти человек, которая избирается из группы коммиттеров. В FreeBSD нет "корпоративных" коммиттеров. Отдельные коммиттеры обязаны нести ответственность за изменения, которые они вносят в код. В extref:{committers-guide}[Руководстве коммиттера FreeBSD] crossref:building-products[ComGuide,"Руководство коммиттера"] описаны правила и обязанности коммиттеров. Модель проекта FreeBSD подробно рассматривается в crossref:building-products[Nik2005,"Модель проекта для FreeBSD"]. === Процессы разработки релизов FreeBSD Процессы разработки релизов FreeBSD играют важную роль в обеспечении высокого качества выпускаемых версий. В любой момент времени добровольцы FreeBSD поддерживают несколько линий кода (crossref:building-products[fig-freebsd-branches, Ветви релизов FreeBSD]): * Новые функции и критически важный код попадают в ветку разработки, также известную как ветка _-CURRENT_. * Ветви _-STABLE_ представляют собой линии кода, ответвленные от HEAD через регулярные промежутки времени. В ветку -STABLE допускается только проверенный код. Новые функции добавляются только после их тестирования и стабилизации в ветке -CURRENT. * Ветви _-RELEASE_ поддерживаются командой безопасности FreeBSD. На ветви -RELEASE допускаются только исправления ошибок для критических проблем. [[fig-freebsd-branches]] .Ветви выпусков FreeBSD image::freebsd-branches.png[] Строки кода поддерживаются до тех пор, пока есть интерес со стороны пользователей и разработчиков. Архитектуры машин разделены на «уровни»: архитектуры _Уровня 1_ полностью поддерживаются командами разработки выпусков и безопасности проекта, архитектуры _Уровня 2_ поддерживаются по мере возможностей, а экспериментальные архитектуры составляют _Уровень 3_. Список extref:{committers-guide}[поддерживаемых архитектур, archs] является частью коллекции документации FreeBSD. Команда разработки релизов публикует link:https://www.FreeBSD.org/releng/[дорожную карту] будущих выпусков FreeBSD на веб-сайте проекта. Указанные в дорожной карте даты не являются крайними сроками; FreeBSD выпускается, когда его код и документация готовы. Процессы разработки релизов FreeBSD описаны в crossref:building-products[RelEngDoc,"Инженерия релизов FreeBSD"]. [[freebsd-collaboration]] == Сотрудничество с FreeBSD Проекты с открытым исходным кодом, такие как FreeBSD, предлагают готовый код очень высокого качества. Хотя доступ к качественному исходному коду может снизить затраты на начальную разработку, в долгосрочной перспективе затраты на управление изменениями становятся преобладающими. По мере того как вычислительные среды меняются с годами и обнаруживаются новые уязвимости безопасности, ваш продукт также должен меняться и адаптироваться. Использование открытого исходного кода лучше рассматривать не как разовое мероприятие, а как __непрерывный процесс__. Лучшие проекты для сотрудничества — это те, которые __активны__; т.е. имеют активное сообщество, четкие цели и прозрачный стиль работы. * FreeBSD имеет активное сообщество разработчиков. На момент написания этого документа в мире насчитываются тысячи участников со всех обитаемых континентов, а также более 300 человек с правом записи в исходные репозитории проекта. * Цели проекта FreeBSD описаны в crossref:building-products[Hub1994,"Участие в проекте FreeBSD"]: ** Разработать высококачественную операционную систему для популярного компьютерного оборудования и, ** Сделать нашу работу доступной для всех под либеральной лицензией. * FreeBSD придерживается открытой и прозрачной рабочей культуры. Почти все обсуждения в проекте происходят по электронной почте на link:https://lists.freebsd.org/[публичных списках рассылки], которые также архивируются для потомков. Политики проекта link:https://www.FreeBSD.org/internal/policies/[документированы] и поддерживаются в системе контроля версий. Участие в проекте открыто для всех. [[freebsd-org]] === Понимание культуры FreeBSD Чтобы эффективно работать с проектом FreeBSD, необходимо понимать его культуру. Добровольческие проекты работают по другим правилам, чем коммерческие компании. Частая ошибка, которую совершают компании, входя в мир открытого исходного кода, — недооценка этих различий. *Мотивация.* Большинство вкладов в FreeBSD делается добровольно, без денежного вознаграждения. Факторы, мотивирующие людей, сложны и варьируются от альтруизма до интереса к решению задач, которые FreeBSD пытается решить. В таких условиях «элегантность никогда не бывает опциональной» crossref:building-products[Nor1993,"Tutorial on Good Lisp Programming Style"]. *Долгосрочная перспектива.* FreeBSD ведёт свою историю почти двадцать лет назад, к работе Исследовательской группы по информатике (Computer Science Research Group) в Университете Калифорнии, Беркли.footnote:[Исходный репозиторий FreeBSD содержит историю проекта с момента его создания, а также доступны CD-ROM с более ранним кодом от CSRG.] Некоторые из оригинальных разработчиков CSRG до сих пор связаны с проектом. Проект ценит долгосрочные перспективы crossref:building-products[Nor2001,"Научись программировать за десять лет"]. Часто встречающаяся в проекте аббревиатура — DTRT, что означает «Do The Right Thing» (сделай правильно). *Процессы разработки.* Компьютерные программы — это инструменты для общения: на одном уровне программисты передают свои намерения, используя точную нотацию, инструменту (компилятору), который преобразует их инструкции в исполняемый код. На другом уровне та же нотация используется для передачи намерений между двумя программистами. Формальные спецификации и проектные документы редко используются в проекте. Вместо них применяются понятный и хорошо написанный код, а также хорошо составленные журналы изменений (crossref:building-products[fig-change-log, Пример записи в журнале изменений]). Разработка FreeBSD происходит по принципу «грубого консенсуса и работающего кода» crossref:building-products[Carp1996,"Архитектурные принципы Интернета"]. [.programlisting] .... r151864 | bde | 2005-10-29 09:34:50 -0700 (Sat, 29 Oct 2005) | 13 lines Changed paths: M /head/lib/msun/src/e_rem_pio2f.c Use double precision to simplify and optimize arg reduction for small and medium size args too: instead of conditionally subtracting a float 17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always subtract a double 33+53 bit one. The float version is now closer to the double version than to old versions of itself -- it uses the same 33+53 bit approximation as the simplest cases in the double version, and where the float version had to switch to the slow general case at |x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the double version. This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and 2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4. .... .Пример записи в журнале изменений [[fig-change-log]] Общение между программистами улучшается благодаря использованию общего стандарта кодирования man:style[9]. *Каналы связи.* Участники проекта FreeBSD живут в разных уголках мира. Электронная почта (и в меньшей степени IRC) — это предпочтительные способы общения в проекте. === Лучшие практики для сотрудничества с проектом FreeBSD Теперь рассмотрим несколько лучших практик для наиболее эффективного использования FreeBSD в разработке продуктов. Планируйте на долгосрочную перспективу:: Настройте процессы, которые помогают отслеживать разработку FreeBSD. Например: + -*Отслеживание исходного кода FreeBSD.* Проект упрощает зеркалирование своего SVN-репозитория с помощью extref:{committers-guide}[svnsync, svn-advanced-use-setting-up-svnsync]. Наличие полной истории исходного кода полезно при отладке сложных проблем и дает ценное понимание намерений оригинальных разработчиков. Используйте систему контроля версий, которая позволяет легко объединять изменения между основной кодовой базой FreeBSD и вашим внутренним кодом. +*Отслеживание исходного кода FreeBSD.* Проект упрощает зеркалирование своего SVN-репозитория с помощью extref:{committers-guide}[svnsync, svn-advanced-use-setting-up-svnsync]. Наличие полной истории исходного кода полезно при отладке сложных проблем и даёт ценное понимание намерений оригинальных разработчиков. Используйте систему контроля версий, которая позволяет легко объединять изменения между основной кодовой базой FreeBSD и вашим внутренним кодом. + crossref:building-products[fig-svn-blame, Аннотированный листинг исходного кода, сгенерированный с помощью `svn blame`] показывает часть аннотированного листинга файла, на который ссылается журнал изменений в crossref:building-products[fig-change-log, Пример записи в журнале изменений]. Происхождение каждой строки исходного кода чётко видно. Аннотированные листинги, показывающие историю каждого файла, входящего в состав FreeBSD, https://svnweb.freebsd.org/[доступны в интернете]. + [.programlisting] .... #REV #WHO #DATE #TEXT 176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include 176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) __FBSDID("$FreeBSD$"); 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) /* __ieee754_rem_pio2f(x,y) 8870 rgrimes 1995-05-29 22:51:47 -0700 (Mon, 29 May 1995) * 176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * return the remainder of x rem pi/2 in *y 176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * use double precision for everything except passing x 152535 bde 2005-11-16 18:20:04 -0800 (Wed, 16 Nov 2005) * use __kernel_rem_pio2() for large x 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) */ 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) 176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) #include 176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) #include "math.h" .... .Аннотированный листинг исходного кода, сгенерированный с использованием `svn blame` [[fig-svn-blame]] + *Используйте привратника.* Назначьте _привратника_ для отслеживания разработки FreeBSD, чтобы следить за изменениями, которые могут потенциально повлиять на ваши продукты. + *Сообщайте об ошибках в вышестоящий проект.* Если вы заметили ошибку в коде FreeBSD, который используете, заполните https://www.FreeBSD.org/support/bugreports/[отчёт об ошибке]. Этот шаг помогает гарантировать, что вам не придётся исправлять ошибку в следующий раз, когда вы получите обновление кода из вышестоящего проекта. Используйте преимущества разработки релизов FreeBSD:: Используйте код из ветви разработки -STABLE FreeBSD. Эти ветви разработки официально поддерживаются инженерной командой выпуска и командой безопасности FreeBSD и содержат проверенный код. Пожертвуйте код для снижения затрат:: Основная часть затрат, связанных с разработкой продуктов, приходится на их поддержку. Пожертвовав некритичный код проекту, вы получаете выгоду в виде гораздо более широкого распространения вашего кода, чем это было бы возможно иначе. В свою очередь, это приводит к выявлению большего количества ошибок и уязвимостей безопасности, а также к обнаружению и исправлению аномалий производительности. Получайте эффективную поддержку:: Для продуктов с жёсткими сроками рекомендуется нанять или заключить консультационное соглашение с разработчиком или компанией, имеющими опыт работы с FreeBSD. {freebsd-jobs} является полезным каналом связи для поиска специалистов. Проект FreeBSD поддерживает link:https://www.FreeBSD.org/commercial/consult_bycat/[галерею консультантов и консалтинговых компаний], занимающихся работой с FreeBSD. http://www.bsdcertification.org/[Группа сертификации BSD] предлагает сертификацию для всех основных ОС, производных от BSD. + Для менее критичных задач вы можете обратиться за помощью в link:https://lists.freebsd.org/[списки рассылки проекта]. Полезное руководство о том, как правильно задавать вопросы, приведено в crossref:building-products[Ray2004,"Как правильно задавать вопросы"]. Распространите информацию о вашем участии:: Вы не обязаны афишировать своё использование FreeBSD, но это поможет как вашему делу, так и проекту. + Позволяя сообществу FreeBSD узнать, что ваша компания использует FreeBSD, вы повышаете шансы привлечь высококвалифицированных специалистов. Большой список поддержки FreeBSD также означает большее внимание среди разработчиков. Это, в свою очередь, создает более устойчивую основу для вашего будущего. Поддержите разработчиков FreeBSD:: Иногда самый прямой способ получить нужную функциональность в FreeBSD — это поддержать разработчика, который уже занимается связанной проблемой. Помощь может варьироваться от пожертвования оборудования до прямой финансовой поддержки. В некоторых странах пожертвования проекту FreeBSD имеют налоговые льготы. У проекта есть специальный link:https://www.FreeBSD.org/donations/[представитель по пожертвованиям], который помогает донорам. Также проект поддерживает веб-страницу, где разработчики link:https://www.FreeBSD.org/donations/wantlist/[указывают свои потребности]. + В соответствии с политикой проекта FreeBSD, о всех полученных вкладах в любой форме на его веб-сайте делается extref:{contributors}[запись с благодарностью]. [[conclusion]] == Заключение Цели проекта FreeBSD — создание и бесплатное распространение исходного кода высококачественной операционной системы. Сотрудничая с проектом FreeBSD, вы можете сократить затраты на разработку и ускорить вывод продукта на рынок в различных сценариях разработки. Мы рассмотрели характеристики проекта FreeBSD, которые делают его отличным выбором для включения в продуктовую стратегию организации. Затем мы изучили преобладающую культуру проекта и рассмотрели эффективные способы взаимодействия с его разработчиками. В завершение статьи был приведён список лучших практик, которые могут помочь организациям в сотрудничестве с проектом. :sectnums!: [bibliography] == Библиография [[Carp1996]] [Carp1996] http://www.ietf.org/rfc/rfc1958.txt[The Architectural Principles of the Internet] B. Carpenter. The Internet Architecture Board.The Internet Architecture Board. Copyright(R) 1996 год. [[ComGuide]] [ComGuide] extref:{committers-guide}[Committer's Guide] The FreeBSD Project. Copyright(R) 2005 год. [[GoldGab2005]] [GoldGab2005] http://dreamsongs.com/IHE/IHE.html[Innovation Happens Elsewhere: Open Source as Business Strategy] Ron Goldman. Richard Gabriel. Copyright(R) 2005 год. Morgan-Kaufmann. [[Hub1994]] [Hub1994] extref:{contributing}[Contributing to the FreeBSD Project] Jordan Hubbard. Copyright(R) 1994-2005 гг. The FreeBSD Project. [[McKu1999]] [McKu1999] http://www.usenix.org/publications/library/proceedings/usenix99/mckusick.html[Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem] Kirk McKusick. Gregory Ganger. Copyright(R) 1999 год. [[McKu1999-1]] [McKu1999-1] http://www.oreilly.com/catalog/opensources/book/kirkmck.html[Twenty Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable] Marshall Kirk McKusick. http://www.oreilly.com/catalog/opensources/book/toc.html[Open Sources: Voices from the Open Source Revolution] O'Reilly Inc.. Copyright(R) 1993 год. [[Mon2005]] [Mon2005] extref:{bsdl-gpl}[Why you should use a BSD style license for your Open Source Project] Bruce Montague. The FreeBSD Project. Copyright(R) 2005 год. [[Nik2005]] [Nik2005] extref:{dev-model}[A project model for the FreeBSD Project] Niklas Saers. Copyright(R) 2005 год. The FreeBSD Project. [[Nor1993]] [Nor1993] http://www.norvig.com/luv-slides.ps[Tutorial on Good Lisp Programming Style] Peter Norvig. Kent Pitman. Copyright(R) 1993 год. [[Nor2001]] [Nor2001] http://www.norvig.com/21-days.html[Teach Yourself Programming in Ten Years] Peter Norvig. Copyright(R) 2001 год. [[Ray2004]] [Ray2004] http://www.catb.org/~esr/faqs/smart-questions.html[How to ask questions the smart way] Eric Steven Raymond. Copyright(R) 2004 год. [[RelEngDoc]] [RelEngDoc] extref:{releng}[FreeBSD Release Engineering] Murray Stokely. Copyright(R) 2001 год. The FreeBSD Project. diff --git a/documentation/content/ru/articles/building-products/_index.po b/documentation/content/ru/articles/building-products/_index.po index 06e304eb3e..f7f485fff7 100644 --- a/documentation/content/ru/articles/building-products/_index.po +++ b/documentation/content/ru/articles/building-products/_index.po @@ -1,1526 +1,1526 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2024-12-29 08:30-0500\n" -"PO-Revision-Date: 2025-10-29 04:45+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/building-products/_index.adoc:1 #, no-wrap msgid "How FreeBSD can help you build a better product" msgstr "Как FreeBSD может помочь вам создать лучший продукт" #. type: Title = #: documentation/content/en/articles/building-products/_index.adoc:1 #: documentation/content/en/articles/building-products/_index.adoc:13 #, no-wrap msgid "Building Products with FreeBSD" msgstr "Создание продуктов на основе FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:46 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:50 msgid "" "The FreeBSD project is a worldwide, volunteer based, and collaborative " "project, which develops a portable and high-quality operating system. The " "FreeBSD project distributes the source code for its product under a liberal " "license, with the intention of encouraging the use of its code. " "Collaborating with the FreeBSD project can help organizations reduce their " "time to market, reduce engineering costs and improve their product quality." msgstr "" "Проект FreeBSD — это всемирный, основанный на добровольцах и совместной " "работе проект, разрабатывающий переносимую и высококачественную операционную " "систему. Проект FreeBSD распространяет исходный код своего продукта под " "либеральной лицензией с целью поощрения использования своего кода. " "Сотрудничество с проектом FreeBSD может помочь организациям сократить время " "выхода на рынок, снизить инженерные затраты и улучшить качество своих " "продуктов." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:54 msgid "" "This article examines the issues in using FreeBSD code in appliances and " "software products. It highlights the characteristics of FreeBSD that make " "it an excellent substrate for product development. The article concludes by " "suggesting a few \"best practices\" for organizations collaborating with the " "FreeBSD project." msgstr "" "В этой статье рассматриваются вопросы использования кода FreeBSD в " "устройствах и программных продуктах. В ней подчеркиваются характеристики " "FreeBSD, которые делают её отличной основой для разработки продуктов. В " "заключение статьи предлагаются несколько «лучших практик» для организаций, " "сотрудничающих с проектом FreeBSD." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:56 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/building-products/_index.adoc:60 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:67 msgid "" "FreeBSD today is well-known as a high-performance server operating system. " "It is deployed on millions of web servers and internet-facing hosts " "worldwide. FreeBSD code also forms an integral part of many products, " "ranging from appliances such as network routers, firewalls, and storage " "devices, to personal computers. Portions of FreeBSD have also been used in " "commercial shrink-wrapped software (see crossref:building-products[freebsd-" "intro, FreeBSD as a set of building blocks])." msgstr "" "Современный FreeBSD известен как высокопроизводительная серверная " "операционная система. Он развернут на миллионах веб-серверов и хостов, " "доступных из интернета, по всему миру. Код FreeBSD также является " "неотъемлемой частью множества продуктов — от устройств, таких как сетевые " "маршрутизаторы, межсетевые экраны и системы хранения данных, до персональных " "компьютеров. Части FreeBSD также использовались в коммерческом коробочном " "программном обеспечении (см. crossref:building-products[freebsd-intro, " "FreeBSD как набор строительных блоков])." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:69 msgid "" "In this article we look at the link:https://www.FreeBSD.org/[FreeBSD " "project] as a software engineering resource-as a collection of building " "blocks and processes which you can use to build products." msgstr "" "В этой статье мы рассматриваем проект link:https://www.FreeBSD.org/[FreeBSD] " "как ресурс для разработки программного обеспечения — как набор строительных " "блоков и процессов, которые можно использовать для создания продуктов." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:72 msgid "" "While FreeBSD's source is distributed freely to the public, to fully enjoy " "the benefits of the project's work, organizations need to _collaborate_ with " "the project. In subsequent sections of this article we discuss effective " "means of collaboration with the project and the pitfalls that need to be " "avoided while doing so." msgstr "" "Хотя исходный код FreeBSD распространяется свободно, чтобы в полной мере " "воспользоваться преимуществами работы проекта, организациям необходимо " "_сотрудничать_ с ним. В последующих разделах этой статьи мы обсудим " "эффективные способы взаимодействия с проектом и подводные камни, которых " "следует избегать при этом." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:75 #, no-wrap msgid "" "*Caveat Reader.* The author believes that the characteristics of the FreeBSD Project listed in this article were substantially true at the time the article was conceived and written (2005).\n" "However, the reader should keep in mind that the practices and processes used by open-source communities can change over time, and that the information in this article should therefore be taken as indicative rather than normative.\n" msgstr "" "*Предупреждение для читателя.* Автор считает, что перечисленные в этой " "статье характеристики проекта FreeBSD были в основном верны на момент " "написания статьи (2005 год).\n" "Однако читателю следует учитывать, что практики и процессы, используемые " "сообществами открытого исходного кода, могут меняться со временем, поэтому " "информацию в этой статье следует рассматривать как ориентировочную, а не " "нормативную.\n" #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:76 #, no-wrap msgid "Target Audience" msgstr "Целевая аудитория" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:79 msgid "" "This document would be of interest to the following broad groups of people:" msgstr "Этот документ может быть интересен следующим широким группам людей:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:81 msgid "" "Decision makers in product companies looking at ways to improve their " "product quality, reduce their time to market and lower engineering costs in " "the long term." msgstr "" "Принимающие решения в продуктовых компаниях, ищущие способы повысить " "качество своего продукта, сократить время выхода на рынок и снизить " "инженерные затраты в долгосрочной перспективе." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:82 msgid "" "Technology consultants looking for best-practices in leveraging \"open-" "source\"." msgstr "" "Консультанты по технологиям, ищущие передовые методы использования " "\"открытого исходного кода\"." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:83 msgid "" "Industry observers interested in understanding the dynamics of open-source " "projects." msgstr "" "Заинтересованные в понимании динамики проектов с открытым исходным кодом " "представители отрасли." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:84 msgid "" "Software developers seeking to use FreeBSD and looking for ways to " "contribute back." msgstr "" "Разработчики программного обеспечения, желающие использовать FreeBSD и " "ищущие способы внести свой вклад." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:85 #, no-wrap msgid "Article Goals" msgstr "Цели статьи" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:88 msgid "After reading this article you should have:" msgstr "Прочитав эту статью, вы должны:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:90 msgid "" "An understanding of the goals of the FreeBSD Project and its organizational " "structure." msgstr "Понимание целей проекта FreeBSD и его организационной структуры." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:91 msgid "" "An understanding of its development model and release engineering processes." msgstr "Понимание модели разработки и процессов выпуска релизов." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:92 msgid "" "An understanding of how conventional corporate software development " "processes differ from that used in the FreeBSD project." msgstr "" "Понимание того, как традиционные корпоративные процессы разработки " "программного обеспечения отличаются от используемых в проекте FreeBSD." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:93 msgid "" "Awareness of the communication channels used by the project and the level of " "transparency you can expect." msgstr "" "Осведомленность о каналах связи, используемых проектом, и уровне " "прозрачности, который вы можете ожидать." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:94 msgid "" "Awareness of optimal ways of working with the project-how best to reduce " "engineering costs, improve time to market, manage security vulnerabilities, " "and preserve future compatibility with your product as the FreeBSD project " "evolves." msgstr "" "Осознание оптимальных способов работы с проектом — как лучше всего снизить " "инженерные затраты, ускорить выход на рынок, управлять уязвимостями " "безопасности и сохранить будущую совместимость с вашим продуктом по мере " "развития проекта FreeBSD." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:95 #, no-wrap msgid "Article Structure" msgstr "Структура статьи" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:98 msgid "The rest of the article is structured as follows:" msgstr "Остальная часть статьи структурирована следующим образом:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:100 msgid "" "crossref:building-products[freebsd-intro, FreeBSD as a set of building " "blocks] introduces the FreeBSD project, explores its organizational " "structure, key technologies and release engineering processes." msgstr "" "crossref:building-products[freebsd-intro, FreeBSD как набор строительных " "блоков] представляет проект FreeBSD, исследует его организационную " "структуру, ключевые технологии и процессы разработки релизов." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:101 msgid "" "crossref:building-products[freebsd-collaboration, Collaborating with " "FreeBSD] describes ways to collaborate with the FreeBSD project. It examines " "common pitfalls encountered by corporates working with voluntary projects " "like FreeBSD." msgstr "" "crossref:building-products[freebsd-collaboration, Сотрудничество с FreeBSD] " "описывает способы взаимодействия с проектом FreeBSD. В нём рассматриваются " "типичные проблемы, с которыми сталкиваются компании при работе с " "добровольными проектами, такими как FreeBSD." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:102 msgid "crossref:building-products[conclusion, Conclusion] concludes." msgstr "crossref:building-products[conclusion, Заключение] завершает." #. type: Title == #: documentation/content/en/articles/building-products/_index.adoc:104 #, no-wrap msgid "FreeBSD as a set of building blocks" msgstr "FreeBSD как набор строительных блоков" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:107 msgid "FreeBSD makes an excellent foundation on which to build products:" msgstr "FreeBSD представляет собой отличную основу для создания продуктов:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:110 msgid "" "FreeBSD source code is distributed under a liberal BSD license facilitating " "its adoption in commercial products crossref:building-products[Mon2005,\"Why " "you should use a BSD style license for your Open Source Project\"] with " "minimum hassle." msgstr "" "Исходный код FreeBSD распространяется под либеральной лицензией BSD, что " "способствует его использованию в коммерческих продуктах crossref:building-" "products[Mon2005,\"Почему следует использовать лицензию в стиле BSD для " "вашего открытого проекта\"] с минимальными сложностями." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:111 msgid "" "The FreeBSD project has excellent engineering practices that can be " "leveraged." msgstr "" "Проект FreeBSD обладает превосходными инженерными практиками, которые можно " "использовать." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:112 msgid "" "The project offers exceptional transparency into its workings, allowing " "organizations using its code to plan effectively for the future." msgstr "" "Проект обеспечивает исключительную прозрачность своей работы, позволяя " "организациям, использующим его код, эффективно планировать будущее." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:115 msgid "" "The culture of the FreeBSD project, carried over from the Computer Science " "Research Group at The University of California, Berkeley crossref:building-" "products[McKu1999-1,\"Twenty Years of Berkeley Unix: From AT&T-Owned to " "Freely Redistributable\"], fosters high-quality work. Some features in " "FreeBSD define the state of the art." msgstr "" "Культура проекта FreeBSD, унаследованная от Исследовательской группы по " "информатике Калифорнийского университета в Беркли crossref:building-" "products[McKu1999-1,\"Двадцать лет Berkeley Unix: от собственности AT&T до " "свободного распространения\"], способствует созданию высококачественных " "продуктов. Некоторые функции FreeBSD задают современный уровень развития " "технологий." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:118 msgid "" "crossref:building-products[GoldGab2005,\"Innovation Happens Elsewhere: Open " "Source as Business Strategy\"] examines the business reasons for using open-" "source in greater detail. For organizations, the benefits of using FreeBSD " "components in their products include a shorter time to market, lower " "development costs and lower development risks." msgstr "" "crossref:building-products[GoldGab2005,\"Инновации происходят в другом месте:" " открытое ПО как бизнес-стратегия\"] подробно рассматривает бизнес-причины " "использования открытого ПО. Для организаций преимущества использования " "компонентов FreeBSD в своих продуктах включают сокращение времени выхода на " "рынок, снижение затрат на разработку и уменьшение рисков разработки." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:119 #, no-wrap msgid "Building with FreeBSD" msgstr "Сборка с FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:122 msgid "Here are a few ways organizations have used FreeBSD:" msgstr "Вот несколько способов, как организации использовали FreeBSD:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:124 msgid "As an upstream source for tested code for libraries and utilities." msgstr "" "В качестве вышестоящего источника для проверенного кода библиотек и утилит." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:126 msgid "" "By being \"downstream\" of the project, organizations leverage the new " "features, bug fixes and testing that the upstream code receives." msgstr "" "Будучи \"нисходящими\" по отношению к проекту, организации используют новые " "функции, исправления ошибок и тестирование, которые получает вышестоящий код." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:127 msgid "" "As an embedded OS (for example, for an OEM router and firewall device). In " "this model, organizations use a customized FreeBSD kernel and application " "program set along with a proprietary management layer for their device. OEMs " "benefit from new hardware support being added by the FreeBSD project " "upstream, and from the testing that the base system receives." msgstr "" "Как встроенная ОС (например, для OEM-маршрутизаторов и устройств с " "межсетевым экраном). В этой модели организации используют настроенное ядро " "FreeBSD и набор прикладных программ вместе с проприетарным уровнем " "управления для своего устройства. OEM-производители получают выгоду от " "добавления поддержки нового оборудования проектом FreeBSD на уровне " "вышестоящего кода, а также от тестирования, которое проходит базовая система." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:129 msgid "" "FreeBSD ships with a self-hosting development environment that allows easy " "creation of such configurations." msgstr "" "FreeBSD поставляется с автономной средой разработки, которая позволяет легко " "создавать подобные конфигурации." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:130 msgid "" "As a Unix compatible environment for the management functions of high-end " "storage and networking devices, running on a separate processor \"blade\"." msgstr "" "Как совместимая с Unix среда для функций управления высокопроизводительными " "устройствами хранения данных и сетевого оборудования, работающая на " "отдельном процессорном \"лезвии\"." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:134 msgid "" "FreeBSD provides the tools for creating dedicated OS and application program " "images. Its implementation of a BSD unix API is mature and tested. FreeBSD " "can also provide a stable cross-development environment for the other " "components of the high-end device." msgstr "" "FreeBSD предоставляет инструменты для создания выделенных образов ОС и " "прикладных программ. Его реализация API BSD Unix является зрелой и " "проверенной. FreeBSD также может обеспечить стабильную среду кросс-" "разработки для других компонентов высокопроизводительных устройств." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:135 msgid "" "As a vehicle to get widespread testing and support from a worldwide team of " "developers for non-critical \"intellectual property\"." msgstr "" "Как средство для получения широкого тестирования и поддержки от " "международной команды разработчиков для некритичной \"интеллектуальной " "собственности\"." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:139 msgid "" "In this model, organizations contribute useful infrastructural frameworks to " "the FreeBSD project (for example, see man:netgraph[3]). The widespread " "exposure that the code gets helps to quickly identify performance issues and " "bugs. The involvement of top-notch developers also leads to useful " "extensions to the infrastructure that the contributing organization also " "benefits from." msgstr "" "В этой модели организации вносят полезные инфраструктурные фреймворки в " "проект FreeBSD (например, см. man:netgraph[3]). Широкое распространение кода " "помогает быстро выявлять проблемы производительности и ошибки. Участие " "высококлассных разработчиков также приводит к полезным расширениям " "инфраструктуры, от которых выигрывает и сама организация-вкладчик." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:140 msgid "" "As a development environment supporting cross-development for embedded OSes " "like http://www.rtems.com/[RTEMS] and http://ecos.sourceware.org/[eCOS]." msgstr "" "Как среда разработки, поддерживающая кросс-разработку для встраиваемых ОС, " "таких как http://www.rtems.com/[RTEMS] и http://ecos.sourceware.org/[eCOS]." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:142 msgid "" "There are many full-fledged development environments in the {numports}-" "strong collection of applications ported and packaged with FreeBSD." msgstr "" "В обширной коллекции портированных приложений и пакетов FreeBSD, " "насчитывающей {numports} элементов, доступно множество полноценных сред " "разработки." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:143 msgid "" "As a way to support a Unix-like API in an otherwise proprietary OS, " "increasing its palatability for application developers." msgstr "" "В качестве способа поддержки Unix-подобного API в проприетарной ОС, повышая " "её привлекательность для разработчиков приложений." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:147 msgid "" "Here parts of FreeBSD's kernel and application programs are \"ported\" to " "run alongside other tasks in the proprietary OS. The availability of a " "stable and well tested Unix(TM) API implementation can reduce the effort " "needed to port popular applications to the proprietary OS. As FreeBSD ships " "with high-quality documentation for its internals and has effective " "vulnerability management and release engineering processes, the costs of " "keeping up-to-date are kept low." msgstr "" "В этой части ядра FreeBSD и прикладных программ \"портированы\" для работы " "вместе с другими задачами в проприетарной ОС. Наличие стабильной и хорошо " "протестированной реализации Unix(TM) API может сократить усилия, необходимые " "для переноса популярных приложений на проприетарную ОС. Поскольку FreeBSD " "поставляется с качественной документацией по своей внутренней структуре и " "имеет эффективные процессы управления уязвимостями и выпуска релизов, " "затраты на поддержание актуальности остаются низкими." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:149 #, no-wrap msgid "Technologies" msgstr "Технологии" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:153 msgid "" "There are a large number of technologies supported by the FreeBSD project. " "A selection of these are listed below:" msgstr "" "В проекте FreeBSD поддерживается большое количество технологий. Ниже " "приведен их выбор:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:155 msgid "" "A complete system that can cross-host itself for link:https://www.FreeBSD." "org/platforms/[many architectures:]" msgstr "" "Полная система, способная самостоятельно осуществлять кросс-хостинг для " "link:https://www.FreeBSD.org/platforms/[множества архитектур:]" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:156 msgid "" "A modular symmetric multiprocessing capable kernel, with loadable kernel " "modules and a flexible and easy to use configuration system." msgstr "" "Модульное симметричное многопроцессорное ядро с загружаемыми модулями и " "гибкой, удобной системой настройки." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:157 msgid "" "Support for emulation of Linux(TM) and SVR4 binaries at near machine speeds. " "Support for binary Windows(TM) (NDIS) network drivers." msgstr "" "Поддержка эмуляции бинарных файлов Linux(TM) и SVR4 с почти нативной " "скоростью. Поддержка бинарных сетевых драйверов Windows(TM) (NDIS)." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:158 msgid "" "Libraries for many programming tasks: archivers, FTP and HTTP support, " "thread support, in addition to a full POSIX(TM) like programming environment." msgstr "" "Библиотеки для множества задач программирования: архиваторы, поддержка FTP и " "HTTP, поддержка потоков, а также полноценная среда программирования, " "аналогичная POSIX(TM)." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:159 msgid "" "Security features: Mandatory Access Control (man:mac[9]), jails (man:" "jail[2]), ACLs, and in-kernel cryptographic device support." msgstr "" "Безопасность: Принудительное управление доступом (man:mac[9]), клетки " "(man:jail[2]), ACL и поддержка криптографических устройств в ядре." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:160 msgid "" "Networking features: firewall-ing, QoS management, high-performance TCP/IP " "networking with support for many extensions." msgstr "" "Сетевые возможности: работа с межсетевым экраном, управление QoS, " "высокопроизводительные TCP/IP сети с поддержкой множества расширений." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:162 msgid "" "FreeBSD's in-kernel Netgraph (man:netgraph[4]) framework allows kernel " "networking modules to be connected together in flexible ways." msgstr "" "Встроенная в FreeBSD система Netgraph (man:netgraph[4]) позволяет гибко " "соединять модули сетевого ядра между собой." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:163 msgid "" "Support for storage technologies: Fibre Channel, SCSI, software and hardware " "RAID, ATA and SATA." msgstr "" "Поддержка технологий хранения данных: Fibre Channel, SCSI, программный и " "аппаратный RAID, ATA и SATA." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:167 #, no-wrap msgid "" "FreeBSD supports a number of filesystems, and its native UFS2 filesystem\n" "supports soft updates, snapshots and very large filesystem sizes (16TB per\n" "\t\tfilesystem) crossref:building-products[McKu1999,\"Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem\"].\n" msgstr "" "FreeBSD поддерживает множество файловых систем, а его родная файловая " "система UFS2\n" "поддерживает мягкие обновления, снимки и очень большие размеры файловых " "систем (16TB на\n" "файловую систему) crossref:building-products[McKu1999,\"Soft Updates: A " "Technique for Eliminating Most Synchronous Writes in the Fast Filesystem\"]." "\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:169 msgid "" "FreeBSD's in-kernel GEOM (man:geom[4]) framework allows kernel storage " "modules to be composed in flexible ways." msgstr "" "Встроенная в ядро FreeBSD система GEOM (man:geom[4]) позволяет гибко " "комбинировать модули хранения данных." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:170 msgid "" "Over {numports} ported applications, both commercial and open-source, " "managed via the FreeBSD ports collection." msgstr "" "Более {numports} портированных приложений, как коммерческих, так и с " "открытым исходным кодом, управляемых через коллекцию портов FreeBSD." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:171 #, no-wrap msgid "Organizational Structure" msgstr "Организационная структура" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:174 msgid "FreeBSD's organizational structure is non-hierarchical." msgstr "Организационная структура FreeBSD не является иерархической." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:176 msgid "" "There are essentially two kinds of contributors to FreeBSD, general users of " "FreeBSD, and developers with write access (known as _committers_ in the " "jargon) to the source base." msgstr "" "Существует два основных типа участников FreeBSD: обычные пользователи " "FreeBSD и разработчики с правом записи (известные в жаргоне как _коммиттеры_)" " в исходную базу." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:180 msgid "" "There are many thousands of contributors in the first group; the vast " "majority of contributions to FreeBSD come from individuals in this group. " "Commit rights (write access) to the repository are granted to individuals " "who contribute consistently to the project. Commit rights come with " "additional responsibilities, and new committers are assigned mentors to help " "them learn the ropes." msgstr "" "В первой группе участвуют тысячи разработчиков; подавляющее большинство " "вкладов в FreeBSD поступает от участников этой группы. Права на коммит (" "доступ на запись) в репозиторий предоставляются тем, кто регулярно вносит " "вклад в проект. Права на коммит связаны с дополнительными обязанностями, и " "новым коммиттерам назначаются наставники, чтобы помочь им освоиться." #. type: Block title #: documentation/content/en/articles/building-products/_index.adoc:181 #, no-wrap msgid "FreeBSD Organization" msgstr "Организация FreeBSD" #. type: Target for macro image #: documentation/content/en/articles/building-products/_index.adoc:182 #, no-wrap msgid "freebsd-organization.png" msgstr "freebsd-organization.png" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:185 msgid "" "Conflict resolution is performed by a nine member \"Core Team\" that is " "elected from the group of committers." msgstr "" "Разрешение конфликтов осуществляется «Основной командой» из девяти человек, " "которая избирается из группы коммиттеров." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:190 msgid "" "FreeBSD does not have \"corporate\" committers. Individual committers are " "required to take responsibility for the changes they introduce to the code. " "The extref:{committers-guide}[FreeBSD Committer's guide] crossref:building-" "products[ComGuide,\"Committer's Guide\"] documents the rules and " "responsibilities for committers." msgstr "" "В FreeBSD нет \"корпоративных\" коммиттеров. Отдельные коммиттеры обязаны " "нести ответственность за изменения, которые они вносят в код. В extref" ":{committers-guide}[Руководстве коммиттера FreeBSD] crossref:building-" "products[ComGuide,\"Руководство коммиттера\"] описаны правила и обязанности " "коммиттеров." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:193 msgid "" "FreeBSD's project model is examined in detail in crossref:building-" "products[Nik2005,\"A project model for the FreeBSD Project\"]." msgstr "" "Модель проекта FreeBSD подробно рассматривается в crossref:building-" "products[Nik2005,\"Модель проекта для FreeBSD\"]." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:194 #, no-wrap msgid "FreeBSD Release Engineering Processes" msgstr "Процессы разработки релизов FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:199 msgid "" "FreeBSD's release engineering processes play a major role in ensuring that " "its released versions are of a high quality. At any point of time, " "FreeBSD's volunteers support multiple code lines (crossref:building-" "products[fig-freebsd-branches, FreeBSD Release Branches]):" msgstr "" "Процессы разработки релизов FreeBSD играют важную роль в обеспечении " "высокого качества выпускаемых версий. В любой момент времени добровольцы " "FreeBSD поддерживают несколько линий кода (crossref:building-products[fig-" "freebsd-branches, Ветви релизов FreeBSD]):" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:201 msgid "" "New features and disruptive code enters on the development branch, also " "known as the _-CURRENT_ branch." msgstr "" "Новые функции и критически важный код попадают в ветку разработки, также " "известную как ветка _-CURRENT_." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:202 msgid "" "_-STABLE_ branches are code lines that are branched from HEAD at regular " "intervals. Only tested code is allowed onto a -STABLE branch. New features " "are allowed once they have been tested and stabilized in the -CURRENT branch." msgstr "" "Ветви _-STABLE_ представляют собой линии кода, ответвленные от HEAD через " "регулярные промежутки времени. В ветку -STABLE допускается только " "проверенный код. Новые функции добавляются только после их тестирования и " "стабилизации в ветке -CURRENT." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:203 msgid "" "_-RELEASE_ branches are maintained by the FreeBSD security team. Only bug " "fixes for critical issues are permitted onto -RELEASE branches." msgstr "" "Ветви _-RELEASE_ поддерживаются командой безопасности FreeBSD. На ветви -" "RELEASE допускаются только исправления ошибок для критических проблем." #. type: Block title #: documentation/content/en/articles/building-products/_index.adoc:205 #, no-wrap msgid "FreeBSD Release Branches" msgstr "Ветви выпусков FreeBSD" #. type: Target for macro image #: documentation/content/en/articles/building-products/_index.adoc:206 #, no-wrap msgid "freebsd-branches.png" msgstr "freebsd-branches.png" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:209 msgid "" "Code lines are kept alive for as long as there is user and developer " "interest in them." msgstr "" "Строки кода поддерживаются до тех пор, пока есть интерес со стороны " "пользователей и разработчиков." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:212 msgid "" "Machine architectures are grouped into \"tiers\"; _Tier 1_ architectures are " "fully supported by the project's release engineering and security teams, " "_Tier 2_ architectures are supported on a best effort basis, and " "experimental architectures comprise _Tier 3_. The list of extref:" "{committers-guide}[supported architectures, archs] is part of the FreeBSD " "documentation collection." msgstr "" "Архитектуры машин разделены на «уровни»: архитектуры _Уровня 1_ полностью " "поддерживаются командами разработки выпусков и безопасности проекта, " "архитектуры _Уровня 2_ поддерживаются по мере возможностей, а " "экспериментальные архитектуры составляют _Уровень 3_. Список extref" ":{committers-guide}[поддерживаемых архитектур, archs] является частью " "коллекции документации FreeBSD." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:215 msgid "" "The release engineering team publishes a link:https://www.FreeBSD.org/releng/" "[road map] for future releases of FreeBSD on the project's web site. The " "dates laid down in the road map are not deadlines; FreeBSD is released when " "its code and documentation are ready." msgstr "" "Команда разработки релизов публикует link:https://www.FreeBSD.org/releng/[" "дорожную карту] будущих выпусков FreeBSD на веб-сайте проекта. Указанные в " "дорожной карте даты не являются крайними сроками; FreeBSD выпускается, когда " "его код и документация готовы." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:218 msgid "" "FreeBSD's release engineering processes are described in crossref:building-" "products[RelEngDoc,\"FreeBSD Release Engineering\"]." msgstr "" "Процессы разработки релизов FreeBSD описаны в crossref:building-" "products[RelEngDoc,\"Инженерия релизов FreeBSD\"]." #. type: Title == #: documentation/content/en/articles/building-products/_index.adoc:220 #, no-wrap msgid "Collaborating with FreeBSD" msgstr "Сотрудничество с FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:223 msgid "" "Open-source projects like FreeBSD offer finished code of a very high quality." msgstr "" "Проекты с открытым исходным кодом, такие как FreeBSD, предлагают готовый код " "очень высокого качества." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:228 msgid "" "While access to quality source code can reduce the cost of initial " "development, in the long-term the costs of managing change begin to " "dominate. As computing environments change over the years and new security " "vulnerabilities are discovered, your product too needs to change and adapt. " "Using open-source code is best viewed not as a one-off activity, but as an " "__ongoing process__. The best projects to collaborate with are the ones " "that are __live__; i.e., with an active community, clear goals and a " "transparent working style." msgstr "" "Хотя доступ к качественному исходному коду может снизить затраты на " "начальную разработку, в долгосрочной перспективе затраты на управление " "изменениями становятся преобладающими. По мере того как вычислительные среды " "меняются с годами и обнаруживаются новые уязвимости безопасности, ваш " "продукт также должен меняться и адаптироваться. Использование открытого " "исходного кода лучше рассматривать не как разовое мероприятие, а как " "__непрерывный процесс__. Лучшие проекты для сотрудничества — это те, которые " "__активны__; т.е. имеют активное сообщество, четкие цели и прозрачный стиль " "работы." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:230 msgid "" "FreeBSD has an active developer community around it. At the time of writing " "there are many thousands of contributors from every populated continent in " "the world and over 300 individuals with write access to the project's source " "repositories." msgstr "" "FreeBSD имеет активное сообщество разработчиков. На момент написания этого " "документа в мире насчитываются тысячи участников со всех обитаемых " "континентов, а также более 300 человек с правом записи в исходные " "репозитории проекта." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:232 msgid "" "The goals of the FreeBSD project are crossref:building-products[Hub1994," "\"Contributing to the FreeBSD Project\"]:" msgstr "" "Цели проекта FreeBSD описаны в crossref:building-products[Hub1994,\"Участие " "в проекте FreeBSD\"]:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:234 msgid "" "To develop a high-quality operating system for popular computer hardware, " "and," msgstr "" "Разработать высококачественную операционную систему для популярного " "компьютерного оборудования и," #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:235 msgid "To make our work available to all under a liberal license." msgstr "Сделать нашу работу доступной для всех под либеральной лицензией." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:237 msgid "" "FreeBSD enjoys an open and transparent working culture. Nearly all " "discussion in the project happens by email, on link:https://lists.freebsd." "org/[public mailing lists] that are also archived for posterity. The " "project's policies are link:https://www.FreeBSD.org/internal/policies/" "[documented] and maintained under revision control. Participation in the " "project is open to all." msgstr "" "FreeBSD придерживается открытой и прозрачной рабочей культуры. Почти все " "обсуждения в проекте происходят по электронной почте на link:https://lists." "freebsd.org/[публичных списках рассылки], которые также архивируются для " "потомков. Политики проекта link:https://www.FreeBSD.org/internal/policies/" "[документированы] и поддерживаются в системе контроля версий. Участие в " "проекте открыто для всех." #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:239 #, no-wrap msgid "Understanding FreeBSD culture" msgstr "Понимание культуры FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:242 msgid "" "To be able to work effectively with the FreeBSD project, you need to " "understand the project's culture." msgstr "" "Чтобы эффективно работать с проектом FreeBSD, необходимо понимать его " "культуру." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:245 msgid "" "Volunteer driven projects operate under different rules than for-profit " "corporates. A common mistake that companies make when venturing into the " "open-source world is that of underplaying these differences." msgstr "" "Добровольческие проекты работают по другим правилам, чем коммерческие " "компании. Частая ошибка, которую совершают компании, входя в мир открытого " "исходного кода, — недооценка этих различий." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:251 #, no-wrap msgid "" "*Motivation.* Most contributions to FreeBSD are done voluntarily without\n" "monetary rewards entering the picture. The factors that motivate individuals are\n" "complex, ranging from altruism, to an interest in solving the kinds of problems\n" "that FreeBSD attempts to solve. In this environment, \"elegance is never\n" "optional\"crossref:building-products[Nor1993,\"Tutorial on Good Lisp Programming Style\"].\n" msgstr "" "*Мотивация.* Большинство вкладов в FreeBSD делается добровольно,\n" "без денежного вознаграждения. Факторы, мотивирующие людей, сложны и\n" "варьируются от альтруизма до интереса к решению задач, которые FreeBSD\n" "пытается решить. В таких условиях «элегантность никогда не бывает " "опциональной»\n" "crossref:building-products[Nor1993,\"Tutorial on Good Lisp Programming " "Style\"].\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:253 #, no-wrap msgid "*The Long Term View.* FreeBSD traces its roots back nearly twenty years to the work of the Computer Science Research Group at the University of California Berkeley.footnote:[FreeBSD's source repository contains a history of the project since its inception, and there are CDROMs available that contain earlier code from the CSRG.] A number of the original CSRG developers remain associated with the project.\n" msgstr "" "*Долгосрочная перспектива.* FreeBSD ведёт свою историю почти двадцать лет " "назад, к работе Исследовательской группы по информатике (Computer Science " "Research Group) в Университете Калифорнии, Беркли.footnote:[Исходный " "репозиторий FreeBSD содержит историю проекта с момента его создания, а также " "доступны CD-ROM с более ранним кодом от CSRG.] Некоторые из оригинальных " "разработчиков CSRG до сих пор связаны с проектом.\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:255 msgid "" "The project values long-term perspectives crossref:building-products[Nor2001," "\"Teach Yourself Programming in Ten Years\"]. A frequent acronym encountered " "in the project is DTRT, which stands for \"Do The Right Thing\"." msgstr "" "Проект ценит долгосрочные перспективы crossref:building-products[Nor2001," "\"Научись программировать за десять лет\"]. Часто встречающаяся в проекте " "аббревиатура — DTRT, что означает «Do The Right Thing» (сделай правильно)." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:258 #, no-wrap msgid "" "*Development Processes.* Computer programs are tools for communication: at one level programmers communicate their intentions using a precise notation to a tool (a compiler) that translates their instructions to executable code.\n" "At another level, the same notation is used for communication of intent between two programmers.\n" msgstr "" "*Процессы разработки.* Компьютерные программы — это инструменты для общения: " "на одном уровне программисты передают свои намерения, используя точную " "нотацию, инструменту (компилятору), который преобразует их инструкции в " "исполняемый код.\n" "На другом уровне та же нотация используется для передачи намерений между " "двумя программистами.\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:264 msgid "" "Formal specifications and design documents are seldom used in the project. " "Clear and well-written code and well-written change logs (crossref:building-" "products[fig-change-log, A sample change log entry]) are used in their " "place. FreeBSD development happens by \"rough consensus and running " "code\"crossref:building-products[Carp1996,\"The Architectural Principles of " "the Internet\"]." msgstr "" "Формальные спецификации и проектные документы редко используются в проекте. " "Вместо них применяются понятный и хорошо написанный код, а также хорошо " "составленные журналы изменений (crossref:building-products[fig-change-log, " "Пример записи в журнале изменений]). Разработка FreeBSD происходит по " "принципу «грубого консенсуса и работающего кода» crossref:building-" "products[Carp1996,\"Архитектурные принципы Интернета\"]." #. type: delimited block . 4 #: documentation/content/en/articles/building-products/_index.adoc:270 #, no-wrap msgid "" "r151864 | bde | 2005-10-29 09:34:50 -0700 (Sat, 29 Oct 2005) | 13 lines\n" "Changed paths:\n" " M /head/lib/msun/src/e_rem_pio2f.c\n" msgstr "" "r151864 | bde | 2005-10-29 09:34:50 -0700 (Sat, 29 Oct 2005) | 13 lines\n" "Changed paths:\n" " M /head/lib/msun/src/e_rem_pio2f.c\n" #. type: delimited block . 4 #: documentation/content/en/articles/building-products/_index.adoc:280 #, no-wrap msgid "" "Use double precision to simplify and optimize arg reduction for small\n" "and medium size args too: instead of conditionally subtracting a float\n" "17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always\n" "subtract a double 33+53 bit one. The float version is now closer to\n" "the double version than to old versions of itself -- it uses the same\n" "33+53 bit approximation as the simplest cases in the double version,\n" "and where the float version had to switch to the slow general case at\n" "|x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the\n" "double version.\n" msgstr "" "Use double precision to simplify and optimize arg reduction for small\n" "and medium size args too: instead of conditionally subtracting a float\n" "17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always\n" "subtract a double 33+53 bit one. The float version is now closer to\n" "the double version than to old versions of itself -- it uses the same\n" "33+53 bit approximation as the simplest cases in the double version,\n" "and where the float version had to switch to the slow general case at\n" "|x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the\n" "double version.\n" #. type: delimited block . 4 #: documentation/content/en/articles/building-products/_index.adoc:283 #, no-wrap msgid "" "This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and\n" "2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4.\n" msgstr "" "This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and\n" "2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4.\n" #. type: Block title #: documentation/content/en/articles/building-products/_index.adoc:284 #, no-wrap msgid "A sample change log entry [[fig-change-log]]" msgstr "Пример записи в журнале изменений [[fig-change-log]]" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:287 msgid "" "Communication between programmers is enhanced by the use of a common coding " "standard man:style[9]." msgstr "" "Общение между программистами улучшается благодаря использованию общего " "стандарта кодирования man:style[9]." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:290 #, no-wrap msgid "" "*Communication Channels.* FreeBSD's contributors are spread across the world.\n" "Email (and to a lesser extent, IRC) is the preferred means of communication in the project.\n" msgstr "" "*Каналы связи.* Участники проекта FreeBSD живут в разных уголках мира.\n" "Электронная почта (и в меньшей степени IRC) — это предпочтительные способы " "общения в проекте.\n" #. type: Title === #: documentation/content/en/articles/building-products/_index.adoc:291 #, no-wrap msgid "Best Practices for collaborating with the FreeBSD project" msgstr "Лучшие практики для сотрудничества с проектом FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:294 msgid "" "We now look at a few best practices for making the best use of FreeBSD in " "product development." msgstr "" "Теперь рассмотрим несколько лучших практик для наиболее эффективного " "использования FreeBSD в разработке продуктов." #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:295 #, no-wrap msgid "Plan for the long term" msgstr "Планируйте на долгосрочную перспективу" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:298 msgid "" "Setup processes that help in tracking the development of FreeBSD. For " "example:" msgstr "" "Настройте процессы, которые помогают отслеживать разработку FreeBSD. " "Например:" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:300 #, no-wrap msgid "*Track FreeBSD source code.* The project makes it easy to mirror its SVN repository using extref:{committers-guide}[svnsync, svn-advanced-use-setting-up-svnsync]. Having the complete history of the source is useful when debugging complex problems and offers valuable insight into the intentions of the original developers. Use a capable source control system that allows you to easily merge changes between the upstream FreeBSD code base and your own in-house code.\n" msgstr "" "*Отслеживание исходного кода FreeBSD.* Проект упрощает зеркалирование своего " "SVN-репозитория с помощью extref:{committers-guide}[svnsync, svn-advanced-" "use-setting-up-svnsync]. Наличие полной истории исходного кода полезно при " -"отладке сложных проблем и дает ценное понимание намерений оригинальных " +"отладке сложных проблем и даёт ценное понимание намерений оригинальных " "разработчиков. Используйте систему контроля версий, которая позволяет легко " "объединять изменения между основной кодовой базой FreeBSD и вашим внутренним " "кодом.\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:305 msgid "" "crossref:building-products[fig-svn-blame, An annotated source listing " "generated using `svn blame`] shows a portion of an annotated listing of the " "file referenced by the change log in crossref:building-products[fig-change-" "log, A sample change log entry]. The ancestry of each line of the source is " "clearly visible. Annotated listings showing the history of every file that " "is part of FreeBSD are https://svnweb.freebsd.org/[available on the web]." msgstr "" "crossref:building-products[fig-svn-blame, Аннотированный листинг исходного " "кода, сгенерированный с помощью `svn blame`] показывает часть " "аннотированного листинга файла, на который ссылается журнал изменений в " "crossref:building-products[fig-change-log, Пример записи в журнале изменений]" ". Происхождение каждой строки исходного кода чётко видно. Аннотированные " "листинги, показывающие историю каждого файла, входящего в состав FreeBSD, " "https://svnweb.freebsd.org/[доступны в интернете]." #. type: delimited block . 4 #: documentation/content/en/articles/building-products/_index.adoc:309 #, no-wrap msgid "#REV #WHO #DATE #TEXT\n" msgstr "#REV #WHO #DATE #TEXT\n" #. type: delimited block . 4 #: documentation/content/en/articles/building-products/_index.adoc:323 #, no-wrap msgid "" "176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include \n" "176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) __FBSDID(\"$FreeBSD$\");\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) \n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) /* __ieee754_rem_pio2f(x,y)\n" " 8870 rgrimes 1995-05-29 22:51:47 -0700 (Mon, 29 May 1995) *\n" "176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * return the remainder of x rem pi/2 in *y\n" "176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * use double precision for everything except passing x\n" "152535 bde 2005-11-16 18:20:04 -0800 (Wed, 16 Nov 2005) * use __kernel_rem_pio2() for large x\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) */\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) \n" "176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) #include \n" "176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) \n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) #include \"math.h\"\n" msgstr "" "176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include \n" "176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) __FBSDID(\"" "$FreeBSD$\");\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) \n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) /* " "__ieee754_rem_pio2f(x,y)\n" " 8870 rgrimes 1995-05-29 22:51:47 -0700 (Mon, 29 May 1995) *\n" "176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * return the " "remainder of x rem pi/2 in *y\n" "176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * use double " "precision for everything except passing x\n" "152535 bde 2005-11-16 18:20:04 -0800 (Wed, 16 Nov 2005) * use " "__kernel_rem_pio2() for large x\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) */\n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) \n" "176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) #include " "\n" "176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) \n" " 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) #include " "\"math.h\"\n" #. type: Block title #: documentation/content/en/articles/building-products/_index.adoc:324 #, no-wrap msgid "An annotated source listing generated using `svn blame` [[fig-svn-blame]]" msgstr "" "Аннотированный листинг исходного кода, сгенерированный с использованием `svn " "blame` [[fig-svn-blame]]" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:327 #, no-wrap msgid "*Use a gatekeeper.* Appoint a _gatekeeper_ to monitor FreeBSD development, to keep an eye out for changes that could potentially impact your products.\n" msgstr "" "*Используйте привратника.* Назначьте _привратника_ для отслеживания " "разработки FreeBSD, чтобы следить за изменениями, которые могут потенциально " "повлиять на ваши продукты.\n" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:330 #, no-wrap msgid "" "*Report bugs upstream.* If you notice bug in the FreeBSD code that you are using, file a https://www.FreeBSD.org/support/bugreports/[bug report].\n" "This step helps ensure that you do not have to fix the bug the next time you take a code drop from upstream.\n" msgstr "" "*Сообщайте об ошибках в вышестоящий проект.* Если вы заметили ошибку в коде " "FreeBSD, который используете, заполните https://www.FreeBSD.org/support/" "bugreports/[отчёт об ошибке].\n" "Этот шаг помогает гарантировать, что вам не придётся исправлять ошибку в " "следующий раз, когда вы получите обновление кода из вышестоящего проекта.\n" #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:330 #, no-wrap msgid "Leverage FreeBSD's release engineering efforts" msgstr "Используйте преимущества разработки релизов FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:333 msgid "" "Use code from a -STABLE development branch of FreeBSD. These development " "branches are formally supported by FreeBSD's release engineering and " "security teams and comprise of tested code." msgstr "" "Используйте код из ветви разработки -STABLE FreeBSD. Эти ветви разработки " "официально поддерживаются инженерной командой выпуска и командой " "безопасности FreeBSD и содержат проверенный код." #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:334 #, no-wrap msgid "Donate code to reduce costs" msgstr "Пожертвуйте код для снижения затрат" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:338 msgid "" "A major proportion of the costs associated with developing products is that " "of doing maintenance. By donating non-critical code to the project, you " "benefit by having your code see much wider exposure than it would otherwise " "get. This in turn leads to more bugs and security vulnerabilities being " "flushed out and performance anomalies being identified and fixed." msgstr "" "Основная часть затрат, связанных с разработкой продуктов, приходится на их " "поддержку. Пожертвовав некритичный код проекту, вы получаете выгоду в виде " "гораздо более широкого распространения вашего кода, чем это было бы возможно " "иначе. В свою очередь, это приводит к выявлению большего количества ошибок и " "уязвимостей безопасности, а также к обнаружению и исправлению аномалий " "производительности." #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:339 #, no-wrap msgid "Get support effectively" msgstr "Получайте эффективную поддержку" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:344 msgid "" "For products with tight deadlines, it is recommended that you hire or enter " "into a consulting agreement with a developer or firm with FreeBSD " "experience. The {freebsd-jobs} is a useful communication channel to find " "talent. The FreeBSD project maintains a link:https://www.FreeBSD.org/" "commercial/consult_bycat/[gallery of consultants and consulting firms] " "undertaking FreeBSD work. The http://www.bsdcertification.org/[BSD " "Certification Group] offers certification for all the major BSD derived OSes." msgstr "" "Для продуктов с жёсткими сроками рекомендуется нанять или заключить " "консультационное соглашение с разработчиком или компанией, имеющими опыт " "работы с FreeBSD. {freebsd-jobs} является полезным каналом связи для поиска " "специалистов. Проект FreeBSD поддерживает link:https://www.FreeBSD.org/" "commercial/consult_bycat/[галерею консультантов и консалтинговых компаний], " "занимающихся работой с FreeBSD. http://www.bsdcertification.org/[Группа " "сертификации BSD] предлагает сертификацию для всех основных ОС, производных " "от BSD." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:348 msgid "" "For less critical needs, you can ask for help on the link:https://lists." "freebsd.org/[project mailing lists]. A useful guide to follow when asking " "for help is given in crossref:building-products[Ray2004,\"How to ask " "questions the smart way\"]." msgstr "" "Для менее критичных задач вы можете обратиться за помощью в " "link:https://lists.freebsd.org/[списки рассылки проекта]. Полезное " "руководство о том, как правильно задавать вопросы, приведено в crossref" ":building-products[Ray2004,\"Как правильно задавать вопросы\"]." #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:348 #, no-wrap msgid "Publicize your involvement" msgstr "Распространите информацию о вашем участии" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:350 msgid "" "You are not required to publicize your use of FreeBSD, but doing so helps " "both your effort as well as that of the project." msgstr "" "Вы не обязаны афишировать своё использование FreeBSD, но это поможет как " "вашему делу, так и проекту." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:354 msgid "" "Letting the FreeBSD community know that your company uses FreeBSD helps " "improve your chances of attracting high quality talent. A large roster of " "support for FreeBSD also means more mind share for it among developers. " "This in turn yields a healthier foundation for your future." msgstr "" "Позволяя сообществу FreeBSD узнать, что ваша компания использует FreeBSD, вы " "повышаете шансы привлечь высококвалифицированных специалистов. Большой " "список поддержки FreeBSD также означает большее внимание среди " "разработчиков. Это, в свою очередь, создает более устойчивую основу для " "вашего будущего." #. type: Labeled list #: documentation/content/en/articles/building-products/_index.adoc:354 #, no-wrap msgid "Support FreeBSD developers" msgstr "Поддержите разработчиков FreeBSD" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:360 msgid "" "Sometimes the most direct way to get a desired feature into FreeBSD is to " "support a developer who is already looking at a related problem. Help can " "range from hardware donations to direct financial assistance. In some " "countries, donations to the FreeBSD project enjoy tax benefits. The project " "has a dedicated link:https://www.FreeBSD.org/donations/[donations liaison] " "to assist donors. The project also maintains a web page where developers " "link:https://www.FreeBSD.org/donations/wantlist/[list their needs]." msgstr "" "Иногда самый прямой способ получить нужную функциональность в FreeBSD — это " "поддержать разработчика, который уже занимается связанной проблемой. Помощь " "может варьироваться от пожертвования оборудования до прямой финансовой " "поддержки. В некоторых странах пожертвования проекту FreeBSD имеют налоговые " "льготы. У проекта есть специальный link:https://www.FreeBSD.org/donations/[" "представитель по пожертвованиям], который помогает донорам. Также проект " "поддерживает веб-страницу, где разработчики link:https://www.FreeBSD.org/" "donations/wantlist/[указывают свои потребности]." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:362 msgid "" "As a policy the FreeBSD project extref:{contributors}[acknowledges] all " "contributions received on its web site." msgstr "" "В соответствии с политикой проекта FreeBSD, о всех полученных вкладах в " "любой форме на его веб-сайте делается extref:{contributors}[запись с " "благодарностью]." #. type: Title == #: documentation/content/en/articles/building-products/_index.adoc:364 #, no-wrap msgid "Conclusion" msgstr "Заключение" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:368 msgid "" "The FreeBSD project's goals are to create and give away the source code for " "a high-quality operating system. By working with the FreeBSD project you " "can reduce development costs and improve your time to market in a number of " "product development scenarios." msgstr "" "Цели проекта FreeBSD — создание и бесплатное распространение исходного кода " "высококачественной операционной системы. Сотрудничая с проектом FreeBSD, вы " "можете сократить затраты на разработку и ускорить вывод продукта на рынок в " "различных сценариях разработки." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:372 msgid "" "We examined the characteristics of the FreeBSD project that make it an " "excellent choice for being part of an organization's product strategy. We " "then looked at the prevailing culture of the project and examined effective " "ways of interacting with its developers. The article concluded with a list " "of best-practices that could help organizations collaborating with the " "project." msgstr "" "Мы рассмотрели характеристики проекта FreeBSD, которые делают его отличным " "выбором для включения в продуктовую стратегию организации. Затем мы изучили " "преобладающую культуру проекта и рассмотрели эффективные способы " "взаимодействия с его разработчиками. В завершение статьи был приведён список " "лучших практик, которые могут помочь организациям в сотрудничестве с " "проектом." #. type: Title == #: documentation/content/en/articles/building-products/_index.adoc:376 #, no-wrap msgid "Bibliography" msgstr "Библиография" #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:379 msgid "" "[[Carp1996]] [Carp1996] http://www.ietf.org/rfc/rfc1958.txt[The " "Architectural Principles of the Internet] B. Carpenter. The Internet " "Architecture Board.The Internet Architecture Board. Copyright(R) 1996." msgstr "" "[[Carp1996]] [Carp1996] http://www.ietf.org/rfc/rfc1958.txt[The " "Architectural Principles of the Internet] B. Carpenter. The Internet " "Architecture Board.The Internet Architecture Board. Copyright(R) 1996 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:381 msgid "" "[[ComGuide]] [ComGuide] extref:{committers-guide}[Committer's Guide] The " "FreeBSD Project. Copyright(R) 2005." msgstr "" "[[ComGuide]] [ComGuide] extref:{committers-guide}[Committer's Guide] The " "FreeBSD Project. Copyright(R) 2005 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:383 msgid "" "[[GoldGab2005]] [GoldGab2005] http://dreamsongs.com/IHE/IHE.html[Innovation " "Happens Elsewhere: Open Source as Business Strategy] Ron Goldman. Richard " "Gabriel. Copyright(R) 2005. Morgan-Kaufmann." msgstr "" "[[GoldGab2005]] [GoldGab2005] http://dreamsongs.com/IHE/IHE.html[Innovation " "Happens Elsewhere: Open Source as Business Strategy] Ron Goldman. Richard " "Gabriel. Copyright(R) 2005 год. Morgan-Kaufmann." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:385 msgid "" "[[Hub1994]] [Hub1994] extref:{contributing}[Contributing to the FreeBSD " "Project] Jordan Hubbard. Copyright(R) 1994-2005. The FreeBSD Project." msgstr "" "[[Hub1994]] [Hub1994] extref:{contributing}[Contributing to the FreeBSD " "Project] Jordan Hubbard. Copyright(R) 1994-2005 гг. The FreeBSD Project." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:387 msgid "" "[[McKu1999]] [McKu1999] http://www.usenix.org/publications/library/" "proceedings/usenix99/mckusick.html[Soft Updates: A Technique for Eliminating " "Most Synchronous Writes in the Fast Filesystem] Kirk McKusick. Gregory " "Ganger. Copyright(R) 1999." msgstr "" "[[McKu1999]] [McKu1999] http://www.usenix.org/publications/library/" "proceedings/usenix99/mckusick.html[Soft Updates: A Technique for Eliminating " "Most Synchronous Writes in the Fast Filesystem] Kirk McKusick. Gregory " "Ganger. Copyright(R) 1999 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:389 msgid "" "[[McKu1999-1]] [McKu1999-1] http://www.oreilly.com/catalog/opensources/book/" "kirkmck.html[Twenty Years of Berkeley Unix: From AT&T-Owned to Freely " "Redistributable] Marshall Kirk McKusick. http://www.oreilly.com/catalog/" "opensources/book/toc.html[Open Sources: Voices from the Open Source " "Revolution] O'Reilly Inc.. Copyright(R) 1993." msgstr "" "[[McKu1999-1]] [McKu1999-1] http://www.oreilly.com/catalog/opensources/book/" "kirkmck.html[Twenty Years of Berkeley Unix: From AT&T-Owned to Freely " "Redistributable] Marshall Kirk McKusick. http://www.oreilly.com/catalog/" "opensources/book/toc.html[Open Sources: Voices from the Open Source " "Revolution] O'Reilly Inc.. Copyright(R) 1993 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:391 msgid "" "[[Mon2005]] [Mon2005] extref:{bsdl-gpl}[Why you should use a BSD style " "license for your Open Source Project] Bruce Montague. The FreeBSD Project. " "Copyright(R) 2005." msgstr "" "[[Mon2005]] [Mon2005] extref:{bsdl-gpl}[Why you should use a BSD style " "license for your Open Source Project] Bruce Montague. The FreeBSD Project. " "Copyright(R) 2005 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:393 msgid "" "[[Nik2005]] [Nik2005] extref:{dev-model}[A project model for the FreeBSD " "Project] Niklas Saers. Copyright(R) 2005. The FreeBSD Project." msgstr "" "[[Nik2005]] [Nik2005] extref:{dev-model}[A project model for the FreeBSD " "Project] Niklas Saers. Copyright(R) 2005 год. The FreeBSD Project." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:395 msgid "" "[[Nor1993]] [Nor1993] http://www.norvig.com/luv-slides.ps[Tutorial on Good " "Lisp Programming Style] Peter Norvig. Kent Pitman. Copyright(R) 1993." msgstr "" "[[Nor1993]] [Nor1993] http://www.norvig.com/luv-slides.ps[Tutorial on Good " "Lisp Programming Style] Peter Norvig. Kent Pitman. Copyright(R) 1993 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:397 msgid "" "[[Nor2001]] [Nor2001] http://www.norvig.com/21-days.html[Teach Yourself " "Programming in Ten Years] Peter Norvig. Copyright(R) 2001." msgstr "" "[[Nor2001]] [Nor2001] http://www.norvig.com/21-days.html[Teach Yourself " "Programming in Ten Years] Peter Norvig. Copyright(R) 2001 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:399 msgid "" "[[Ray2004]] [Ray2004] http://www.catb.org/~esr/faqs/smart-questions.html[How " "to ask questions the smart way] Eric Steven Raymond. Copyright(R) 2004." msgstr "" "[[Ray2004]] [Ray2004] http://www.catb.org/~esr/faqs/smart-questions.html[How " "to ask questions the smart way] Eric Steven Raymond. Copyright(R) 2004 год." #. type: Plain text #: documentation/content/en/articles/building-products/_index.adoc:400 msgid "" "[[RelEngDoc]] [RelEngDoc] extref:{releng}[FreeBSD Release Engineering] " "Murray Stokely. Copyright(R) 2001. The FreeBSD Project." msgstr "" "[[RelEngDoc]] [RelEngDoc] extref:{releng}[FreeBSD Release Engineering] " "Murray Stokely. Copyright(R) 2001 год. The FreeBSD Project." diff --git a/documentation/content/ru/articles/contributors/_index.adoc b/documentation/content/ru/articles/contributors/_index.adoc index fc653fe0fc..5c0eca7084 100644 --- a/documentation/content/ru/articles/contributors/_index.adoc +++ b/documentation/content/ru/articles/contributors/_index.adoc @@ -1,205 +1,205 @@ --- description: 'Список организаций и частных лиц, внесших вклад в FreeBSD' tags: ["Contributors", "FreeBSD", "individuals", "organizations"] title: 'Участники проекта FreeBSD' trademarks: ["freebsd", "sun", "general"] --- = Участники проекта FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/contributors/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} :include-path: content/{{% lang %}}/articles/contributors/ :include-contrib-386bsd: shared/contrib-386bsd.adoc :include-contrib-additional: shared/contrib-additional.adoc :include-contrib-committers: shared/contrib-committers.adoc :include-contrib-corealumni: shared/contrib-corealumni.adoc :include-contrib-develalumni: shared/contrib-develalumni.adoc :include-contrib-portmgralumni: shared/contrib-portmgralumni.adoc endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] :include-path: :include-contrib-386bsd: ../../../../shared/contrib-386bsd.adoc :include-contrib-additional: ../../../../shared/contrib-additional.adoc :include-contrib-committers: ../../../../shared/contrib-committers.adoc :include-contrib-corealumni: ../../../../shared/contrib-corealumni.adoc :include-contrib-develalumni: ../../../../shared/contrib-develalumni.adoc :include-contrib-portmgralumni: ../../../../shared/contrib-portmgralumni.adoc endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] :include-path: :include-contrib-386bsd: ../../../../../shared/contrib-386bsd.adoc :include-contrib-additional: ../../../../../shared/contrib-additional.adoc :include-contrib-committers: ../../../../../shared/contrib-committers.adoc :include-contrib-corealumni: ../../../../../shared/contrib-corealumni.adoc :include-contrib-develalumni: ../../../../../shared/contrib-develalumni.adoc :include-contrib-portmgralumni: ../../../../../shared/contrib-portmgralumni.adoc endif::[] [.abstract-title] Аннотация В этой статье перечислены люди и организации, внесшие вклад в FreeBSD. Чтобы увидеть текущий список коммиттеров FreeBSD, можно ознакомиться со следующим разделом: crossref:contributors[staff-committers, список]. ''' toc::[] [[staff-committers]] == Разработчики FreeBSD Этот список, включающий всех членов Основной Команды (Core Team), содержит имена всех, у кого есть права на коммит в одном или нескольких из трёх деревьев исходников (doc, ports и src). Текущий состав основной команды можно посмотреть на link:https://www.freebsd.org/administration/#t-core[странице администрации]. (в алфавитном порядке по фамилии): include::{include-contrib-committers}[] [[contrib-corealumni]] == Бывшие участники основной команды (Core Team) Следующие люди были членами основной команды FreeBSD в указанные периоды. Мы благодарим их за прошлые усилия на благо проекта FreeBSD. _В приблизительном обратном хронологическом порядке:_ include::{include-contrib-corealumni}[] [[contrib-develalumni]] == Бывшие участники команды разработчиков Следующие люди были членами команды разработчиков FreeBSD в указанные периоды. Мы благодарим их за прошлые усилия на благо проекта FreeBSD. _В приблизительном обратном хронологическом порядке:_ include::{include-contrib-develalumni}[] [[contrib-portmgralumni]] == Команда управления портами: бывшие участники Следующие люди были членами команды portmgr FreeBSD в указанные периоды. Мы благодарим их за прошлые усилия на службе проекта FreeBSD. _В приблизительном обратном хронологическом порядке:_ include::{include-contrib-portmgralumni}[] [[contrib-develinmemoriam]] == Команда разработчиков: Памяти ушедших В течение многих лет существования проекта FreeBSD, к сожалению, некоторые из наших разработчиков ушли из жизни. Вот несколько воспоминаний. _В приблизительном обратном хронологическом порядке их ухода:_ include::{include-path}contrib-develinmemoriam.adoc[] [[contrib-derived]] == Участники разработки производного программного обеспечения Это программное обеспечение изначально было получено из релиза 386BSD 0.1 Уильяма Ф. Джолитца, хотя почти ни один из оригинальных фрагментов кода, специфичных для 386BSD, не сохранился. Данное программное обеспечение было практически полностью переработано на основе релиза 4.4BSD-Lite, предоставленного Исследовательской группой компьютерных наук (CSRG) Калифорнийского университета в Беркли и связанными с ней академическими участниками. В FreeBSD также включены части NetBSD и OpenBSD, поэтому мы хотели бы поблагодарить всех участников разработки NetBSD и OpenBSD за их труд. [[contrib-additional]] == Дополнительные участники проекта FreeBSD (в алфавитном порядке по имени): include::{include-contrib-additional}[] [[contrib-386bsd]] == Участники, внесшие вклад в набор исправлений 386BSD (в алфавитном порядке по имени): include::{include-contrib-386bsd}[] [[donors]] == Галерея доноров Фонд FreeBSD благодарит https://freebsdfoundation.org/our-donors/donors/[финансовых доноров и доноров оборудования]. https://www.freebsd.org/donations/[FreeBSD Donations Liaison] включает https://www.freebsd.org/donations/donors/[список пожертвованного оборудования]. Проект FreeBSD благодарит всех предоставивших помощь! [NOTE] ==== По состоянию на 2010 год, приведённый ниже раздел уже несколько лет устарел. ==== === Участники проекта центрального сервера Следующие частные лица и компании сделали возможным для проекта FreeBSD создание нового центрального серверного оборудования, которое в определённый момент заменило `freefall.FreeBSD.org`, пожертвовав следующие компоненты: * {mbarkah} и его работодатель, http://www.hemi.com/[Hemisphere Online], пожертвовали процессор _Pentium Pro (P6) 200 МГц_. * http://www.asacomputers.com/[ASA Computers] подарили _материнскую плату Tyan 1662_. * Джо МакГакин из http://www.via.net/[ViaNet Communications] пожертвовал _контроллер Ethernet от Kingston_. * Джек О'Нил пожертвовал _SCSI-контроллер NCR 53C875_. * Ульф Циммерманн из http://www.Alameda.net/[Alameda Networks] пожертвовал _128 МБ памяти_, _4 ГБ жёсткого диска и корпус_. === Прямое финансирование Следующие частные лица и компании щедро внесли прямые финансовые вклады в проект: * Annelise Anderson . * {dillon}. * http://www.bluemountain.com/[Blue Mountain Arts]. * http://www.epilogue.com/[Epilogue Technology Corporation]. * {sef}. * http://www.gta.com/[Global Technology Associates, Inc]. * Don Scott Wilde. * Gianmarco Giovannelli . * Josef C. Grosch . * Robert T. Morris. * {chuckr}. * Кеннет П. Стокс из http://www.imagescape.com/[Imaginary Landscape, LLC.]. * Dmitry S. Kohmanyuk . -* http://www.cdrom.co.jp/[Laser5] из Японии (часть прибыли от продаж их различных FreeBSD CDROM идет на поддержку проекта). +* http://www.cdrom.co.jp/[Laser5] из Японии (часть прибыли от продаж их различных FreeBSD CDROM идёт на поддержку проекта). * http://www.mmjp.or.jp/fuki/[Fuki Shuppan Publishing Co.] пожертвовала часть прибыли от книги _Hajimete no FreeBSD_ (FreeBSD, начало работы) проектам FreeBSD и XFree86. * http://www.ascii.co.jp/[ASCII Corp.] пожертвовала часть прибыли от нескольких книг, связанных с FreeBSD, проекту FreeBSD. * http://www.yokogawa.co.jp/[Yokogawa Electric Corp] щедро предоставила значительное финансирование проекту FreeBSD. * http://www.buffnet.net/[BuffNET]. * http://www.pacificsolutions.com/[Pacific Solutions]. * http://www.siemens.de/[Siemens AG] via Andre Albsmeier . * Chris Silva . === Участники разработки аппаратного обеспечения Следующие частные лица и компании любезно предоставили оборудование для тестирования и разработки/поддержки драйверов устройств: * BSDi за предоставление систем Pentium P5-90 и 486/DX2-66 EISA/VL, которые используются в нашей разработке, не говоря уже о сетевом доступе и других пожертвованиях аппаратных ресурсов. * http://www.compaq.com[Compaq] пожертвовал FreeBSD Project разнообразные системы Alpha. Среди множества щедрых пожертвований — 4 AlphaStation DS10, AlphaServer DS20, AlphaServer 2100, AlphaServer 4100, 8 персональных рабочих станций с частотой 500 МГц, 4 персональные рабочие станции с частотой 433 МГц и многое другое! Эти машины используются для сборки релизов, создания пакетов, разработки SMP и общей разработки архитектуры Alpha. * TRW Financial Systems, Inc. предоставила 130 ПК, три файловых сервера по 68 ГБ, двенадцать сетей Ethernet, два маршрутизатора и коммутатор ATM для отладки кода бездисковой системы * Дермот МакДоннелл предоставил привод CDROM Toshiba XM3401B, который в настоящее время используется в _freefall_. * Чак Роби предоставил свой потоковый накопитель на гибких дисках для экспериментальной работы. * Ларри Альтной и {wilko} предоставили стримеры Wangtek и Archive QIC-02 для улучшения драйвера [.filename]#wt#. * Эрнст Винтер (http://berklix.org/ewinter/[Умер]) предоставил проекту дисковод на 2,88 МБ. Надеемся, это усилит внимание к необходимости переписать драйвер для дискет. * http://www.tekram.com/[Tekram Technologies] предоставили по одному экземпляру своих SCSI-адаптеров DC-390, DC-390U и DC-390F FAST и ULTRA для регрессионного тестирования драйверов NCR и AMD с их картами. Также их стоит похвалить за предоставление исходных кодов драйверов для свободных операционных систем на их FTP-сервере link:ftp://ftp.tekram.com/scsi/FreeBSD/[ftp://ftp.tekram.com/scsi/FreeBSD/]. * Ларри М. Аугустин предоставил не только SCSI-карту Symbios Sym8751S, но и набор технической документации, включая руководство по предстоящему чипу Sym53c895 с поддержкой Ultra-2 и LVD, а также последнюю версию руководства по программированию с информацией о безопасном использовании расширенных функций новейших SCSI-чипов Symbios. Большое спасибо! * {kuku} пожертвовал FX120 12-скоростной Mitsumi CD-ROM привод для разработки драйвера IDE CD-ROM. * Mike Tancsa пожертвовал четыре различные PCI-карты ATM для расширения поддержки этих карт, а также для помощи в разработке стека netatm ATM. === Особые участники * http://www.osd.bsdi.com/[BSDi] (ранее Walnut Creek CDROM) пожертвовали больше, чем мы можем выразить (подробности см. в разделе 'О проекте FreeBSD' extref:{handbook}[FreeBSD Handbook]). В частности, мы хотели бы поблагодарить их за первоначальное оборудование, использованное для `freefall.FreeBSD.org`, нашей основной машины разработки, и для `thud.FreeBSD.org`, тестовой и сборочной системы. Мы также благодарны им за финансирование различных участников на протяжении многих лет и предоставление неограниченного доступа к их T1-подключению к Интернету. * Компания http://www.interface-business.de/[interface business GmbH, Дрезден] терпеливо поддерживала {joerg}, который часто отдавал предпочтение работе с FreeBSD вместо оплачиваемой работы и использовал их (довольно дорогое) интернет-подключение EUnet, когда его личное соединение становилось слишком медленным или ненадёжным для работы. * http://www.bsdi.com/[Berkeley Software Design, Inc.] предоставила свой код эмулятора DOS для остального мира BSD, который используется в команде `doscmd`. diff --git a/documentation/content/ru/articles/contributors/_index.po b/documentation/content/ru/articles/contributors/_index.po index 33b59e584d..c2bfd94acb 100644 --- a/documentation/content/ru/articles/contributors/_index.po +++ b/documentation/content/ru/articles/contributors/_index.po @@ -1,655 +1,655 @@ # 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: 2024-09-14 14:59-0300\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"PO-Revision-Date: 2025-11-25 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/articles/contributors/_index.adoc:1 #, no-wrap msgid "A list of organizations and individuals who have contributed to FreeBSD" msgstr "Список организаций и частных лиц, внесших вклад в FreeBSD" #. type: Title = #: documentation/content/en/articles/contributors/_index.adoc:1 #: documentation/content/en/articles/contributors/_index.adoc:8 #, no-wrap msgid "Contributors to FreeBSD" msgstr "Участники проекта FreeBSD" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:62 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:66 msgid "" "This article lists individuals and organizations who have made a " "contribution to FreeBSD. To see the current list of FreeBSD Committers you " "can take a look at the following crossref:contributors[staff-committers, " "list]." msgstr "" "В этой статье перечислены люди и организации, внесшие вклад в FreeBSD. Чтобы " "увидеть текущий список коммиттеров FreeBSD, можно ознакомиться со следующим " "разделом: crossref:contributors[staff-committers, список]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:68 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:72 #, no-wrap msgid "The FreeBSD Developers" msgstr "Разработчики FreeBSD" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:76 msgid "" "This list, which includes all members of the Core Team, names everyone who " "has commit privileges for one or more of the three source trees (doc, ports " "and src). To see the current Core Team members you can take a look at the " "link:https://www.freebsd.org/administration/#t-core[administration page]." msgstr "" "Этот список, включающий всех членов Основной Команды (Core Team), содержит " "имена всех, у кого есть права на коммит в одном или нескольких из трёх " "деревьев исходников (doc, ports и src). Текущий состав основной команды " "можно посмотреть на link:https://www.freebsd.org/administration/#t-core[" "странице администрации]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:78 msgid "(in alphabetical order by last name):" msgstr "(в алфавитном порядке по фамилии):" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:82 #, no-wrap msgid "Core Team Alumni" msgstr "Бывшие участники основной команды (Core Team)" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:86 msgid "" "The following people were members of the FreeBSD core team during the " "periods indicated. We thank them for their past efforts in the service of " "the FreeBSD project." msgstr "" "Следующие люди были членами основной команды FreeBSD в указанные периоды. Мы " "благодарим их за прошлые усилия на благо проекта FreeBSD." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:88 #: documentation/content/en/articles/contributors/_index.adoc:98 #: documentation/content/en/articles/contributors/_index.adoc:108 msgid "_In rough reverse chronological order:_" msgstr "_В приблизительном обратном хронологическом порядке:_" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:92 #, no-wrap msgid "Development Team Alumni" msgstr "Бывшие участники команды разработчиков" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:96 msgid "" "The following people were members of the FreeBSD development team during the " "periods indicated. We thank them for their past efforts in the service of " "the FreeBSD project." msgstr "" "Следующие люди были членами команды разработчиков FreeBSD в указанные " "периоды. Мы благодарим их за прошлые усилия на благо проекта FreeBSD." #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:102 #, no-wrap msgid "Ports Management Team Alumni" msgstr "Команда управления портами: бывшие участники" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:106 msgid "" "The following people were members of the FreeBSD portmgr team during the " "periods indicated. We thank them for their past efforts in the service of " "the FreeBSD project." msgstr "" "Следующие люди были членами команды portmgr FreeBSD в указанные периоды. Мы " "благодарим их за прошлые усилия на службе проекта FreeBSD." #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:112 #, no-wrap msgid "Development Team: In Memoriam" msgstr "Команда разработчиков: Памяти ушедших" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:116 msgid "" "During the many years that the FreeBSD Project has been in existence, sadly, " "some of our developers have passed away. Here are some remembrances." msgstr "" "В течение многих лет существования проекта FreeBSD, к сожалению, некоторые " "из наших разработчиков ушли из жизни. Вот несколько воспоминаний." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:118 msgid "_In rough reverse chronological order of their passing:_" msgstr "_В приблизительном обратном хронологическом порядке их ухода:_" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:122 #, no-wrap msgid "Derived Software Contributors" msgstr "Участники разработки производного программного обеспечения" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:126 msgid "" "This software was originally derived from William F. Jolitz's 386BSD release " "0.1, though almost none of the original 386BSD specific code remains. This " "software has been essentially re-implemented from the 4.4BSD-Lite release " "provided by the Computer Science Research Group (CSRG) at the University of " "California, Berkeley and associated academic contributors." msgstr "" "Это программное обеспечение изначально было получено из релиза 386BSD 0.1 " "Уильяма Ф. Джолитца, хотя почти ни один из оригинальных фрагментов кода, " "специфичных для 386BSD, не сохранился. Данное программное обеспечение было " "практически полностью переработано на основе релиза 4.4BSD-Lite, " "предоставленного Исследовательской группой компьютерных наук (CSRG) " "Калифорнийского университета в Беркли и связанными с ней академическими " "участниками." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:128 msgid "" "There are also portions of NetBSD and OpenBSD that have been integrated into " "FreeBSD as well, and we would therefore like to thank all the contributors " "to NetBSD and OpenBSD for their work." msgstr "" "В FreeBSD также включены части NetBSD и OpenBSD, поэтому мы хотели бы " "поблагодарить всех участников разработки NetBSD и OpenBSD за их труд." #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:130 #, no-wrap msgid "Additional FreeBSD Contributors" msgstr "Дополнительные участники проекта FreeBSD" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:133 #: documentation/content/en/articles/contributors/_index.adoc:140 msgid "(in alphabetical order by first name):" msgstr "(в алфавитном порядке по имени):" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:137 #, no-wrap msgid "386BSD Patch Kit Patch Contributors" msgstr "Участники, внесшие вклад в набор исправлений 386BSD" #. type: Title == #: documentation/content/en/articles/contributors/_index.adoc:144 #, no-wrap msgid "Donors Gallery" msgstr "Галерея доноров" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:147 msgid "" "The FreeBSD Foundation thanks https://freebsdfoundation.org/our-donors/" "donors/[financial and in-kind donors]." msgstr "" "Фонд FreeBSD благодарит https://freebsdfoundation.org/our-donors/donors/[" "финансовых доноров и доноров оборудования]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:149 msgid "" "The https://www.freebsd.org/donations/[FreeBSD Donations Liaison] area " "includes a https://www.freebsd.org/donations/donors/[list of donated " "hardware]." msgstr "" "https://www.freebsd.org/donations/[FreeBSD Donations Liaison] включает " "https://www.freebsd.org/donations/donors/[список пожертвованного " "оборудования]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:151 msgid "The FreeBSD Project thanks all donors!" msgstr "Проект FreeBSD благодарит всех предоставивших помощь!" #. type: delimited block = 4 #: documentation/content/en/articles/contributors/_index.adoc:155 msgid "As of 2010, the section below was several years out-of-date." msgstr "" "По состоянию на 2010 год, приведённый ниже раздел уже несколько лет устарел." #. type: Title === #: documentation/content/en/articles/contributors/_index.adoc:157 #, no-wrap msgid "Contributors to the central server project" msgstr "Участники проекта центрального сервера" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:160 msgid "" "The following individuals and businesses made it possible for the FreeBSD " "Project to build a new central server machine, which has replaced `freefall." "FreeBSD.org` at one point, by donating the following items:" msgstr "" "Следующие частные лица и компании сделали возможным для проекта FreeBSD " "создание нового центрального серверного оборудования, которое в определённый " "момент заменило `freefall.FreeBSD.org`, пожертвовав следующие компоненты:" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:162 msgid "" "{mbarkah} and his employer, http://www.hemi.com/[Hemisphere Online], donated " "a _Pentium Pro (P6) 200MHz CPU_." msgstr "" "{mbarkah} и его работодатель, http://www.hemi.com/[Hemisphere Online], " "пожертвовали процессор _Pentium Pro (P6) 200 МГц_." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:163 msgid "" "http://www.asacomputers.com/[ASA Computers] donated a _Tyan 1662 " "motherboard_." msgstr "" "http://www.asacomputers.com/[ASA Computers] подарили _материнскую плату Tyan " "1662_." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:164 msgid "" "Joe McGuckin of http://www.via.net/[ViaNet " "Communications] donated a _Kingston ethernet controller_." msgstr "" "Джо МакГакин из http://www.via.net/[ViaNet " "Communications] пожертвовал _контроллер Ethernet от Kingston_." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:165 msgid "" "Jack O'Neill " "donated an _NCR 53C875 SCSI controller card_." msgstr "" "Джек О'Нил " "пожертвовал _SCSI-контроллер NCR 53C875_." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:166 msgid "" "Ulf Zimmermann of http://www." "Alameda.net/[Alameda Networks] donated _128MB of memory_, a _4 Gb disk drive " "and the case_." msgstr "" "Ульф Циммерманн из http://www." "Alameda.net/[Alameda Networks] пожертвовал _128 МБ памяти_, _4 ГБ жёсткого " "диска и корпус_." #. type: Title === #: documentation/content/en/articles/contributors/_index.adoc:167 #, no-wrap msgid "Direct funding" msgstr "Прямое финансирование" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:170 msgid "" "The following individuals and businesses have generously contributed direct " "funding to the project:" msgstr "" "Следующие частные лица и компании щедро внесли прямые финансовые вклады в " "проект:" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:172 msgid "" "Annelise Anderson ." msgstr "" "Annelise Anderson ." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:173 msgid "{dillon}." msgstr "{dillon}." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:174 msgid "http://www.bluemountain.com/[Blue Mountain Arts]." msgstr "http://www.bluemountain.com/[Blue Mountain Arts]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:175 msgid "http://www.epilogue.com/[Epilogue Technology Corporation]." msgstr "http://www.epilogue.com/[Epilogue Technology Corporation]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:176 msgid "{sef}." msgstr "{sef}." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:177 msgid "http://www.gta.com/[Global Technology Associates, Inc]." msgstr "http://www.gta.com/[Global Technology Associates, Inc]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:178 msgid "Don Scott Wilde." msgstr "Don Scott Wilde." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:179 msgid "" "Gianmarco Giovannelli ." msgstr "" "Gianmarco Giovannelli ." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:180 msgid "Josef C. Grosch ." msgstr "Josef C. Grosch ." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:181 msgid "Robert T. Morris." msgstr "Robert T. Morris." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:182 msgid "{chuckr}." msgstr "{chuckr}." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:183 msgid "" "Kenneth P. Stox " "of http://www.imagescape.com/[Imaginary Landscape, LLC.]." msgstr "" "Кеннет П. Стокс " "из http://www.imagescape.com/[Imaginary Landscape, LLC.]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:184 msgid "Dmitry S. Kohmanyuk ." msgstr "Dmitry S. Kohmanyuk ." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:185 msgid "" "http://www.cdrom.co.jp/[Laser5] of Japan (a portion of the profits from " "sales of their various FreeBSD CDROMs)." msgstr "" "http://www.cdrom.co.jp/[Laser5] из Японии (часть прибыли от продаж их " -"различных FreeBSD CDROM идет на поддержку проекта)." +"различных FreeBSD CDROM идёт на поддержку проекта)." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:186 msgid "" "http://www.mmjp.or.jp/fuki/[Fuki Shuppan Publishing Co.] donated a portion " "of their profits from _Hajimete no FreeBSD_ (FreeBSD, Getting started) to " "the FreeBSD and XFree86 projects." msgstr "" "http://www.mmjp.or.jp/fuki/[Fuki Shuppan Publishing Co.] пожертвовала часть " "прибыли от книги _Hajimete no FreeBSD_ (FreeBSD, начало работы) проектам " "FreeBSD и XFree86." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:187 msgid "" "http://www.ascii.co.jp/[ASCII Corp.] donated a portion of their profits from " "several FreeBSD-related books to the FreeBSD project." msgstr "" "http://www.ascii.co.jp/[ASCII Corp.] пожертвовала часть прибыли от " "нескольких книг, связанных с FreeBSD, проекту FreeBSD." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:188 msgid "" "http://www.yokogawa.co.jp/[Yokogawa Electric Corp] has generously donated " "significant funding to the FreeBSD project." msgstr "" "http://www.yokogawa.co.jp/[Yokogawa Electric Corp] щедро предоставила " "значительное финансирование проекту FreeBSD." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:189 msgid "http://www.buffnet.net/[BuffNET]." msgstr "http://www.buffnet.net/[BuffNET]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:190 msgid "http://www.pacificsolutions.com/[Pacific Solutions]." msgstr "http://www.pacificsolutions.com/[Pacific Solutions]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:191 msgid "" "http://www.siemens.de/[Siemens AG] via Andre Albsmeier ." msgstr "" "http://www.siemens.de/[Siemens AG] via Andre Albsmeier ." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:192 msgid "Chris Silva ." msgstr "Chris Silva ." #. type: Title === #: documentation/content/en/articles/contributors/_index.adoc:193 #, no-wrap msgid "Hardware contributors" msgstr "Участники разработки аппаратного обеспечения" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:196 msgid "" "The following individuals and businesses have generously contributed " "hardware for testing and device driver development/support:" msgstr "" "Следующие частные лица и компании любезно предоставили оборудование для " "тестирования и разработки/поддержки драйверов устройств:" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:198 msgid "" "BSDi for providing the Pentium P5-90 and 486/DX2-66 EISA/VL systems that are " "being used for our development work, to say nothing of the network access " "and other donations of hardware resources." msgstr "" "BSDi за предоставление систем Pentium P5-90 и 486/DX2-66 EISA/VL, которые " "используются в нашей разработке, не говоря уже о сетевом доступе и других " "пожертвованиях аппаратных ресурсов." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:199 msgid "" "http://www.compaq.com[Compaq] has donated a variety of Alpha systems to the " "FreeBSD Project. Among the many generous donations are 4 AlphaStation DS10s, " "an AlphaServer DS20, AlphaServer 2100s, an AlphaServer 4100, 8 500Mhz " "Personal Workstations, 4 433Mhz Personal Workstations, and more! These " "machines are used for release engineering, package building, SMP " "development, and general development on the Alpha architecture." msgstr "" "http://www.compaq.com[Compaq] пожертвовал FreeBSD Project разнообразные " "системы Alpha. Среди множества щедрых пожертвований — 4 AlphaStation DS10, " "AlphaServer DS20, AlphaServer 2100, AlphaServer 4100, 8 персональных рабочих " "станций с частотой 500 МГц, 4 персональные рабочие станции с частотой 433 " "МГц и многое другое! Эти машины используются для сборки релизов, создания " "пакетов, разработки SMP и общей разработки архитектуры Alpha." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:200 msgid "" "TRW Financial Systems, Inc. provided 130 PCs, three 68 GB file servers, " "twelve Ethernets, two routers and an ATM switch for debugging the diskless " "code" msgstr "" "TRW Financial Systems, Inc. предоставила 130 ПК, три файловых сервера по 68 " "ГБ, двенадцать сетей Ethernet, два маршрутизатора и коммутатор ATM для " "отладки кода бездисковой системы" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:201 msgid "" "Dermot McDonnell donated the Toshiba XM3401B CDROM drive currently used in " "_freefall_." msgstr "" "Дермот МакДоннелл предоставил привод CDROM Toshiba XM3401B, который в " "настоящее время используется в _freefall_." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:202 msgid "" "Chuck Robey contributed " "his floppy tape streamer for experimental work." msgstr "" "Чак Роби предоставил свой " "потоковый накопитель на гибких дисках для экспериментальной работы." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:203 msgid "" "Larry Altneu and {wilko}, provided " "Wangtek and Archive QIC-02 tape drives to improve the [.filename]#wt# driver." msgstr "" "Ларри Альтной и {wilko} предоставили " "стримеры Wangtek и Archive QIC-02 для улучшения драйвера [.filename]#wt#." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:204 msgid "" "Ernst Winter (http://berklix.org/ewinter/[Deceased]) contributed a 2.88 MB " "floppy drive to the project. This will hopefully increase the pressure for " "rewriting the floppy disk driver." msgstr "" "Эрнст Винтер (http://berklix.org/ewinter/[Умер]) предоставил проекту " "дисковод на 2,88 МБ. Надеемся, это усилит внимание к необходимости " "переписать драйвер для дискет." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:205 msgid "" "http://www.tekram.com/[Tekram Technologies] sent one each of their DC-390, " "DC-390U and DC-390F FAST and ULTRA SCSI host adapter cards for regression " "testing of the NCR and AMD drivers with their cards. They are also to be " "applauded for making driver sources for free operating systems available " "from their FTP server link:ftp://ftp.tekram.com/scsi/FreeBSD/[ftp://ftp." "tekram.com/scsi/FreeBSD/]." msgstr "" "http://www.tekram.com/[Tekram Technologies] предоставили по одному " "экземпляру своих SCSI-адаптеров DC-390, DC-390U и DC-390F FAST и ULTRA для " "регрессионного тестирования драйверов NCR и AMD с их картами. Также их стоит " "похвалить за предоставление исходных кодов драйверов для свободных " "операционных систем на их FTP-сервере link:ftp://ftp.tekram.com/scsi/FreeBSD/" "[ftp://ftp.tekram.com/scsi/FreeBSD/]." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:206 msgid "" "Larry M. Augustin contributed not only a Symbios Sym8751S SCSI card, but " "also a set of data books, including one about the forthcoming Sym53c895 chip " "with Ultra-2 and LVD support, and the latest programming manual with " "information on how to safely use the advanced features of the latest Symbios " "SCSI chips. Thanks a lot!" msgstr "" "Ларри М. Аугустин предоставил не только SCSI-карту Symbios Sym8751S, но и " "набор технической документации, включая руководство по предстоящему чипу " "Sym53c895 с поддержкой Ultra-2 и LVD, а также последнюю версию руководства " "по программированию с информацией о безопасном использовании расширенных " "функций новейших SCSI-чипов Symbios. Большое спасибо!" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:207 msgid "" "{kuku} donated an FX120 12 speed Mitsumi CDROM drive for IDE CDROM driver " "development." msgstr "" "{kuku} пожертвовал FX120 12-скоростной Mitsumi CD-ROM привод для разработки " "драйвера IDE CD-ROM." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:208 msgid "" "Mike Tancsa donated four various ATM " "PCI cards to help increase support of these cards as well as help support " "the development effort of the netatm ATM stack." msgstr "" "Mike Tancsa пожертвовал четыре " "различные PCI-карты ATM для расширения поддержки этих карт, а также для " "помощи в разработке стека netatm ATM." #. type: Title === #: documentation/content/en/articles/contributors/_index.adoc:209 #, no-wrap msgid "Special contributors" msgstr "Особые участники" #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:212 msgid "" "http://www.osd.bsdi.com/[BSDi] (formerly Walnut Creek CDROM) has donated " "almost more than we can say (see the 'About the FreeBSD Project' section of " "the extref:{handbook}[FreeBSD Handbook] for more details). In particular, we " "would like to thank them for the original hardware used for `freefall." "FreeBSD.org`, our primary development machine, and for `thud.FreeBSD.org`, a " "testing and build box. We are also indebted to them for funding various " "contributors over the years and providing us with unrestricted use of their " "T1 connection to the Internet." msgstr "" "http://www.osd.bsdi.com/[BSDi] (ранее Walnut Creek CDROM) пожертвовали " "больше, чем мы можем выразить (подробности см. в разделе 'О проекте FreeBSD' " "extref:{handbook}[FreeBSD Handbook]). В частности, мы хотели бы " "поблагодарить их за первоначальное оборудование, использованное для `freefall" ".FreeBSD.org`, нашей основной машины разработки, и для `thud.FreeBSD.org`, " "тестовой и сборочной системы. Мы также благодарны им за финансирование " "различных участников на протяжении многих лет и предоставление " "неограниченного доступа к их T1-подключению к Интернету." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:213 msgid "" "The http://www.interface-business.de/[interface business GmbH, Dresden] has " "been patiently supporting {joerg} who has often preferred FreeBSD work over " "paid work, and used to fall back to their (quite expensive) EUnet Internet " "connection whenever his private connection became too slow or flaky to work " "with it." msgstr "" "Компания http://www.interface-business.de/[interface business GmbH, Дрезден] " "терпеливо поддерживала {joerg}, который часто отдавал предпочтение работе с " "FreeBSD вместо оплачиваемой работы и использовал их (довольно дорогое) " "интернет-подключение EUnet, когда его личное соединение становилось слишком " "медленным или ненадёжным для работы." #. type: Plain text #: documentation/content/en/articles/contributors/_index.adoc:213 msgid "" "http://www.bsdi.com/[Berkeley Software Design, Inc.] has contributed their " "DOS emulator code to the remaining BSD world, which is used in the `doscmd` " "command." msgstr "" "http://www.bsdi.com/[Berkeley Software Design, Inc.] предоставила свой код " "эмулятора DOS для остального мира BSD, который используется в команде " "`doscmd`." diff --git a/documentation/content/ru/articles/contributors/contrib-develinmemoriam.adoc b/documentation/content/ru/articles/contributors/contrib-develinmemoriam.adoc index b4f77d7c65..4fbdf80ecb 100644 --- a/documentation/content/ru/articles/contributors/contrib-develinmemoriam.adoc +++ b/documentation/content/ru/articles/contributors/contrib-develinmemoriam.adoc @@ -1,81 +1,81 @@ * Майк Карелс (2016 - 2024; RIP 2024) + Майк Карелс, изначально аспирант по микробиологии в Калифорнийском университете в Беркли (UCB), проявил интерес к компьютерам в соседней лаборатории, что привело к полной смене его карьеры. В начале 1980-х он присоединился к Исследовательской группе компьютерных систем (CSRG) в UCB. Там его вклад стал ключевым в разработке и улучшении реализации TCP/UDP/IP в BSD Unix, включая API интерфейса сокетов — один из наиболее широко используемых интерфейсов программирования приложений в истории Интернета. + В течение следующих нескольких лет он продолжал помогать в подготовке выпусков Berkeley Software Distribution для 4.3BSD, 4.3BSD-Tahoe, 4.3BSD-Reno, Networking Release 1 и Networking Release 2. В это время он был одним из авторов книги "The Design and Implementation of the 4.3BSD Unix Operating System" — важного труда в области компьютеров и операционных систем, опубликованного в 1989 году. + После ухода из CSRG он стал одним из основателей BSD Incorporated (BSDi), одного из первых поставщиков программного обеспечения BSD Unix в исходных и бинарных форматах. Майк оставался верен своему делу, несмотря на многочисленные организационные изменения в Walnut Creek CDROM, Wind River Systems, Secure Computing, McAfee, Intel Security и Forcepoint. + В 1994 году, по случаю 25-летия Unix, ассоциация USENIX удостоила Майка включения в Колоду карт Unix — набор игральных карт с изображениями пионеров раннего сообщества Unix. Он значится как Семёрка пик. + Он также участвовал в проекте FreeBSD и внес значительный вклад в его развитие на протяжении многих лет, включая дополнения к подсистеме sysctl и фреймворку Mandatory Access Control (MAC), в итоге получив право на коммиты в src. После выхода на пенсию он активно помогал с управлением выпусками FreeBSD и был избран в состав основной команды незадолго до своей внезапной кончины по пути домой с конференции BSDCan 2024. Всего годом ранее он представил увлекательный ретроспективный доклад о своей работе с BSD на BSDCan 2023, который можно посмотреть на YouTube: https://www.youtube.com/watch?v=XSziyKlG1ws. + Майк запомнился как выдающийся инженер-программист, терпеливый, скромный и отзывчивый к тем, кому требовалась помощь. Он наслаждался музыкой, фотографией и природой, а также проводил время с семьёй. Страница памяти Майка доступна по адресу https://www.gearty-delmore.com/obituaries/michael-mike-karels. * Ханс Петтер Селаски (2010 - 2023; RIP 2023) + Сообщество FreeBSD вспоминает Ханса Петтера Селаски, который скончался в Лиллесанде, Норвегия, 23 июня 2023 года в возрасте 41 года. Ханс был невероятно талантливым и добрым человеком, внесшим множество ценных вкладов в FreeBSD. Он наиболее известен за переработку и поддержку стека USB и пакета webcamd, который обеспечивает современные телеконференции в FreeBSD. В последнее время он работал в Mellanox (ныне Nvidia), поддерживая их серию высокоскоростных сетевых карт ConnectX в FreeBSD. Работа Ханса включала значительный вклад в фреймворк TLS ядра, а также поддержку оффлоада отправки и приема kTLS на сетевых картах в драйвере mce(4). + Одним из примеров улучшения была его идея сортировки входящих TCP-пакетов с использованием предоставленных NIC идентификаторов потоков RSS, чтобы представить LRO все пакеты из одного TCP-соединения подряд. Эта идея была ключевой для возможности Netflix обслуживать 100 Гбит/с видеотрафика с одной машины. + Вне FreeBSD, у Ханса были увлечения музыкой и математикой. Он активно участвовал в жизни своей церкви и помогал команде, занимающейся звуком. Он был любящим и заботливым дядей для своих племянников и племянниц. Он любил животных, особенно своего кота Пумбу. + Более полная версия воспоминаний доступна по ссылке link:https://forums.freebsd.org/threads/in-memoriam-hans-petter-william-sirevag-selasky.89697/[на этой странице форума FreeBSD]. * Брюс Д. Эванс (1991 - 2019; RIP 2019) + Брюс был гигантом программирования, для которого FreeBSD стал домом. + До FreeBSD и Linux была Minix, игрушечная «unix», написанная Энди Таненбаумом, выпущенная в 1987 году, продававшаяся с полными исходниками на трёх дискетах за $99. + Брюс портировал Minix на i386 около 1989 года. + Линус Торвальдс использовал Minix/386 для разработки собственного ядра, и Брюс был первым, кого он поблагодарил в анонсе релиза. + Когда Билл Джолитц выпустил 386BSD 0.1 в 1992 году, Брюс был указан как участник. + Брюс был одним из основателей проекта FreeBSD и входил в состав core.0, но он никогда не был пристрастным, и на протяжении многих лет множество других проектов получали пользу от его патчей, советов и мудрости. + -Рецензии кода от Брюса были трех видов: "мягкие", "брюсифицированные" и "брюсификация", но они никогда не были личными: всегда речь шла только о коде, ошибках, небрежном мышлении, упущенном историческом контексте, неоднозначных стандартах — и о нарушениях style(9). +Рецензии кода от Брюса были трёх видов: "мягкие", "брюсифицированные" и "брюсификация", но они никогда не были личными: всегда речь шла только о коде, ошибках, небрежном мышлении, упущенном историческом контексте, неоднозначных стандартах — и о нарушениях style(9). + Поскольку Брюс провёл больше рецензий кода, чем кто-либо в истории проекта FreeBSD, журналы коммитов скрывают истинный масштаб его влияния, пока вы не обратите внимание на «Submitted by», «Reviewed by» и «Pointed out by». + Глухой на ухо, Брюс не посещал конференции. + Заметным исключением стал BSDcon в 1999 году в Калифорнии, где его коллеги по основной команде встретили его фразой "Мы недостойны!" в стиле "Мир Уэйна". + Двадцать лет спустя мы всё ещё не достойны. * Курт Лидл (2015 - 2019; RIP 2019) + Курт впервые познакомился с BSD, когда это был ещё проект в Университете Калифорнии в Беркли. Вскоре после того, как в Мэриленде стали доступны персонализированные номерные знаки, он получил «BSDWZRD». + Он начал вносить вклад в FreeBSD вскоре после создания проекта. Он стал коммиттером исходного кода FreeBSD в октябре 2015 года. + Наиболее известным проектом Курта в FreeBSD был man:blacklistd[8], который блокирует и освобождает порты по требованию для защиты от злоупотреблений типа DoS. Он также внес множество других исправлений ошибок и улучшений в DTrace, загрузчики и другие компоненты инфраструктуры FreeBSD. + Предыдущие работы включали игру XTank, авторство в RFC 2516 https://tools.ietf.org/html/rfc2516["Метод передачи PPP через Ethernet (PPPoE)"], а также доклад на конференции USENIX https://www.usenix.org/conference/usenix-winter-1994-technical-conference/drinking-firehose-multicast-usenet-news["Пить из пожарного шланга: Multicast USENET News"]. * Фрэнк Дурда IV (1995 - 2003; RIP 2018) + Фрэнк участвовал в проекте с самых ранних дней, внося код в линейку 1.x, прежде чем стал коммиттером. * Андрей А. Чернов (1993 - 2017; RIP 2017) + Вклад Андрея в FreeBSD невозможно переоценить. Участвуя в проекте долгое время, он затронул практически все области. * Юрген Лок (2006 - 2015; RIP 2015) + Юрген внес множество вкладов в FreeBSD, включая работу над libvirt, графическим стеком и QEMU. Вклад Юргена и его готовность помочь были высоко оценены людьми по всему миру. Эта работа продолжает улучшать жизнь тысяч людей каждый день. * {alexbl} (2006 - 2011; RIP 2012) + http://www.legacy.com/obituaries/sfgate/obituary.aspx?pid=159801494[Александр] был наиболее известен как крупный вкладчик в порты Python для FreeBSD, один из основателей {python}, а также своей работой над XMMS2. * {jb} (1997 - 2009; RIP 2009) + http://hub.opensolaris.org/bin/view/Community+Group+ogb/In+Memoriam[Джон] внес значительный вклад в FreeBSD, наиболее известным из которых является импорт кода man:dtrace[1]. Уникальное чувство юмора Джона и его прямолинейность либо раздражали окружающих, либо быстро делали его друзьями. В конце жизни он переехал в сельскую местность и пытался жить с минимальным воздействием на планету, продолжая при этом работать в сфере высоких технологий. * {jmz} (1994 - 2009; RIP 2009) + http://www.obs-besancon.fr/article.php3?id_article=323[Жан-Марк] был астрофизиком, внесшим значительный вклад в моделирование атмосфер как планет, так и комет в http://www.obs-besancon.fr/[Обсерватории Безансона] в Безансоне, Франция. Там он участвовал в разработке и создании триканального спектрометра Vega, который изучал комету Галлея. Он также долгое время был участником разработки FreeBSD. * {itojun} (1997 - 2001; RIP 2008) + Известный всем как http://astralblue.livejournal.com/350702.html[itojun], Дзюн-итиро Хагино был ведущим исследователем в http://www.kame.net/[проекте KAME], целью которого было предоставление технологий IPv6 и IPsec в свободно распространяемой форме. Большая часть этого кода была включена в FreeBSD. Без его усилий состояние IPv6 в Интернете было бы совсем другим. * {cg} (1999 - 2005; RIP 2005) + http://www.dbsi.org/cam/[Кэмерон] был уникальным человеком, который внёс вклад в проект, несмотря на серьёзные физические ограничения. Он отвечал за полную переработку нашей звуковой системы в конце 1990-х. Многие из тех, кто с ним переписывался, даже не догадывались о его ограниченной подвижности благодаря его жизнерадостному духу и готовности помогать другим. * {alane} (2002 - 2003; RIP 2003) + http://freebsd.kde.org/memoriam/alane.php[Алан] был одним из основных участников группы KDE на FreeBSD. Кроме того, он поддерживал множество других сложных и трудоёмких портов, таких как autoconf, CUPS и python. Путь Алана не был лёгким, но его страсть к FreeBSD и преданность высокому качеству программирования завоевали ему множество друзей. diff --git a/documentation/content/ru/articles/contributors/contrib-develinmemoriam.po b/documentation/content/ru/articles/contributors/contrib-develinmemoriam.po index 37389ac2af..865e9143fe 100644 --- a/documentation/content/ru/articles/contributors/contrib-develinmemoriam.po +++ b/documentation/content/ru/articles/contributors/contrib-develinmemoriam.po @@ -1,515 +1,515 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-03-28 20:31-0400\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\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: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:2 msgid "Mike Karels (2016 - 2024; RIP 2024)" msgstr "Майк Карелс (2016 - 2024; RIP 2024)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:6 msgid "" "Mike Karels, originally a microbiology Ph.D. degree candidate at University " "of California Berkeley (UCB), expressed interest in computers in a nearby " "lab which led him to change his entire career path. He eventually became " "involved in the Computer Systems Research Group (CSRG) at UCB in the early " "1980's. Once there, his contributions were instrumental in the development " "and improvement of the BSD Unix TCP/UDP/IP implementation, including the " "socket interface API, one of the most widely used application programming " "interfaces in the history of the Internet." msgstr "" "Майк Карелс, изначально аспирант по микробиологии в Калифорнийском " "университете в Беркли (UCB), проявил интерес к компьютерам в соседней " "лаборатории, что привело к полной смене его карьеры. В начале 1980-х он " "присоединился к Исследовательской группе компьютерных систем (CSRG) в UCB. " "Там его вклад стал ключевым в разработке и улучшении реализации TCP/UDP/IP в " "BSD Unix, включая API интерфейса сокетов — один из наиболее широко " "используемых интерфейсов программирования приложений в истории Интернета." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:9 msgid "" "Over the next several years, he continued to help prepare the Berkeley " "Software Distribution releases for 4.3BSD, 4.3BSD-Tahoe, 4.3BSD-Reno, " "Networking Release 1, and Networking Release 2. During this time, he was " "one of the authors of \"The Design and Implementation of the 4.3BSD Unix " "Operating System\", an important book in the field of computers and " "operating systems, published in 1989." msgstr "" "В течение следующих нескольких лет он продолжал помогать в подготовке " "выпусков Berkeley Software Distribution для 4.3BSD, 4.3BSD-Tahoe, 4.3BSD-" "Reno, Networking Release 1 и Networking Release 2. В это время он был одним " "из авторов книги \"The Design and Implementation of the 4.3BSD Unix " "Operating System\" — важного труда в области компьютеров и операционных " "систем, опубликованного в 1989 году." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:12 msgid "" "After leaving the CSRG, he was a founding member of BSD Incorporated (BSDi), " "one of the earliest purveyors of BSD Unix software in source and binary " "forms. Mike held steady through multiple organizational changes across " "Walnut Creek CDROM, Wind River Systems, Secure Computing, McAfee, Intel " "Security, and Forcepoint." msgstr "" "После ухода из CSRG он стал одним из основателей BSD Incorporated (BSDi), " "одного из первых поставщиков программного обеспечения BSD Unix в исходных и " "бинарных форматах. Майк оставался верен своему делу, несмотря на " "многочисленные организационные изменения в Walnut Creek CDROM, Wind River " "Systems, Secure Computing, McAfee, Intel Security и Forcepoint." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:16 msgid "" "In 1994, on the occasion of the 25th anniversary of Unix, the USENIX " "Association honored Mike with inclusion in the Unix Deck of Cards, a set of " "playing cards with the faces of pioneers in the early Unix community. He is " "the Seven of Spades." msgstr "" "В 1994 году, по случаю 25-летия Unix, ассоциация USENIX удостоила Майка " "включения в Колоду карт Unix — набор игральных карт с изображениями пионеров " "раннего сообщества Unix. Он значится как Семёрка пик." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:20 msgid "" "He also became involved with the FreeBSD Project and contributed greatly to " "it over the years including additions to the sysctl subsystem, and the " "Mandatory Access Control (MAC) framework, eventually earning a src commit " "bit. After his retirement, he stepped up to help with the release " "engineering of FreeBSD and was elected to serve on the core team shortly " "before his unexpected passing on his way home from the BSDCan 2024 " "Conference. Just the previous year, he gave a delightful retrospective talk " "on his work with BSD at BSDCan 2023 that can be viewed on YouTube: https://" "www.youtube.com/watch?v=XSziyKlG1ws." msgstr "" "Он также участвовал в проекте FreeBSD и внес значительный вклад в его " "развитие на протяжении многих лет, включая дополнения к подсистеме sysctl и " "фреймворку Mandatory Access Control (MAC), в итоге получив право на коммиты " "в src. После выхода на пенсию он активно помогал с управлением выпусками " "FreeBSD и был избран в состав основной команды незадолго до своей внезапной " "кончины по пути домой с конференции BSDCan 2024. Всего годом ранее он " "представил увлекательный ретроспективный доклад о своей работе с BSD на " "BSDCan 2023, который можно посмотреть на YouTube: https://www.youtube.com/" "watch?v=XSziyKlG1ws." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:24 msgid "" "Mike is remembered as a brilliant software engineer, patient, humble and " "approachable to those needing help. He enjoyed music, photography, and " "nature as well as spending time with his family. A remembrance page for " "Mike can be found at https://www.gearty-delmore.com/obituaries/michael-mike-" "karels." msgstr "" "Майк запомнился как выдающийся инженер-программист, терпеливый, скромный и " "отзывчивый к тем, кому требовалась помощь. Он наслаждался музыкой, " "фотографией и природой, а также проводил время с семьёй. Страница памяти " "Майка доступна по адресу https://www.gearty-delmore.com/obituaries/michael-" "mike-karels." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:25 msgid "Hans Petter Selasky (2010 - 2023; RIP 2023)" msgstr "Ханс Петтер Селаски (2010 - 2023; RIP 2023)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:31 msgid "" "The FreeBSD community remembers Hans Petter Selasky who passed away in " "Lillesand, Norway on June 23, 2023 at the age of 41. Hans was an incredibly " "brilliant and kind person, and made many valuable contributions to FreeBSD. " "He was best known for re-writing and maintaining the USB stack and the " "webcamd package which enables modern teleconferencing on FreeBSD. Most " "recently, he worked for Mellanox (now Nvidia) to support their ConnectX " "series of high speed NICs on FreeBSD. Hans’s work included major " "contributions to the kernel TLS framework, as well as support for NIC kTLS " "send and receive offload in the mce(4) driver." msgstr "" "Сообщество FreeBSD вспоминает Ханса Петтера Селаски, который скончался в " "Лиллесанде, Норвегия, 23 июня 2023 года в возрасте 41 года. Ханс был " "невероятно талантливым и добрым человеком, внесшим множество ценных вкладов " "в FreeBSD. Он наиболее известен за переработку и поддержку стека USB и " "пакета webcamd, который обеспечивает современные телеконференции в FreeBSD. " "В последнее время он работал в Mellanox (ныне Nvidia), поддерживая их серию " "высокоскоростных сетевых карт ConnectX в FreeBSD. Работа Ханса включала " "значительный вклад в фреймворк TLS ядра, а также поддержку оффлоада отправки " "и приема kTLS на сетевых картах в драйвере mce(4)." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:34 msgid "" "One example improvement was his idea to sort incoming TCP packets using the " "NIC provided RSS flow identifiers in order to present LRO with all packets " "from the same TCP connection back to back. This idea was crucial to " "Netflix's ability to serve 100Gb/s of video traffic from a single machine." msgstr "" "Одним из примеров улучшения была его идея сортировки входящих TCP-пакетов с " "использованием предоставленных NIC идентификаторов потоков RSS, чтобы " "представить LRO все пакеты из одного TCP-соединения подряд. Эта идея была " "ключевой для возможности Netflix обслуживать 100 Гбит/с видеотрафика с одной " "машины." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:39 msgid "" "Outside of FreeBSD, Hans’s hobbies included music and mathematics. He was " "active in his church, and contributed to its sound team. He was a loving " "and dedicated uncle to his nieces and nephews. He loved animals, especially " "his cat Pumba." msgstr "" "Вне FreeBSD, у Ханса были увлечения музыкой и математикой. Он активно " "участвовал в жизни своей церкви и помогал команде, занимающейся звуком. Он " "был любящим и заботливым дядей для своих племянников и племянниц. Он любил " "животных, особенно своего кота Пумбу." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:41 msgid "" "A longer edition of this remembrance can be found on link:https://" "forums.freebsd.org/threads/in-memoriam-hans-petter-william-sirevag-" "selasky.89697/[this FreeBSD Forum page]." msgstr "" "Более полная версия воспоминаний доступна по ссылке link:https://forums." "freebsd.org/threads/in-memoriam-hans-petter-william-sirevag-selasky.89697/[" "на этой странице форума FreeBSD]." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:42 msgid "Bruce D. Evans (1991 - 2019; RIP 2019)" msgstr "Брюс Д. Эванс (1991 - 2019; RIP 2019)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:44 msgid "Bruce was a programming giant who made FreeBSD his home." msgstr "Брюс был гигантом программирования, для которого FreeBSD стал домом." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:46 msgid "" "Back before FreeBSD and Linux there was Minix, a toy \"unix\" written by " "Andy Tannenbaum, released in 1987, sold with complete sources on three " "floppy disks, for $99." msgstr "" "До FreeBSD и Linux была Minix, игрушечная «unix», написанная Энди " "Таненбаумом, выпущенная в 1987 году, продававшаяся с полными исходниками на " "трёх дискетах за $99." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:48 msgid "Bruce ported Minix to the i386 around 1989." msgstr "Брюс портировал Minix на i386 около 1989 года." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:50 msgid "" "Linus Torvalds used Minix/386 to develop his own kernel, and Bruce was the " "first person he thanked in the release-announcement." msgstr "" "Линус Торвальдс использовал Minix/386 для разработки собственного ядра, и " "Брюс был первым, кого он поблагодарил в анонсе релиза." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:52 msgid "" "When Bill Jolitz released 386BSD 0.1 in 1992, Bruce was listed as a " "contributor." msgstr "" "Когда Билл Джолитц выпустил 386BSD 0.1 в 1992 году, Брюс был указан как " "участник." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:54 msgid "" "Bruce co-founded the FreeBSD project, and served on core.0, but he was never " "partisan, and over the years many other projects have benefitted from his " "patches, advice and wisdom." msgstr "" "Брюс был одним из основателей проекта FreeBSD и входил в состав core.0, но " "он никогда не был пристрастным, и на протяжении многих лет множество других " "проектов получали пользу от его патчей, советов и мудрости." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:56 msgid "" "Code reviews from Bruce came in three flavours, \"mild\", \"brucified\" and " "\"brucifiction\", but they were never personal: It was always only about the " "code, the mistakes, the sloppy thinking, the missing historical context, the " "ambiguous standards - and the style(9) transgressions." msgstr "" -"Рецензии кода от Брюса были трех видов: \"мягкие\", \"брюсифицированные\" и " +"Рецензии кода от Брюса были трёх видов: \"мягкие\", \"брюсифицированные\" и " "\"брюсификация\", но они никогда не были личными: всегда речь шла только о " "коде, ошибках, небрежном мышлении, упущенном историческом контексте, " "неоднозначных стандартах — и о нарушениях style(9)." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:58 msgid "" "As Bruce gave more code reviews than anybody else in the history of the " "FreeBSD project, the commit logs hide the true scale of his impact until you " "pay attention to \"Submitted by\", \"Reviewed by\" and \"Pointed out by\"." msgstr "" "Поскольку Брюс провёл больше рецензий кода, чем кто-либо в истории проекта " "FreeBSD, журналы коммитов скрывают истинный масштаб его влияния, пока вы не " "обратите внимание на «Submitted by», «Reviewed by» и «Pointed out by»." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:60 msgid "Being hard of hearing, Bruce did not attend conferences." msgstr "Глухой на ухо, Брюс не посещал конференции." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:62 msgid "" "The notable exception was the 1999 BSDcon in California, where his core team " "colleagues greeted him with \"We're not worthy!\" in Wayne's World fashion." msgstr "" "Заметным исключением стал BSDcon в 1999 году в Калифорнии, где его коллеги " "по основной команде встретили его фразой \"Мы недостойны!\" в стиле \"Мир " "Уэйна\"." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:64 msgid "Twenty years later we're still not." msgstr "Двадцать лет спустя мы всё ещё не достойны." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:65 msgid "Kurt Lidl (2015 - 2019; RIP 2019)" msgstr "Курт Лидл (2015 - 2019; RIP 2019)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:67 msgid "" "Kurt first got involved with BSD while it was still a project at the " "University of California at Berkeley. Shortly after personalized license " "plates became available in Maryland, he got \"BSDWZRD\"." msgstr "" "Курт впервые познакомился с BSD, когда это был ещё проект в Университете " "Калифорнии в Беркли. Вскоре после того, как в Мэриленде стали доступны " "персонализированные номерные знаки, он получил «BSDWZRD»." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:69 msgid "" "He began contributing to FreeBSD shortly after the conception of the " "project. He became a FreeBSD source committer in October 2015." msgstr "" "Он начал вносить вклад в FreeBSD вскоре после создания проекта. Он стал " "коммиттером исходного кода FreeBSD в октябре 2015 года." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:71 msgid "" "Kurt's most well known FreeBSD project was man:blacklistd[8] which blocks " "and releases ports on demand to avoid DoS abuse. He has also made many other " "bug fixes and enhancements to DTrace, boot loaders, and other bits and " "pieces of the FreeBSD infrastructure." msgstr "" "Наиболее известным проектом Курта в FreeBSD был man:blacklistd[8], который " "блокирует и освобождает порты по требованию для защиты от злоупотреблений " "типа DoS. Он также внес множество других исправлений ошибок и улучшений в " "DTrace, загрузчики и другие компоненты инфраструктуры FreeBSD." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:73 msgid "" "Earlier work included the game XTank, an author on RFC 2516 https://" "tools.ietf.org/html/rfc2516[\"A Method for Transmitting PPP Over Ethernet " "(PPPoE)\"], and the USENIX paper https://www.usenix.org/conference/usenix-" "winter-1994-technical-conference/drinking-firehose-multicast-usenet-" "news[\"Drinking from the Firehose: Multicast USENET News\"]." msgstr "" "Предыдущие работы включали игру XTank, авторство в RFC 2516 https://tools." "ietf.org/html/rfc2516[\"Метод передачи PPP через Ethernet (PPPoE)\"], а " "также доклад на конференции USENIX https://www.usenix.org/conference/" "usenix-winter-1994-technical-conference/drinking-firehose-multicast-usenet-" "news[\"Пить из пожарного шланга: Multicast USENET News\"]." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:74 msgid "Frank Durda IV (1995 - 2003; RIP 2018)" msgstr "Фрэнк Дурда IV (1995 - 2003; RIP 2018)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:76 msgid "" "Frank had been around the project since the very early days, contributing " "code to the 1.x line before becoming a committer." msgstr "" "Фрэнк участвовал в проекте с самых ранних дней, внося код в линейку 1.x, " "прежде чем стал коммиттером." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:77 msgid "Andrey A. Chernov (1993 - 2017; RIP 2017)" msgstr "Андрей А. Чернов (1993 - 2017; RIP 2017)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:79 msgid "" "Andrey contributions to FreeBSD can not be overstated. Having been involved " "for a long there is hardly an area which he did not touch." msgstr "" "Вклад Андрея в FreeBSD невозможно переоценить. Участвуя в проекте долгое " "время, он затронул практически все области." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:80 msgid "Jürgen Lock (2006 - 2015; RIP 2015)" msgstr "Юрген Лок (2006 - 2015; RIP 2015)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:82 msgid "" "Jürgen made a number of contributions to FreeBSD, including work on libvirt, " "the graphics stack, and QEMU. Jürgen's contributions and helpfulness were " "appreciated by people around the world. That work continues to improve the " "lives of thousands every day." msgstr "" "Юрген внес множество вкладов в FreeBSD, включая работу над libvirt, " "графическим стеком и QEMU. Вклад Юргена и его готовность помочь были высоко " "оценены людьми по всему миру. Эта работа продолжает улучшать жизнь тысяч " "людей каждый день." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:83 msgid "{alexbl} (2006 - 2011; RIP 2012)" msgstr "{alexbl} (2006 - 2011; RIP 2012)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:85 msgid "" "http://www.legacy.com/obituaries/sfgate/obituary.aspx?" "pid=159801494[Alexander] was best known as a major contributor to FreeBSD's " "Python ports and a founding member of {python} as well as his work on XMMS2." msgstr "" "http://www.legacy.com/obituaries/sfgate/obituary." "aspx?pid=159801494[Александр] был наиболее известен как крупный вкладчик в " "порты Python для FreeBSD, один из основателей {python}, а также своей " "работой над XMMS2." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:86 msgid "{jb} (1997 - 2009; RIP 2009)" msgstr "{jb} (1997 - 2009; RIP 2009)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:88 msgid "" "http://hub.opensolaris.org/bin/view/Community+Group+ogb/In+Memoriam[John] " "made major contributions to FreeBSD, the best known of which is the import " "of the man:dtrace[1] code. John's unique sense of humor and plain-spokenness " "either ruffled feathers or made him quick friends. At the end of his life, " "he had moved to a rural area and was attempting to live with as minimal " "impact to the planet as possible, while at the same time still working in " "the high-tech area." msgstr "" "http://hub.opensolaris.org/bin/view/Community+Group+ogb/In+Memoriam[Джон] " "внес значительный вклад в FreeBSD, наиболее известным из которых является " "импорт кода man:dtrace[1]. Уникальное чувство юмора Джона и его " "прямолинейность либо раздражали окружающих, либо быстро делали его друзьями. " "В конце жизни он переехал в сельскую местность и пытался жить с минимальным " "воздействием на планету, продолжая при этом работать в сфере высоких " "технологий." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:89 msgid "{jmz} (1994 - 2009; RIP 2009)" msgstr "{jmz} (1994 - 2009; RIP 2009)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:91 msgid "" "http://www.obs-besancon.fr/article.php3?id_article=323[Jean-Marc] was an " "astrophysicist who made important contributions to the modeling of the " "atmospheres of both planets and comets at http://www.obs-besancon.fr/" "[l'Observatoire de Besançon] in Besançon, France. While there, he " "participated in the conception and construction of the Vega tricanal " "spectrometer that studied Halley's Comet. He had also been a long-time " "contributor to FreeBSD." msgstr "" "http://www.obs-besancon.fr/article.php3?id_article=323[Жан-Марк] был " "астрофизиком, внесшим значительный вклад в моделирование атмосфер как " "планет, так и комет в http://www.obs-besancon.fr/[Обсерватории Безансона] в " "Безансоне, Франция. Там он участвовал в разработке и создании триканального " "спектрометра Vega, который изучал комету Галлея. Он также долгое время был " "участником разработки FreeBSD." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:92 msgid "{itojun} (1997 - 2001; RIP 2008)" msgstr "{itojun} (1997 - 2001; RIP 2008)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:94 msgid "" "Known to everyone as http://astralblue.livejournal.com/350702.html[itojun], " "Jun-ichiro Hagino was a core researcher at the http://www.kame.net/[KAME " "Project], which aimed to provide IPv6 and IPsec technology in freely " "redistributable form. Much of this code was incorporated into FreeBSD. " "Without his efforts, the state of IPv6 on the Internet would be much " "different." msgstr "" "Известный всем как http://astralblue.livejournal.com/350702.html[itojun], " "Дзюн-итиро Хагино был ведущим исследователем в http://www.kame.net/[проекте " "KAME], целью которого было предоставление технологий IPv6 и IPsec в свободно " "распространяемой форме. Большая часть этого кода была включена в FreeBSD. " "Без его усилий состояние IPv6 в Интернете было бы совсем другим." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:95 msgid "{cg} (1999 - 2005; RIP 2005)" msgstr "{cg} (1999 - 2005; RIP 2005)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:97 msgid "" "http://www.dbsi.org/cam/[Cameron] was a unique individual who contributed to " "the project despite serious physical disabilities. He was responsible for a " "complete rewrite of our sound system during the late 1990s. Many of those " "who corresponded with him had no idea of his limited mobility, due to his " "cheerful spirit and willingness to help others." msgstr "" "http://www.dbsi.org/cam/[Кэмерон] был уникальным человеком, который внёс " "вклад в проект, несмотря на серьёзные физические ограничения. Он отвечал за " "полную переработку нашей звуковой системы в конце 1990-х. Многие из тех, кто " "с ним переписывался, даже не догадывались о его ограниченной подвижности " "благодаря его жизнерадостному духу и готовности помогать другим." #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:98 msgid "{alane} (2002 - 2003; RIP 2003)" msgstr "{alane} (2002 - 2003; RIP 2003)" #. type: Plain text #: documentation/content/en/articles/contributors/contrib-develinmemoriam.adoc:99 msgid "" "http://freebsd.kde.org/memoriam/alane.php[Alan] was a major contributor to " "the KDE on FreeBSD group. In addition, he maintained many other difficult " "and time-consuming ports such as autoconf, CUPS, and python. Alan's path was " "not an easy one but his passion for FreeBSD, and dedication to programming " "excellence, won him many friends." msgstr "" "http://freebsd.kde.org/memoriam/alane.php[Алан] был одним из основных " "участников группы KDE на FreeBSD. Кроме того, он поддерживал множество " "других сложных и трудоёмких портов, таких как autoconf, CUPS и python. Путь " "Алана не был лёгким, но его страсть к FreeBSD и преданность высокому " "качеству программирования завоевали ему множество друзей." diff --git a/documentation/content/ru/articles/cups/_index.adoc b/documentation/content/ru/articles/cups/_index.adoc index 1eaaabdd9d..d411f0903b 100644 --- a/documentation/content/ru/articles/cups/_index.adoc +++ b/documentation/content/ru/articles/cups/_index.adoc @@ -1,253 +1,253 @@ --- authors: - author: 'Chess Griffin' email: chess@chessgriffin.com description: 'Как установить и использовать CUPS в FreeBSD' tags: ["CUPS", "FreeBSD", "Guide", "configuration", "introduction"] -title: 'Универсальная Система Печати Unix на FreeBSD' +title: 'Универсальная система печати Unix на FreeBSD' trademarks: ["freebsd", "general"] --- -= Универсальная Система Печати Unix на FreeBSD += Универсальная система печати Unix на FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/cups/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Эта статья посвящена конфигурированию Универсальной Системы Печати UNIX (CUPS) на FreeBSD. ''' toc::[] [[printing-cups]] -== Знакомимся с Универсальной Системой Печати UNIX (CUPS) +== Знакомимся с универсальной системой печати UNIX (CUPS) -Универсальная Система Печати UNIX (Common Unix Printing System, или сокращенно CUPS), предоставляет переносимую среду печати для UNIX(R) и UNIX(R)-подобных операционных систем. Она была разработана компанией Easy Software Products, чтобы предоставить стандартное решение в печати для всех разработчиков и пользователей UNIX(R). +Универсальная система печати UNIX (Common Unix Printing System, или сокращенно CUPS), предоставляет переносимую среду печати для UNIX(R) и UNIX(R)-подобных операционных систем. Она была разработана компанией Easy Software Products, чтобы предоставить стандартное решение в печати для всех разработчиков и пользователей UNIX(R). -Универсальная Система Печати UNIX использует протокол межсетевой печати (Internet Printing Protocol, IPP) как основу для управления заданиями на печать и очередями. Также частично поддерживаются следующие протоколы: LPD, SMB и AppSocket (также известный как JetDirect). CUPS дает возможность обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать в UNIX(R) общепринятые традиции печати. В результате CUPS идеально подходит для совместного использования принтеров в смешанной среде из FreeBSD, Linux(R), Mac OS(R) X или Windows(R). +Универсальная система печати UNIX использует протокол межсетевой печати (Internet Printing Protocol, IPP) как основу для управления заданиями на печать и очередями. Также частично поддерживаются следующие протоколы: LPD, SMB и AppSocket (также известный как JetDirect). CUPS даёт возможность обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать в UNIX(R) общепринятые традиции печати. В результате CUPS идеально подходит для совместного использования принтеров в смешанной среде из FreeBSD, Linux(R), Mac OS(R) X или Windows(R). -Официальный сайт Универсальной Системы Печати UNIX - http://www.cups.org/[http://www.cups.org/]. +Официальный сайт универсальной системы печати UNIX - http://www.cups.org/[http://www.cups.org/]. [[printing-cups-install]] == Установка сервера печати CUPS Для установки CUPS используя пакет, запустите на выполнение такую команду: [source, shell] .... # pkg install cups .... Другие необязательные, но рекомендуемые к установке пакеты это package:print/gutenprint-cups[] и package:print/hplip[], каждый из которых добавляет драйвера и утилиты для разнообразных принтеров. После установки файлы конфигурации CUPS могут быть найдены в каталоге [.filename]#/usr/local/etc/cups#. [[printing-cups-configuring-server]] == Настройка сервера печати CUPS Чтобы настроить сервер CUPS необходимо отредактировать несколько конфигурационных файлов. Для начала создайте или исправьте файл [.filename]#/etc/devfs.rules# и добавьте следующую информацию для того, чтобы установить соответствующие права на все потенциальные файлы устройств принтеров и связать принтеры с группой пользователей `cups`: [.programlisting] .... [system=10] add path 'unlpt*' mode 0660 group cups add path 'ulpt*' mode 0660 group cups add path 'lpt*' mode 0660 group cups add path 'usb/X.Y.Z' mode 0660 group cups .... [NOTE] ==== Замените _X_, _Y_ и _Z_ номерами соответствующего принтеру целевого устройства USB, отображаемого в каталоге [.filename]#/dev/usb#. Чтобы найти требуемые значения, просмотрите вывод man:dmesg[8] и найдите связанное с вашим принтером имя специального устройства [.filename]#ugenX.Y#, последнее будет символической ссылкой на искомое устройство в каталоге [.filename]#/dev/usb#. ==== Затем, добавьте следующие две записи в [.filename]#/etc/rc.conf#: [.programlisting] .... cupsd_enable="YES" devfs_system_ruleset="system" .... Эти две записи будут запускать сервер печати CUPS во время загрузки системы и применять локальное правило devfs, созданное выше. Для того, чтобы печать CUPS стала доступна для некоторых Microsoft(R) Windows(R) клиентов, необходимо раскомментировать следующую запись в [.filename]#/usr/local/etc/cups/mime.types# и [.filename]#/usr/local/etc/cups/mime.convs#: [.programlisting] .... application/octet-stream .... По окончанию внесения изменений службы man:devfs[8] и CUPS необходимо перезапустить, для чего перезагрузите операционную систему или выполните от пользователя `root` следующие две команды: [source, shell] .... # service devfs restart # service cupsd restart .... [[printing-cups-configuring-printers]] == Настройка принтеров на сервере печати CUPS После того, как система CUPS была установлена и сконфигурирована, системный администратор может начать конфигурирование локальных принтеров, подключенных к серверу печати CUPS. Эта часть процесса очень похожа, если не идентична настройке принтеров CUPS в других UNIX(R)-подобных операционных системах, таких как дистрибутивы Linux(R). Основным способом управления и администрирования сервера CUPS является веб-интерфейс, на который можно попасть запустив веб-браузер и набрав http://localhost:631[http://localhost:631] в его адресной строке. Если сервер CUPS находится на другой машине в сети, замените `localhost` на IP адрес сервера. Веб-интерфейс CUPS достаточно очевиден, там есть разделы для управления принтерами и заданиями на печать, авторизацией пользователей и т.п. Кроме того, в правой части страницы администрирования есть несколько флажков (check-box), дающих удобный доступ к часто меняемым установкам, таким как разрешение публичного доступа к подключенным к системе принтерам, предоставление удаленного управления сервером CUPS, изменение уровня доступа пользователей к принтерам и их заданиям на печать. Добавление принтера в общем такое же простое, как нажатие "Add Printer" на странице администрирования веб-интерфейса сервера CUPS или как нажатие одной из кнопок "New Printers Found" на той же странице администрирования. Когда перед вами предстанет выпадающий список "Device", просто выберите требуемый локально подключенный принтер, а дальше следуйте подсказкам интерфейса. В случае если были установлены порты или пакеты package:print/gutenprint-cups[] или package:print/hplip[], как указывалось выше, дополнительные драйвера печати будут доступны на последующих страницах, что может обеспечить большую надёжность и расширенные возможности. [[printing-cups-clients]] == Конфигурирование клиентов CUPS После того, как сервер CUPS был настроен, принтеры добавлены и сделаны доступными в сети, следующий шаг - это настройка клиентов или машин, которые будут иметь доступ к серверу CUPS. Если у вас единственный настольный компьютер, который работает одновременно и сервером и клиентом, то в большинстве этой информации вы не нуждаетесь. [[printing-cups-clients-unix]] === Клиенты UNIX(R) На UNIX(R) клиентах также потребуется установить CUPS. После установки системы печати на клиенте, CUPS-принтеры, присутствующие в сети, чаще всего автоматически находятся менеджерами принтеров разных графических оболочек, таких как GNOME или KDE. В качестве альтернативы, вы можете воспользоваться веб-интерфейсом CUPS на клиентской машине по адресу http://localhost:631[http://localhost:631] и на странице администрирования выбрать "Add Printer". Когда перед вами предстанет выпадающий список "Device", просто выберите сетевой CUPS принтер, если он был обнаружен автоматически, или выберите `ipp` или `http` и введите IPP или HTTP адрес (URI) сетевого CUPS принтера: [.programlisting] .... ipp://server-name-or-ip/printers/printername .... [.programlisting] .... http://server-name-or-ip:631/printers/printername .... Если CUPS клиент не находит в сети принтеры, доступные через сервер CUPS, то иногда помогает создание или изменение файла [.filename]#/usr/local/etc/cups/client.conf# с добавлением единственной записи, подобной следующей: [.programlisting] .... ServerName server-ip .... В этом случае _server-ip_ необходимо заменить на IP адрес сервера CUPS в сети. [[printing-cups-clients-windows]] === Клиенты Windows(R) Версии Windows(R), предшествующие XP, не имели встроенной поддержки протокола IPP. Однако Windows(R) XP и более поздние версии уже обладают такой возможностью. Следовательно, добавить CUPS принтер в этих версиях Windows(R) довольно просто. В большинстве случаев, администратору Windows(R) потребуется запустить мастера установки принтера (`Add Printer`) выбрать сетевой принтер (`Network Printer`), а затем ввести URI следующего формата: [.programlisting] .... http://server-name-or-ip:631/printers/printername .... Если используется версия Windows(R) без поддержки протокола IPP, то общим случаем подключения к CUPS-принтеру будет совместное использование CUPS и package:net/samba3[]. Описание этой возможности выходит за рамки данной статьи. [[printing-cups-troubleshooting]] == Устранение неполадок с CUPS Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды проверьте права доступа в man:devfs[8] (сверьтесь с уже описанными выше). Затем, проверьте реальные права устройств, созданных в файловой системе. Также бывает полезным удостовериться, что ваш пользователь входит в группу `cups`. Если у вас складывается впечатление, что флажки прав доступа на странице администрирования веб-интерфейса CUPS не работают, то иным решением может быть резервное копирование конфигурационного файла [.filename]#/usr/local/etc/cups/cupsd.conf# и редактирование разных опций конфигурации с подбором их комбинаций. Ниже приведено содержимое тестового файла конфигурации [.filename]#/usr/local/etc/cups/cupsd.conf#. Пожалуйста, обратите внимание на то, что безопасность в этом примере [.filename]#cupsd.conf# была пожертвована в угоду простоте настройки; как только администратор успешно подсоединится к серверу CUPS и сконфигурирует клиентов, рекомендуется пересмотреть данную конфигурацию и добавить разграничение доступа. [.programlisting] .... # Log general information in error_log - change "info" to "debug" for # troubleshooting... LogLevel info # Administrator user group... SystemGroup wheel # Listen for connections on Port 631. Port 631 #Listen localhost:631 Listen /var/run/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny #BrowseAllow @LOCAL BrowseAllow 192.168.1.* # change to local LAN settings BrowseAddress 192.168.1.* # change to local LAN settings # Default authentication type, when authentication is required... DefaultAuthType Basic DefaultEncryption Never # comment this line to allow encryption # Allow access to the server from any machine on the LAN Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings # Allow access to the admin pages from any machine on the LAN #Encryption Required Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings # Allow access to configuration files from any machine on the LAN AuthType Basic Require user @SYSTEM Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings # Set the default printer/job policies... # Job-related operations must be done by the owner or an administrator... Require user @OWNER @SYSTEM Order deny,allow # All administration operations require an administrator to authenticate... AuthType Basic Require user @SYSTEM Order deny,allow # Only the owner or an administrator can cancel or authenticate a job... Require user @OWNER @SYSTEM Order deny,allow Order deny,allow .... diff --git a/documentation/content/ru/articles/cups/_index.po b/documentation/content/ru/articles/cups/_index.po index ab61fe6aeb..c2fa2b15fe 100644 --- a/documentation/content/ru/articles/cups/_index.po +++ b/documentation/content/ru/articles/cups/_index.po @@ -1,703 +1,703 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2023-05-21 14:43-0300\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\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: YAML Front Matter: description #: documentation/content/en/articles/cups/_index.adoc:1 #, no-wrap msgid "How to install and use CUPS on FreeBSD" msgstr "Как установить и использовать CUPS в FreeBSD" #. type: Title = #: documentation/content/en/articles/cups/_index.adoc:1 #: documentation/content/en/articles/cups/_index.adoc:11 #, no-wrap msgid "CUPS on FreeBSD" -msgstr "Универсальная Система Печати Unix на FreeBSD" +msgstr "Универсальная система печати Unix на FreeBSD" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:44 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:46 msgid "An article about configuring CUPS on FreeBSD." msgstr "" "Эта статья посвящена конфигурированию Универсальной Системы Печати UNIX " "(CUPS) на FreeBSD." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:48 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:52 #, no-wrap msgid "An Introduction to the Common Unix Printing System (CUPS)" -msgstr "Знакомимся с Универсальной Системой Печати UNIX (CUPS)" +msgstr "Знакомимся с универсальной системой печати UNIX (CUPS)" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:56 msgid "" "CUPS, the Common UNIX Printing System, provides a portable printing layer " "for UNIX(R)-based operating systems. It has been developed by Easy Software " "Products to promote a standard printing solution for all UNIX(R) vendors and " "users." msgstr "" -"Универсальная Система Печати UNIX (Common Unix Printing System, или " +"Универсальная система печати UNIX (Common Unix Printing System, или " "сокращенно CUPS), предоставляет переносимую среду печати для UNIX(R) и " "UNIX(R)-подобных операционных систем. Она была разработана компанией Easy " "Software Products, чтобы предоставить стандартное решение в печати для всех " "разработчиков и пользователей UNIX(R)." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:61 msgid "" "CUPS uses the Internet Printing Protocol (IPP) as the basis for managing " "print jobs and queues. The Line Printer Daemon (LPD), Server Message Block " "(SMB), and AppSocket (aka JetDirect) protocols are also supported with " "reduced functionality. CUPS adds network printer browsing and PostScript " "Printer Description (PPD) based printing options to support real-world " "printing under UNIX(R). As a result, CUPS is ideally-suited for sharing and " "accessing printers in mixed environments of FreeBSD, Linux(R), Mac OS(R) X, " "or Windows(R)." msgstr "" -"Универсальная Система Печати UNIX использует протокол межсетевой печати (" +"Универсальная система печати UNIX использует протокол межсетевой печати (" "Internet Printing Protocol, IPP) как основу для управления заданиями на " "печать и очередями. Также частично поддерживаются следующие протоколы: LPD, " -"SMB и AppSocket (также известный как JetDirect). CUPS дает возможность " +"SMB и AppSocket (также известный как JetDirect). CUPS даёт возможность " "обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт " "Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать " "в UNIX(R) общепринятые традиции печати. В результате CUPS идеально подходит " "для совместного использования принтеров в смешанной среде из FreeBSD, " "Linux(R), Mac OS(R) X или Windows(R)." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:63 msgid "The main site for CUPS is http://www.cups.org/[http://www.cups.org/]." msgstr "" -"Официальный сайт Универсальной Системы Печати UNIX - http://www.cups.org/" +"Официальный сайт универсальной системы печати UNIX - http://www.cups.org/" "[http://www.cups.org/]." #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:65 #, no-wrap msgid "Installing the CUPS Print Server" msgstr "Установка сервера печати CUPS" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:68 msgid "" "To install CUPS using a precompiled binary, issue the following command from " "a root terminal:" msgstr "" "Для установки CUPS используя пакет, запустите на выполнение такую команду:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:72 #, no-wrap msgid "# pkg install cups\n" msgstr "# pkg install cups\n" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:76 msgid "" "Other optional, but recommended, packages are package:print/gutenprint[] and " "package:print/hplip[], both of which add drivers and utilities for a variety " "of printers. Once installed, the CUPS configuration files can be found in " "the directory [.filename]#/usr/local/etc/cups#." msgstr "" "Другие необязательные, но рекомендуемые к установке пакеты это package:print/" "gutenprint-cups[] и package:print/hplip[], каждый из которых добавляет " "драйвера и утилиты для разнообразных принтеров. После установки файлы " "конфигурации CUPS могут быть найдены в каталоге [.filename]#/usr/local/etc/" "cups#." #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:78 #, no-wrap msgid "Configuring the CUPS Print Server" msgstr "Настройка сервера печати CUPS" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:82 msgid "" "After installation, a few files must be edited to configure the CUPS " "server. First, create or modify, as the case may be, the file [.filename]#/" "etc/devfs.rules# and add the following information to set the proper " "permissions on all potential printer devices and to associate printers with " "the `cups` user group:" msgstr "" "Чтобы настроить сервер CUPS необходимо отредактировать несколько " "конфигурационных файлов. Для начала создайте или исправьте файл [.filename]#/" "etc/devfs.rules# и добавьте следующую информацию для того, чтобы установить " "соответствующие права на все потенциальные файлы устройств принтеров и " "связать принтеры с группой пользователей `cups`:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:90 #, no-wrap msgid "" "[system=10]\n" "add path 'unlpt*' mode 0660 group cups\n" "add path 'ulpt*' mode 0660 group cups\n" "add path 'lpt*' mode 0660 group cups\n" "add path 'usb/X.Y.Z' mode 0660 group cups\n" msgstr "" "[system=10]\n" "add path 'unlpt*' mode 0660 group cups\n" "add path 'ulpt*' mode 0660 group cups\n" "add path 'lpt*' mode 0660 group cups\n" "add path 'usb/X.Y.Z' mode 0660 group cups\n" #. type: delimited block = 4 #: documentation/content/en/articles/cups/_index.adoc:96 msgid "" "Note that _X_, _Y_, and _Z_ should be replaced with the target USB device " "listed in the [.filename]#/dev/usb# directory that corresponds to the " "printer. To find the correct device, examine the output of man:dmesg[8], " "where [.filename]#ugenX.Y# lists the printer device, which is a symbolic " "link to a USB device in [.filename]#/dev/usb#." msgstr "" "Замените _X_, _Y_ и _Z_ номерами соответствующего принтеру целевого " "устройства USB, отображаемого в каталоге [.filename]#/dev/usb#. Чтобы найти " "требуемые значения, просмотрите вывод man:dmesg[8] и найдите связанное с " "вашим принтером имя специального устройства [.filename]#ugenX.Y#, последнее " "будет символической ссылкой на искомое устройство в каталоге [.filename]#/" "dev/usb#." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:99 msgid "Next, add two lines to [.filename]#/etc/rc.conf# as follows:" msgstr "Затем, добавьте следующие две записи в [.filename]#/etc/rc.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:104 #, no-wrap msgid "" "cupsd_enable=\"YES\"\n" "devfs_system_ruleset=\"system\"\n" msgstr "" "cupsd_enable=\"YES\"\n" "devfs_system_ruleset=\"system\"\n" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:107 msgid "" "These two entries will start the CUPS print server on boot and invoke the " "local devfs rule created above, respectively." msgstr "" "Эти две записи будут запускать сервер печати CUPS во время загрузки системы " "и применять локальное правило devfs, созданное выше." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:109 msgid "" "To enable CUPS printing under certain Microsoft(R) Windows(R) clients, the " "line below should be uncommented in [.filename]#/usr/local/etc/cups/mime." "types# and [.filename]#/usr/local/etc/cups/mime.convs#:" msgstr "" "Для того, чтобы печать CUPS стала доступна для некоторых Microsoft(R) " "Windows(R) клиентов, необходимо раскомментировать следующую запись в [." "filename]#/usr/local/etc/cups/mime.types# и [.filename]#/usr/local/etc/cups/" "mime.convs#:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:113 #, no-wrap msgid "application/octet-stream\n" msgstr "application/octet-stream\n" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:116 msgid "" "Once these changes have been made, the man:devfs[8] and CUPS systems must " "both be restarted, either by rebooting the computer or issuing the following " "two commands in a root terminal:" msgstr "" "По окончанию внесения изменений службы man:devfs[8] и CUPS необходимо " "перезапустить, для чего перезагрузите операционную систему или выполните от " "пользователя `root` следующие две команды:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:121 #, no-wrap msgid "" "# service devfs restart\n" "# service cupsd restart\n" msgstr "" "# service devfs restart\n" "# service cupsd restart\n" #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:124 #, no-wrap msgid "Configuring Printers on the CUPS Print Server" msgstr "Настройка принтеров на сервере печати CUPS" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:128 msgid "" "After the CUPS system has been installed and configured, the administrator " "can begin configuring the local printers attached to the CUPS print server. " "This part of the process is very similar, if not identical, to configuring " "CUPS printers on other UNIX(R)-based operating systems, such as a Linux(R) " "distribution." msgstr "" "После того, как система CUPS была установлена и сконфигурирована, системный " "администратор может начать конфигурирование локальных принтеров, " "подключенных к серверу печати CUPS. Эта часть процесса очень похожа, если не " "идентична настройке принтеров CUPS в других UNIX(R)-подобных операционных " "системах, таких как дистрибутивы Linux(R)." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:133 msgid "" "The primary means for managing and administering the CUPS server is through " "the web-based interface, which can be found by launching a web browser and " "entering http://localhost:631[http://localhost:631] in the browser's URL " "bar. If the CUPS server is on another machine on the network, substitute " "the server's local IP address for `localhost`. The CUPS web interface is " "fairly self-explanatory, as there are sections for managing printers and " "print jobs, authorizing users, and more. Additionally, on the right-hand " "side of the Administration screen are several check-boxes allowing easy " "access to commonly-changed settings, such as whether to share published " "printers connected to the system, whether to allow remote administration of " "the CUPS server, and whether to allow users additional access and privileges " "to the printers and print jobs." msgstr "" "Основным способом управления и администрирования сервера CUPS является веб-" "интерфейс, на который можно попасть запустив веб-браузер и набрав " "http://localhost:631[http://localhost:631] в его адресной строке. Если " "сервер CUPS находится на другой машине в сети, замените `localhost` на IP " "адрес сервера. Веб-интерфейс CUPS достаточно очевиден, там есть разделы для " "управления принтерами и заданиями на печать, авторизацией пользователей и " "т.п. Кроме того, в правой части страницы администрирования есть несколько " "флажков (check-box), дающих удобный доступ к часто меняемым установкам, " "таким как разрешение публичного доступа к подключенным к системе принтерам, " "предоставление удаленного управления сервером CUPS, изменение уровня доступа " "пользователей к принтерам и их заданиям на печать." #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:137 msgid "" "Adding a printer is generally as easy as clicking \"Add Printer\" at the " "Administration screen of the CUPS web interface, or clicking one of the " "\"New Printers Found\" buttons also at the Administration screen. When " "presented with the \"Device\" drop-down box, simply select the desired " "locally-attached printer, and then continue through the process. If one has " "added the package:print/gutenprint-cups[] or package:print/hplip[] ports or " "packages as referenced above, then additional print drivers will be " "available in the subsequent screens that might provide more stability or " "features." msgstr "" "Добавление принтера в общем такое же простое, как нажатие \"Add Printer\" на " "странице администрирования веб-интерфейса сервера CUPS или как нажатие одной " "из кнопок \"New Printers Found\" на той же странице администрирования. Когда " "перед вами предстанет выпадающий список \"Device\", просто выберите " "требуемый локально подключенный принтер, а дальше следуйте подсказкам " "интерфейса. В случае если были установлены порты или пакеты package:print/" "gutenprint-cups[] или package:print/hplip[], как указывалось выше, " "дополнительные драйвера печати будут доступны на последующих страницах, что " "может обеспечить большую надёжность и расширенные возможности." #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:139 #, no-wrap msgid "Configuring CUPS Clients" msgstr "Конфигурирование клиентов CUPS" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:143 msgid "" "Once the CUPS server has been configured and printers have been added and " "published to the network, the next step is to configure the clients, or the " "machines that are going to access the CUPS server. If one has a single " "desktop machine that is acting as both server and client, then much of this " "information may not be needed." msgstr "" "После того, как сервер CUPS был настроен, принтеры добавлены и сделаны " "доступными в сети, следующий шаг - это настройка клиентов или машин, которые " "будут иметь доступ к серверу CUPS. Если у вас единственный настольный " "компьютер, который работает одновременно и сервером и клиентом, то в " "большинстве этой информации вы не нуждаетесь." #. type: Title === #: documentation/content/en/articles/cups/_index.adoc:145 #, no-wrap msgid "UNIX(R) Clients" msgstr "Клиенты UNIX(R)" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:151 msgid "" "CUPS will also need to be installed on your UNIX(R) clients. Once CUPS is " "installed on the clients, then CUPS printers that are shared across the " "network are often automatically discovered by the printer managers for " "various desktop environments such as GNOME or KDE. Alternatively, one can " "access the local CUPS interface on the client machine at http://" "localhost:631[http://localhost:631] and click on \"Add Printer\" in the " "Administration section. When presented with the \"Device\" drop-down box, " "simply select the networked CUPS printer, if it was automatically " "discovered, or select `ipp` or `http` and enter the IPP or HTTP URI of the " "networked CUPS printer, usually in one of the two following syntaxes:" msgstr "" "На UNIX(R) клиентах также потребуется установить CUPS. После установки " "системы печати на клиенте, CUPS-принтеры, присутствующие в сети, чаще всего " "автоматически находятся менеджерами принтеров разных графических оболочек, " "таких как GNOME или KDE. В качестве альтернативы, вы можете воспользоваться " "веб-интерфейсом CUPS на клиентской машине по адресу " "http://localhost:631[http://localhost:631] и на странице администрирования " "выбрать \"Add Printer\". Когда перед вами предстанет выпадающий список " "\"Device\", просто выберите сетевой CUPS принтер, если он был обнаружен " "автоматически, или выберите `ipp` или `http` и введите IPP или HTTP адрес " "(URI) сетевого CUPS принтера:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:155 #, no-wrap msgid "ipp://server-name-or-ip/printers/printername\n" msgstr "ipp://server-name-or-ip/printers/printername\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:160 #: documentation/content/en/articles/cups/_index.adoc:182 #, no-wrap msgid "http://server-name-or-ip:631/printers/printername\n" msgstr "http://server-name-or-ip:631/printers/printername\n" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:163 msgid "" "If the CUPS clients have difficulty finding other CUPS printers shared " "across the network, sometimes it is helpful to add or create a file [." "filename]#/usr/local/etc/cups/client.conf# with a single entry as follows:" msgstr "" "Если CUPS клиент не находит в сети принтеры, доступные через сервер CUPS, то " "иногда помогает создание или изменение файла [.filename]#/usr/local/etc/cups/" "client.conf# с добавлением единственной записи, подобной следующей:" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:167 #, no-wrap msgid "ServerName server-ip\n" msgstr "ServerName server-ip\n" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:170 msgid "" "In this case, _server-ip_ would be replaced by the local IP address of the " "CUPS server on the network." msgstr "" "В этом случае _server-ip_ необходимо заменить на IP адрес сервера CUPS в " "сети." #. type: Title === #: documentation/content/en/articles/cups/_index.adoc:172 #, no-wrap msgid "Windows(R) Clients" msgstr "Клиенты Windows(R)" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:178 msgid "" "Versions of Windows(R) prior to XP did not have the capability to natively " "network with IPP-based printers. However, Windows(R) XP and later versions " "do have this capability. Therefore, to add a CUPS printer in these versions " "of Windows(R) is quite easy. Generally, the Windows(R) administrator will " "run the Windows(R) `Add Printer` wizard, select `Network Printer` and then " "enter the URI in the following syntax:" msgstr "" "Версии Windows(R), предшествующие XP, не имели встроенной поддержки " "протокола IPP. Однако Windows(R) XP и более поздние версии уже обладают " "такой возможностью. Следовательно, добавить CUPS принтер в этих версиях " "Windows(R) довольно просто. В большинстве случаев, администратору Windows(R) " "потребуется запустить мастера установки принтера (`Add Printer`) выбрать " "сетевой принтер (`Network Printer`), а затем ввести URI следующего формата:" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:185 msgid "" "If one has an older version of Windows(R) without native IPP printing " "support, then the general means of connecting to a CUPS printer is to use " "package:net/samba416[] and CUPS together, which is a topic outside the scope " "of this chapter." msgstr "" "Если используется версия Windows(R) без поддержки протокола IPP, то общим " "случаем подключения к CUPS-принтеру будет совместное использование CUPS и " "package:net/samba3[]. Описание этой возможности выходит за рамки данной " "статьи." #. type: Title == #: documentation/content/en/articles/cups/_index.adoc:187 #, no-wrap msgid "CUPS Troubleshooting" msgstr "Устранение неполадок с CUPS" #. type: Plain text #: documentation/content/en/articles/cups/_index.adoc:196 msgid "" "Difficulties with CUPS often lies in permissions. First, double check the " "man:devfs[8] permissions as outlined above. Next, check the actual " "permissions of the devices created in the file system. It is also helpful " "to make sure your user is a member of the `cups` group. If the permissions " "check boxes in the Administration section of the CUPS web interface do not " "seem to be working, another fix might be to manually backup the main CUPS " "configuration file located at [.filename]#/usr/local/etc/cups/cupsd.conf# " "and edit the various configuration options and try different combinations of " "configuration options. One sample [.filename]#/usr/local/etc/cups/cupsd." "conf# to test is listed below. Please note that this sample [." "filename]#cupsd.conf# sacrifices security for easier configuration; once the " "administrator successfully connects to the CUPS server and configures the " "clients, it is advisable to revisit this configuration file and begin " "locking down access." msgstr "" "Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды " "проверьте права доступа в man:devfs[8] (сверьтесь с уже описанными выше). " "Затем, проверьте реальные права устройств, созданных в файловой системе. " "Также бывает полезным удостовериться, что ваш пользователь входит в группу " "`cups`. Если у вас складывается впечатление, что флажки прав доступа на " "странице администрирования веб-интерфейса CUPS не работают, то иным решением " "может быть резервное копирование конфигурационного файла [.filename]#/usr/" "local/etc/cups/cupsd.conf# и редактирование разных опций конфигурации с " "подбором их комбинаций. Ниже приведено содержимое тестового файла " "конфигурации [.filename]#/usr/local/etc/cups/cupsd.conf#. Пожалуйста, " "обратите внимание на то, что безопасность в этом примере [.filename]#cupsd." "conf# была пожертвована в угоду простоте настройки; как только администратор " "успешно подсоединится к серверу CUPS и сконфигурирует клиентов, " "рекомендуется пересмотреть данную конфигурацию и добавить разграничение " "доступа." #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:202 #, no-wrap msgid "" "# Log general information in error_log - change \"info\" to \"debug\" for\n" "# troubleshooting...\n" "LogLevel info\n" msgstr "" "# Log general information in error_log - change \"info\" to \"debug\" for\n" "# troubleshooting...\n" "LogLevel info\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:205 #, no-wrap msgid "" "# Administrator user group...\n" "SystemGroup wheel\n" msgstr "" "# Administrator user group...\n" "SystemGroup wheel\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:210 #, no-wrap msgid "" "# Listen for connections on Port 631.\n" "Port 631\n" "#Listen localhost:631\n" "Listen /var/run/cups.sock\n" msgstr "" "# Listen for connections on Port 631.\n" "Port 631\n" "#Listen localhost:631\n" "Listen /var/run/cups.sock\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:217 #, no-wrap msgid "" "# Show shared printers on the local network.\n" "Browsing On\n" "BrowseOrder allow,deny\n" "#BrowseAllow @LOCAL\n" "BrowseAllow 192.168.1.* # change to local LAN settings\n" "BrowseAddress 192.168.1.* # change to local LAN settings\n" msgstr "" "# Show shared printers on the local network.\n" "Browsing On\n" "BrowseOrder allow,deny\n" "#BrowseAllow @LOCAL\n" "BrowseAllow 192.168.1.* # change to local LAN settings\n" "BrowseAddress 192.168.1.* # change to local LAN settings\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:221 #, no-wrap msgid "" "# Default authentication type, when authentication is required...\n" "DefaultAuthType Basic\n" "DefaultEncryption Never # comment this line to allow encryption\n" msgstr "" "# Default authentication type, when authentication is required...\n" "DefaultAuthType Basic\n" "DefaultEncryption Never # comment this line to allow encryption\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:228 #, no-wrap msgid "" "# Allow access to the server from any machine on the LAN\n" "\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" msgstr "" "# Allow access to the server from any machine on the LAN\n" "\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:236 #, no-wrap msgid "" "# Allow access to the admin pages from any machine on the LAN\n" "\n" " #Encryption Required\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" msgstr "" "# Allow access to the admin pages from any machine on the LAN\n" "\n" " #Encryption Required\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:245 #, no-wrap msgid "" "# Allow access to configuration files from any machine on the LAN\n" "\n" " AuthType Basic\n" " Require user @SYSTEM\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" msgstr "" "# Allow access to configuration files from any machine on the LAN\n" "\n" " AuthType Basic\n" " Require user @SYSTEM\n" " Order allow,deny\n" " #Allow localhost\n" " Allow 192.168.1.* # change to local LAN settings\n" "\n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:256 #, no-wrap msgid "" "# Set the default printer/job policies...\n" "\n" " # Job-related operations must be done by the owner or an administrator...\n" " \n" " Require user @OWNER @SYSTEM\n" " Order deny,allow\n" " \n" msgstr "" "# Set the default printer/job policies...\n" "\n" " # Job-related operations must be done by the owner or an administrator...\n" " \n" " Require user @OWNER @SYSTEM\n" " Order deny,allow\n" " \n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:267 #, no-wrap msgid "" " # All administration operations require an administrator to authenticate...\n" " \n" " AuthType Basic\n" " Require user @SYSTEM\n" " Order deny,allow\n" " \n" msgstr "" " # All administration operations require an administrator to authenticate..." "\n" " \n" " AuthType Basic\n" " Require user @SYSTEM\n" " Order deny,allow\n" " \n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:273 #, no-wrap msgid "" " # Only the owner or an administrator can cancel or authenticate a job...\n" " \n" " Require user @OWNER @SYSTEM\n" " Order deny,allow\n" " \n" msgstr "" " # Only the owner or an administrator can cancel or authenticate a job...\n" " \n" " Require user @OWNER @SYSTEM\n" " Order deny,allow\n" " \n" #. type: delimited block . 4 #: documentation/content/en/articles/cups/_index.adoc:278 #, no-wrap msgid "" " \n" " Order deny,allow\n" " \n" "\n" msgstr "" " \n" " Order deny,allow\n" " \n" "\n" diff --git a/documentation/content/ru/articles/explaining-bsd/_index.adoc b/documentation/content/ru/articles/explaining-bsd/_index.adoc index 58234dedf0..bb5d41adf9 100644 --- a/documentation/content/ru/articles/explaining-bsd/_index.adoc +++ b/documentation/content/ru/articles/explaining-bsd/_index.adoc @@ -1,180 +1,180 @@ --- authors: - author: 'Greg Lehey' email: grog@FreeBSD.org description: 'Короткое объяснение, что такое BSD' tags: ["Explaining BSD", "BSD", "FreeBSD", "operating system"] title: 'Что такое BSD' trademarks: ["freebsd", "amd", "apple", "git", intel", "linux", "opengroup", "sun", "unix", "general"] --- = Что такое BSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/explaining-bsd/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация В мире программ с открытыми исходниками, слово "Linux" практически стало синонимом слова "Операционная Система", хотя это далеко не единственная операционная система UNIX(R), исходные коды которой доступны широкой публике. Так в чём же секрет? Почему известность BSD оставляет желать лучшего? Эта публикация ставить целью ответить на эти и другие вопросы. На протяжении всего текста обращайте внимание на _выделенные_ отличия BSD от Linux. ''' toc::[] [[what-is-bsd]] == Что такое BSD? BSD означает "Berkeley Software Distribution". Так называлось программное обеспечение, распространявшееся в исходных кодах Калифорнийским Университетом в Беркли, которое сначала представляло из себя дополнения к операционной системе UNIX(R) компании AT&T. На основе версии 4.4BSD-Lite были созданы несколько операционных систем с открытыми исходными кодами. В их состав включены разработки других проектов, среди которых особо следует выделить Проект GNU. Вот что такое собственно операционная система BSD: * Ядро BSD, отвечающее за планировку процессов, управление памятью, поддержку многопроцессорных систем (SMP), работу с устройствами и так далее. * Библиотека C, основной системный интерфейс программирования. + __Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU.__ * Оболочки, файловые утилиты, компиляторы, редакторы связей и другие утилиты пользователя. + __Некоторые из них базируются на коде GNU, а некоторые -- нет.__ * Система X Window, отвечающая за графический интерфейс. + -Система X Window, которая используется в большинстве версий BSD, поддерживается http://www.X.org/[проектом X.Org]. FreeBSD дает пользователю возможность выбирать из множества графических оболочек, таких как GNOME, KDE или Xfce; а также из множества легких оконных менеджеров наподобие Openbox, Fluxbox или Awesome. +Система X Window, которая используется в большинстве версий BSD, поддерживается http://www.X.org/[проектом X.Org]. FreeBSD даёт пользователю возможность выбирать из множества графических оболочек, таких как GNOME, KDE или Xfce; а также из множества легких оконных менеджеров наподобие Openbox, Fluxbox или Awesome. * Множество разных других прикладных и системных программ. [[what-a-real-unix]] == Что, настоящий UNIX(R)? Операционные системы BSD не являются клонами друг друга. Они лишь потомки общего предка, ОС UNIX(R) от AT&T Research, которая также дала начало современной ОС UNIX(R) System V. Это факт может удивить, если вспомнить, что AT&T никогда не открывала исходные коды своих разработок. Действительно, UNIX(R) никогда не был программным обеспечением с открытым исходным кодом, и в законном смысле BSD определённо _НЕ_ UNIX(R). Но с другой стороны, в AT&T активно использовали чужие разработки, например программное обеспечение, разрабатываемое Группой по Исследованиям в области Информатики (CSRG) Калифорнийского Университета в Беркли. С 1976 CSRG выпускала свой код на магнитных лентах под названием __Berkely Software Distribution__, сокращённо __BSD__. Изначально дистрибутивы BSD представляли собой наборы пользовательских программ, и так было до тех пор, пока CSRG не заключила контракт с Агентством по Перспективным Проектам при Министерстве Обороны США (DARPA). Целью контракта было обновление коммуникационных протоколов, на которых держалась компьютерная сеть агентства -- ARPANET. Новое семейство протоколов получило имя _Internet Protocols_ или __TCP/IP__, по названиям двух основных протоколов. Их первая широко известная реализация была выпущена в составе 4.2BSD в 1982 году. В течение восьмидесятых годов образовалось несколько компаний по производству рабочих станций. Многие из них предпочли купить лицензию на UNIX(R), нежели разрабатывать своё ПО с нуля. Следует отметить компанию Sun, которая поступила именно таким образом и на основе 4.2BSD выпустила свою операционную систему SunOS(TM). Когда AT&T тоже решила заняться коммерческой продажей своей ОС UNIX(R), появилась на свет несколько аскетичная реализация под названием System III, за которой в скором времени последовала System V. Интересно, что эти версии не содержали в себе собственной поддержки работы в сети и использовали код BSD, в том числе реализацию TCP/IP и набор утилит, среди которых следует выделить оболочку _csh_ и текстовый редактор __vi__. Все эти "добавки" совместно получили название __Berkely Extensions__. Дистрибутив BSD содержал код, принадлежавший AT&T, и, следовательно, требовал лицензии. К 1990 году финансирование CSRG прекратилось, и группа была распущена. Кое-кто из бывших членов группы решил опубликовать код BSD отдельно от закрытого кода AT&T. В концe концов это удалось, и так появилась на свет версия _Networking Tape 2_ или __Net/2__. Net/2 не была законченной, цельной операционной системой: около 20% кода ядра отсутствовало. Один из членов CSRG, William F. Jolitz, дописал недостающий код и опубликовал результат в начале 1992 года под именем __386BSD__. В то же самое время другая группа бывших членов CSRG организовала коммерческую компанию http://www.bsdi.com/[Berkeley Software Design Inc.] и выпустила бета-версию операционной системы http://www.bsdi.com/[BSD/386], которая базировалась на том же самом коде. Позже это название было изменено на BSD/OS. 386BSD так никогда и не стала полноценной операционной системой. Зато в 1993 году из неё выделились два проекта: http://www.NetBSD.org/[NetBSD] и link:https://www.FreeBSD.org/[FreeBSD]. Изначально разработчики разделились на два лагеря из-за расхождений во мнениях относительно того, сколько же ещё можно ждать улучшений в 386BSD. В начале года образовалась NetBSD, а первая версия FreeBSD была готова только к его концу. Время шло, и технические различия возрастали. Вдобавок проекты поставили перед собой разные цели, как будет показано ниже. В 1996 году от NetBSD отделился ещё один проект - http://www.OpenBSD.org/[OpenBSD], а в 2003 году от FreeBSD отделилась http://www.dragonflybsd.org/[DragonFlyBSD]. [[why-is-bsd-not-better-known]] == Почему BSD недостаточно известна? Действительно, существует ряд причин этому недоразумению: . Разработчики BSD часто больше заинтересованы в качестве своего кода и заняты его "шлифовкой", а не рекламой. . По большому счёту Linux своей популярностью обязан прежде всего внешним по отношению к проекту факторам, например средствам массовой информации и компаниям, которые решили сделать бизнес на предоставлении услуг пользователям Linux. . В 1992 году AT&T подала в суд на http://www.bsdi.com/[BSDI], поставщика BSD/386, утверждая, что их продукт содержит код, защищённый авторскими правами AT&T. Дело было урегулировано во внесудебном порядке в 1994 году, но призрак этого судебного разбирательства продолжает преследовать людей. В марте 2000 года в интернете была опубликована статья, в которой утверждалось, что судебное дело было «недавно урегулировано». + Один момент, который прояснился в ходе судебного разбирательства, касается названия: в 1980-х годах BSD была известна как «BSD UNIX(R)». Однако после удаления последних следов кода AT&T из BSD система потеряла право на использование названия UNIX(R). Поэтому в названиях книг можно встретить, например, «ОС 4.3BSD UNIX®», но уже «ОС 4.4BSD». [[comparing-bsd-and-linux]] == Сравнение BSD и Linux В чём заключается главная разница, к примеру, между Debian Linux и FreeBSD? Для среднего пользователя она на удивление мала: оба продукта представляют собой UNIX(R)-подобные операционные системы. Оба продукта разрабатываются на некоммерческой основе (это не относится к некоторым другим дистрибутивам Linux). В этом разделе мы рассмотрим BSD в сравнении с Linux. Всё сказанное в основном будет касаться FreeBSD, которой принадлежит около 80% всех инсталляций BSD в мире, хотя отличия от NetBSD, OpenBSD и DragonFlyBSD в рамках предмета данной статьи незначительны. === Кому принадлежит BSD? Нельзя сказать, что какой-то конкретный человек или корпорация владеет BSD. Разработка и распространение ведутся группой высококвалифицированных и преданных проекту специалистов со всего мира. Некоторые компоненты BSD представляют собой отдельные проекты с открытым кодом со своими законами и коллективами разработчиков. === Как выглядит процесс разработки и обновления BSD? Ядра BSD используют Open Source модель разработки. Каждый проект поддерживает публично доступное _дерево исходников_ с помощью http://www.cvshome.org/[Concurrent Versions System] (CVS). Это дерево содержит абсолютно весь исходный код проекта, а также документацию и вспомогательные файлы. CVS позволяет пользователям получить копию дерева любой версии системы. Огромное число людей со всего мира участвуют в совершенствовании BSD. Все они разделены на три группы: * _Контрибьюторы_ пишут код или документацию. Они не могут добавлять или изменять код непосредственно в дереве исходников проекта. Это привилегия особым образом зарегистрированных разработчиков, или __коммиттеров (committers)__, которые просматривают и тестируют присылаемый им код и включают его в дерево. * _Коммиттеры_ являются разработчиками, которые имеют доступ на запись в дерево исходных кодов проекта. Чтобы стать коммиттером, человек должен проявить себя в той области, в которой он хочет работать. + -Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему подтверждение правильности планируемых изменений от других разработчиков или нет. В общем случае опытный коммиттер может вносить очевидно выгодные изменения ни с кем не советуясь. К примеру, коммиттер проекта документации может исправлять опечатки или грамматические ошибки в документах без предварительного согласования. Напротив, далеко идущие или просто сложные изменения настоятельно рекомендуется представлять к обсуждению перед окончательным внесением в дерево. Бывают крайние случаи, когда член Core Team, выполняющий функцию архитектора проекта, может санкционировать немедленную отмену или _откат_ каких-то изменений в дереве. Все коммиттеры обязательно получают уведомление о каждом изменении в дереве по электронной почте, так что их невозможно сохранить в тайне. -* _Правление_ (Core Team). В проектах FreeBSD и NetBSD имеются управляющие советы, которые занимаются координационной деятельностью. Их роль, права и обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) быть коммиттером для того, чтобы входить в состав Core Team. Правила, которым следует Core Team, различаются между проектами, но в общем случае члены Core Team определяют общее направление развития системы в большей степени, чем все остальные разработчики. +Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему подтверждение правильности планируемых изменений от других разработчиков или нет. В общем случае опытный коммиттер может вносить очевидно выгодные изменения ни с кем не советуясь. К примеру, коммиттер проекта документации может исправлять опечатки или грамматические ошибки в документах без предварительного согласования. Напротив, далеко идущие или просто сложные изменения настоятельно рекомендуется представлять к обсуждению перед окончательным внесением в дерево. Бывают крайние случаи, когда член Основной команды (Core Team), выполняющий функцию архитектора проекта, может санкционировать немедленную отмену или _откат_ каких-то изменений в дереве. Все коммиттеры обязательно получают уведомление о каждом изменении в дереве по электронной почте, так что их невозможно сохранить в тайне. +* _Основная команда_ (Core Team). В проектах FreeBSD и NetBSD имеются управляющие советы, которые занимаются координационной деятельностью. Их роль, права и обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) быть коммиттером для того, чтобы входить в состав Основной команды. Правила, которым следует Основная команда, различаются между проектами, но в общем случае члены Основной команды определяют общее направление развития системы в большей степени, чем все остальные разработчики. Такое положение вещей отличается от принятого в Linux: . Не существует человека, который бы контролировал содержимое системы. На практике значение этого отличия оказывается переоценённым, так как Ведущий Архитектор может всегда потребовать откат изменений. Ко всему прочему, в проекте Linux на современном этапе изменения в код вносятся тоже не одним, а несколькими людьми. . С другой стороны, _существует_ центральное хранилище (repository), откуда можно получить полный код всей системы, причём как современных, так и предыдущих версий. . Проекты BSD являются цельными "Операционными Системами", а не просто ядрами. Это различие тоже иногда переоценивают: ни BSD, ни Linux не представляют ценности без приложений, а они порой одни и те же в обеих средах. . В результате формализованной процедуры поддержки единого дерева исходников в CVS процесс разработки BSD является полностью открытым, и мы получаем возможность доступа к любой версии системы по номеру или по дате. CVS также очень хорошо подходит для последовательных изменений в коде: к примеру, хранилище кода FreeBSD обновляется около ста раз за день, и большинство этих изменений весьма малы и незначительны в отдельности друг от друга. === Версии BSD FreeBSD, NetBSD и OpenBSD предоставляет миру три различных варианта системы. Как и в Linux, версиям присваиваются номера, например 1.4.1 или 3.5. В добавок, номер версии имеет суффикс -- обозначение варианта, которое указывает на цели той или иной версии: . Версия для разработчиков носит название _CURRENT_. FreeBSD присваивает ей и номер, например FreeBSD 5.0-CURRENT. NetBSD использует чуть-чуть другую схему наименований и добавляет к номеру однобуквенный суффикс, обозначающий изменения во внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не нумерует разрабатываемую версию ("OpenBSD-current"). Все новые разработки производятся именно на этой "ветке" (branch) системы. . Через определённые интервалы от 3 до 6 месяцев проект выпускает версию _RELEASE_, которая распространяется на CD-ROM и доступна для скачивания с серверов FTP. Примерами таких версий могут служить OpenBSD 2.6-RELEASE и NetBSD 1.4-RELEASE. Этот вариант предназначен для конечных пользователей. NetBSD также предоставляет так называемые __исправленные релизы (patch releases)__, обозначаемые третьей цифрой в номере, например NetBSD 1.4.2. . По мере обнаружения ошибок в версии RELEASE необходимые исправления вносятся в дерево CVS. Получающаяся система в проекте FreeBSD носит название _STABLE_, а в NetBSD и OpenBSD продолжает называться RELEASE. Некоторые мелкие улучшения тоже иногда вносятся в эту версию после продолжительного периода тестирования в CURRENT. _Linux, напротив, поддерживает два различных дерева исходников, которые называются соответственно стабильной версией и версией для разработчиков. Стабильные версии имеют чётный вторичный номер, например 2.0, 2.2 или 2.4. Версии для разработчиков используют нечётные номера, такие как 2.1, 2.3 или 2.5. Во обоих случаях, к двойному номеру версии добавляется ещё одно число, указывающее на конкретный релиз. Стоит также отметить, что каждый поставщик предоставляет свой собственный вариант пользовательских программ (userland), так что имя дистрибутива тоже имеет значение. Естественно, что поставщики нумеруют свои изделия каждый по-своему, и, таким образом, мы получаем что-то вроде "TurboLinux 6.0 с ядром 2.2.14"._ === Какие существуют варианты BSD? В отличие от многочисленных дистрибутивов Linux, в мире существует лишь четыре крупных BSD проекта с открытыми исходными кодами. Каждый из них поддерживает своё собственное дерево исходников и своё собственное ядро. На практике однако оказывается, что пользовательские части (userland) различных BSD отличаются гораздо меньше, чем у разных дистрибутивов Linux. Цели каждого из проектов не поддаются чёткой формулировке. Различия между ними весьма субъективны. В основном, * проект FreeBSD нацелен на повышение производительности и простоту в использовании конечными пользователями. FreeBSD очень ценят в среде web-хостеров. Эта ОС работает на link:https://www.FreeBSD.org/platforms/[нескольких аппаратных платформах], число пользователей FreeBSD значительно превышает число пользователей других проектов. * проект NetBSD ставит целью максимальную мобильность (или переносимость) кода: девиз "конечно NetBSD работает на этом". NetBSD поддерживает машины от крошечных палмтопов до огромных серверов и использовалась NASA в космических миссиях. Это хороший выбор для старой не-Intel(R) аппаратуры. * проект OpenBSD нацелен на безопасность и "чистоту" кода. С помощью комбинирования концепций открытых исходников и скрупулёзного анализа кода проект демонстрирует чудеса корректности работы системы. В силу названных причин совершенно естественно, что OpenBSD выбирают организации, для которых очень важна защита информации, например банки, фондовые биржи и различные департаменты правительства США. Также как и NetBSD, проект поддерживает целый ряд аппаратных платформ. * Целью DragonFlyBSD является достижение высокой производительности и масштабируемости в любой ситуации-как для одиночных однопроцессорных, так и крупных кластерных систем. DragonFlyBSD ставит перед собой несколько долгосрочных технических задач, но основной упор делается на создание инфраструктуры для работы с SMP, которая была бы проста для понимания, поддержки и ведения в ней разработок. Следует упомянуть ещё две операционных системы BSD UNIX(R), которые не предоставляют публичного доступа к своим исходным кодам. Это BSD/OS и Mac OS(R) X компании Apple: * BSD/OS являлась самым старым из потомков 4.4BSD. Исходный код был недоступен широкой публике, хотя лицензия на него стоила относительно немного. BSD/OS во многом похожа на FreeBSD. Через два года после поглощения BSDi компанией Wind River Systems, BSD/OS перестала существовать как отдельный продукт. Поддержку и исходный код ещё можно получить у Wind River, но все новые разработки сосредоточены на встраиваемой операционной системой VxWorks. * http://www.apple.com/macosx/server/[Mac OS(R) X] - это самая последняя версия операционной системы для линейки компьютеров Apple(R) Mac(R). Ядро этой операционной системы, http://developer.apple.com/darwin/[Darwin], построенное на коде BSD, доступно в виде полностью функциональной операционной системы с открытым кодом для компьютеров архитектур x86 и PPC. Однако код графической системы Aqua/Quartz и многих других проприетарных компонентов Mac OS(R) X остаётся закрытым. Несколько разработчиков Darwin являются также коммиттерами FreeBSD и наоборот. === В чём отличие между лицензией BSD и Общественной Лицензией GNU (GPL)? Linux распространяется на условиях лицензии http://www.fsf.org/copyleft/gpl.html[GNU General Public License] (GPL). Эта лицензия имеет целью уничтожить программное обеспечение с закрытым исходным кодом. В частности, любое ПО, базирующееся на продукте, выпущенном на условиях лицензии GPL, тоже должно поставляться с исходными кодами по первому требованию. http://www.opensource.org/licenses/bsd-license.html[Лицензия BSD] не накладывает таких жёстких ограничений: разрешается распространение программного обеспечения в двоичном виде (binary-only). Этот факт привлекает разработчиков встроенных (embedded) приложений. === Что ещё следует знать? То обстоятельство, что приложений для BSD существует меньше, чем для Linux, вынудило разработчиков BSD позаботиться о создании дополнительной совместимости с Linux, которая позволяет запускать программы для Linux на компьютере, работающем под BSD. Программный пакет, обеспечивающий совместимость, включает в себя как ядерную реализацию системных вызовов Linux, так и разнообразные файлы, необходимые программам, скомпилированным для Linux, например библиотеку C. Разница в скорости выполнения Linux-приложений на машине с Linux и на такой же машине с BSD незаметна. Принцип "вся система от одного поставщика", используемый в BSD, приводит к упрощению процедур обновления системы по сравнению с многими дистрибутивами Linux. BSD предоставляет специальные модули совместимости с устаревшими версиями системных библиотек, и таким образом делает возможным запуск откомпилированных несколько лет назад программ на обновлённой системе. === Что же выбрать, BSD или Linux? Во что выливается всё вышесказанное на практике? Кому предназначена BSD, и кому -- Linux? Это действительно очень сложный вопрос. Приведём несколько советов, которые призваны помочь Вам с выбором: * "Не тронь, пока работает": если Вы уже успешно используете какую-нибудь Open Source ОС, и она Вас устраивает, то пожалуй не стоит ничего менять. * Системы BSD, в особенности FreeBSD, могут демонстрировать большую по сравнению с Linux производительность. Но это вовсе не универсальное правило. Во многих случаях эта разница не заметна, если вообще есть. Иногда Linux может работать лучше, чем FreeBSD. * В общем случае, у систем BSD очень хорошая репутация, когда дело касается надёжности. Это, в основном, связано с более "зрелой" базой исходных кодов. * BSD проекты имеют более лучшую репутацию за качество и полноту документации. Различные проекты документирования ставят своей целью предоставлять активно изменяющуюся документацию, в том числе и на нескольких языках и покрывающую все аспекты системы. * Лицензия BSD иногда может быть более привлекательной, нежели GPL. * В BSD может работать большинство исполнимых файлов Linux, однако в Linux выполнимые файлы BSD запускаться не будут. Во многих реализациях BSD могут также выполняться двоичные файл и других UNIX(R)-подобных систем. Таким образом, BSD может предложить более простой способ перехода с других систем, чем Linux. === Кто предоставляет техническую поддержку, обслуживание и обучение для систем BSD? BSDi / http://www.freebsdmall.com[FreeBSD Mall, Inc.] уже около десяти лет предлагает контракты на поддержку FreeBSD. Кроме того, каждый из проектов постоянно обновляет список консультантов, которые оказывают поддержку за отдельную плату: link:https://www.FreeBSD.org/commercial/consult_bycat/[FreeBSD], http://www.NetBSD.org/gallery/consultants.html[NetBSD] и http://www.OpenBSD.org/support.html[OpenBSD]. diff --git a/documentation/content/ru/articles/explaining-bsd/_index.po b/documentation/content/ru/articles/explaining-bsd/_index.po index 1eb428c949..6160527d8e 100644 --- a/documentation/content/ru/articles/explaining-bsd/_index.po +++ b/documentation/content/ru/articles/explaining-bsd/_index.po @@ -1,972 +1,973 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2023-09-09 18:13-0300\n" -"PO-Revision-Date: 2025-10-30 04:45+0000\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: YAML Front Matter: description #: documentation/content/en/articles/explaining-bsd/_index.adoc:1 #, no-wrap msgid "Brief explanation about BSD" msgstr "Короткое объяснение, что такое BSD" #. type: Title = #: documentation/content/en/articles/explaining-bsd/_index.adoc:1 #: documentation/content/en/articles/explaining-bsd/_index.adoc:11 #, no-wrap msgid "Explaining BSD" msgstr "Что такое BSD" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:44 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:46 msgid "" "In the open source world, the word \"Linux\" is almost synonymous with " "\"Operating System\", but it is not the only open source UNIX(R) operating " "system." msgstr "" "В мире программ с открытыми исходниками, слово \"Linux\" практически стало " "синонимом слова \"Операционная Система\", хотя это далеко не единственная " "операционная система UNIX(R), исходные коды которой доступны широкой публике." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:48 msgid "" "So what is the secret? Why is BSD not better known? This white paper " "addresses these and other questions." msgstr "" "Так в чём же секрет? Почему известность BSD оставляет желать лучшего? Эта " "публикация ставить целью ответить на эти и другие вопросы." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:50 msgid "" "Throughout this paper, differences between BSD and Linux will be noted " "__like this__." msgstr "" "На протяжении всего текста обращайте внимание на _выделенные_ отличия BSD от " "Linux." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:52 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/explaining-bsd/_index.adoc:56 #, no-wrap msgid "What is BSD?" msgstr "Что такое BSD?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:63 msgid "" "BSD stands for \"Berkeley Software Distribution\". It is the name of " "distributions of source code from the University of California, Berkeley, " "which were originally extensions to AT&T's Research UNIX(R) operating " "system. Several open source operating system projects are based on a " "release of this source code known as 4.4BSD-Lite. In addition, they " "comprise a number of packages from other Open Source projects, including " "notably the GNU project. The overall operating system comprises:" msgstr "" "BSD означает \"Berkeley Software Distribution\". Так называлось программное " "обеспечение, распространявшееся в исходных кодах Калифорнийским " "Университетом в Беркли, которое сначала представляло из себя дополнения к " "операционной системе UNIX(R) компании AT&T. На основе версии 4.4BSD-Lite " "были созданы несколько операционных систем с открытыми исходными кодами. В " "их состав включены разработки других проектов, среди которых особо следует " "выделить Проект GNU. Вот что такое собственно операционная система BSD:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:65 msgid "" "The BSD kernel, which handles process scheduling, memory management, " "symmetric multi-processing (SMP), device drivers, etc." msgstr "" "Ядро BSD, отвечающее за планировку процессов, управление памятью, поддержку " "многопроцессорных систем (SMP), работу с устройствами и так далее." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:66 msgid "The C library, the base API for the system." msgstr "Библиотека C, основной системный интерфейс программирования." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:68 msgid "" "__The BSD C library is based on code from Berkeley, not the GNU project.__" msgstr "" "__Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU.__" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:69 msgid "Utilities such as shells, file utilities, compilers and linkers." msgstr "" "Оболочки, файловые утилиты, компиляторы, редакторы связей и другие утилиты " "пользователя." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:71 msgid "" "__Some of the utilities are derived from the GNU project, others are not.__" msgstr "__Некоторые из них базируются на коде GNU, а некоторые -- нет.__" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:72 msgid "The X Window system, which handles graphical display." msgstr "Система X Window, отвечающая за графический интерфейс." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:75 msgid "" "The X Window system used in most versions of BSD is maintained by the http://" "www.X.org/[X.Org project]. FreeBSD allows the user to choose from a variety " "of desktop environments, such as Gnome, KDE, or Xfce; and lightweight window " "managers like Openbox, Fluxbox, or Awesome." msgstr "" "Система X Window, которая используется в большинстве версий BSD, " -"поддерживается http://www.X.org/[проектом X.Org]. FreeBSD дает пользователю " +"поддерживается http://www.X.org/[проектом X.Org]. FreeBSD даёт пользователю " "возможность выбирать из множества графических оболочек, таких как GNOME, KDE " "или Xfce; а также из множества легких оконных менеджеров наподобие Openbox, " "Fluxbox или Awesome." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:76 msgid "Many other programs and utilities." msgstr "Множество разных других прикладных и системных программ." #. type: Title == #: documentation/content/en/articles/explaining-bsd/_index.adoc:78 #, no-wrap msgid "What, a real UNIX(R)?" msgstr "Что, настоящий UNIX(R)?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:83 msgid "" "The BSD operating systems are not clones, but open source derivatives of " "AT&T's Research UNIX(R) operating system, which is also the ancestor of the " "modern UNIX(R) System V. This may surprise you. How could that happen when " "AT&T has never released its code as open source?" msgstr "" "Операционные системы BSD не являются клонами друг друга. Они лишь потомки " "общего предка, ОС UNIX(R) от AT&T Research, которая также дала начало " "современной ОС UNIX(R) System V. Это факт может удивить, если вспомнить, что " "AT&T никогда не открывала исходные коды своих разработок." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:85 msgid "" "It is true that AT&T UNIX(R) is not open source, and in a copyright sense " "BSD is very definitely _not_ UNIX(R), but on the other hand, AT&T has " "imported sources from other projects, noticeably the Computer Sciences " "Research Group (CSRG) of the University of California in Berkeley, CA. " "Starting in 1976, the CSRG started releasing tapes of their software, " "calling them _Berkeley Software Distribution_ or __BSD__." msgstr "" "Действительно, UNIX(R) никогда не был программным обеспечением с открытым " "исходным кодом, и в законном смысле BSD определённо _НЕ_ UNIX(R). Но с " "другой стороны, в AT&T активно использовали чужие разработки, например " "программное обеспечение, разрабатываемое Группой по Исследованиям в области " "Информатики (CSRG) Калифорнийского Университета в Беркли. С 1976 CSRG " "выпускала свой код на магнитных лентах под названием __Berkely Software " "Distribution__, сокращённо __BSD__." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:89 msgid "" "Initial BSD releases consisted mainly of user programs, but that changed " "dramatically when the CSRG landed a contract with the Defense Advanced " "Research Projects Agency (DARPA) to upgrade the communications protocols on " "their network, ARPANET. The new protocols were known as the __Internet " "Protocols__, later _TCP/IP_ after the most important protocols. The first " "widely distributed implementation was part of 4.2BSD, in 1982." msgstr "" "Изначально дистрибутивы BSD представляли собой наборы пользовательских " "программ, и так было до тех пор, пока CSRG не заключила контракт с " "Агентством по Перспективным Проектам при Министерстве Обороны США (DARPA). " "Целью контракта было обновление коммуникационных протоколов, на которых " "держалась компьютерная сеть агентства -- ARPANET. Новое семейство протоколов " "получило имя _Internet Protocols_ или __TCP/IP__, по названиям двух основных " "протоколов. Их первая широко известная реализация была выпущена в составе " "4.2BSD в 1982 году." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:96 msgid "" "In the course of the 1980s, a number of new workstation companies sprang " "up. Many preferred to license UNIX(R) rather than developing operating " "systems for themselves. In particular, Sun Microsystems licensed UNIX(R) " "and implemented a version of 4.2BSD, which they called SunOS(TM). When AT&T " "themselves were allowed to sell UNIX(R) commercially, they started with a " "somewhat bare-bones implementation called System III, to be quickly followed " "by System V. The System V code base did not include networking, so all " "implementations included additional software from the BSD, including the TCP/" "IP software, but also utilities such as the _csh_ shell and the _vi_ " "editor. Collectively, these enhancements were known as the __Berkeley " "Extensions__." msgstr "" "В течение восьмидесятых годов образовалось несколько компаний по " "производству рабочих станций. Многие из них предпочли купить лицензию на " "UNIX(R), нежели разрабатывать своё ПО с нуля. Следует отметить компанию Sun, " "которая поступила именно таким образом и на основе 4.2BSD выпустила свою " "операционную систему SunOS(TM). Когда AT&T тоже решила заняться коммерческой " "продажей своей ОС UNIX(R), появилась на свет несколько аскетичная реализация " "под названием System III, за которой в скором времени последовала System V. " "Интересно, что эти версии не содержали в себе собственной поддержки работы в " "сети и использовали код BSD, в том числе реализацию TCP/IP и набор утилит, " "среди которых следует выделить оболочку _csh_ и текстовый редактор __vi__. " "Все эти \"добавки\" совместно получили название __Berkely Extensions__." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:105 msgid "" "The BSD tapes contained AT&T source code and thus required a UNIX(R) source " "license. By 1990, the CSRG's funding was running out, and it faced " "closure. Some members of the group decided to release the BSD code, which " "was Open Source, without the AT&T proprietary code. This finally happened " "with the __Networking Tape 2__, usually known as __Net/2__. Net/2 was not a " "complete operating system: about 20% of the kernel code was missing. One of " "the CSRG members, William F. Jolitz, wrote the remaining code and released " "it in early 1992 as __386BSD__. At the same time, another group of ex-CSRG " "members formed a commercial company called http://www.bsdi.com/[Berkeley " "Software Design Inc.] and released a beta version of an operating system " "called http://www.bsdi.com/[BSD/386], which was based on the same sources. " "The name of the operating system was later changed to BSD/OS." msgstr "" "Дистрибутив BSD содержал код, принадлежавший AT&T, и, следовательно, " "требовал лицензии. К 1990 году финансирование CSRG прекратилось, и группа " "была распущена. Кое-кто из бывших членов группы решил опубликовать код BSD " "отдельно от закрытого кода AT&T. В концe концов это удалось, и так появилась " "на свет версия _Networking Tape 2_ или __Net/2__. Net/2 не была законченной, " "цельной операционной системой: около 20% кода ядра отсутствовало. Один из " "членов CSRG, William F. Jolitz, дописал недостающий код и опубликовал " "результат в начале 1992 года под именем __386BSD__. В то же самое время " "другая группа бывших членов CSRG организовала коммерческую компанию " "http://www.bsdi.com/[Berkeley Software Design Inc.] и выпустила бета-версию " "операционной системы http://www.bsdi.com/[BSD/386], которая базировалась на " "том же самом коде. Позже это название было изменено на BSD/OS." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:111 msgid "" "386BSD never became a stable operating system. Instead, two other projects " "split off from it in 1993: http://www.NetBSD.org/[NetBSD] and link:https://" "www.FreeBSD.org/[FreeBSD]. The two projects originally diverged due to " "differences in patience waiting for improvements to 386BSD: the NetBSD " "people started early in the year, and the first version of FreeBSD was not " "ready until the end of the year. In the meantime, the code base had " "diverged sufficiently to make it difficult to merge. In addition, the " "projects had different aims, as we will see below. In 1996, http://www." "OpenBSD.org/[OpenBSD] split off from NetBSD, and in 2003, http://www." "dragonflybsd.org/[DragonFlyBSD] split off from FreeBSD." msgstr "" "386BSD так никогда и не стала полноценной операционной системой. Зато в 1993 " "году из неё выделились два проекта: http://www.NetBSD.org/[NetBSD] и " "link:https://www.FreeBSD.org/[FreeBSD]. Изначально разработчики разделились " "на два лагеря из-за расхождений во мнениях относительно того, сколько же ещё " "можно ждать улучшений в 386BSD. В начале года образовалась NetBSD, а первая " "версия FreeBSD была готова только к его концу. Время шло, и технические " "различия возрастали. Вдобавок проекты поставили перед собой разные цели, как " "будет показано ниже. В 1996 году от NetBSD отделился ещё один проект - " "http://www.OpenBSD.org/[OpenBSD], а в 2003 году от FreeBSD отделилась " "http://www.dragonflybsd.org/[DragonFlyBSD]." #. type: Title == #: documentation/content/en/articles/explaining-bsd/_index.adoc:113 #, no-wrap msgid "Why is BSD not better known?" msgstr "Почему BSD недостаточно известна?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:116 msgid "For a number of reasons, BSD is relatively unknown:" msgstr "Действительно, существует ряд причин этому недоразумению:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:118 msgid "" "The BSD developers are often more interested in polishing their code than " "marketing it." msgstr "" "Разработчики BSD часто больше заинтересованы в качестве своего кода и заняты " "его \"шлифовкой\", а не рекламой." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:119 msgid "" "Much of Linux's popularity is due to factors external to the Linux projects, " "such as the press, and to companies formed to provide Linux services. Until " "recently, the open source BSDs had no such proponents." msgstr "" "По большому счёту Linux своей популярностью обязан прежде всего внешним по " "отношению к проекту факторам, например средствам массовой информации и " "компаниям, которые решили сделать бизнес на предоставлении услуг " "пользователям Linux." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:120 msgid "" "In 1992, AT&T sued http://www.bsdi.com/[BSDI], the vendor of BSD/386, " "alleging that the product contained AT&T-copyrighted code. The case was " "settled out of court in 1994, but the spectre of the litigation continues to " "haunt people. In March 2000 an article published on the web claimed that the " "court case had been \"recently settled\"." msgstr "" "В 1992 году AT&T подала в суд на http://www.bsdi.com/[BSDI], поставщика BSD/" "386, утверждая, что их продукт содержит код, защищённый авторскими правами " "AT&T. Дело было урегулировано во внесудебном порядке в 1994 году, но призрак " "этого судебного разбирательства продолжает преследовать людей. В марте 2000 " "года в интернете была опубликована статья, в которой утверждалось, что " "судебное дело было «недавно урегулировано»." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:124 msgid "" "One detail that the lawsuit did clarify is the naming: in the 1980s, BSD was " "known as \"BSD UNIX(R)\". With the elimination of the last vestige of AT&T " "code from BSD, it also lost the right to the name UNIX(R). Thus you will " "see references in book titles to \"the 4.3BSD UNIX(R) operating system\" and " "\"the 4.4BSD operating system\"." msgstr "" "Один момент, который прояснился в ходе судебного разбирательства, касается " "названия: в 1980-х годах BSD была известна как «BSD UNIX(R)». Однако после " "удаления последних следов кода AT&T из BSD система потеряла право на " "использование названия UNIX(R). Поэтому в названиях книг можно встретить, " "например, «ОС 4.3BSD UNIX®», но уже «ОС 4.4BSD»." #. type: Title == #: documentation/content/en/articles/explaining-bsd/_index.adoc:126 #, no-wrap msgid "Comparing BSD and Linux" msgstr "Сравнение BSD и Linux" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:132 msgid "" "So what is really the difference between, say, Debian Linux and FreeBSD? For " "the average user, the difference is surprisingly small: Both are UNIX(R) " "like operating systems. Both are developed by non-commercial projects (this " "does not apply to many other Linux distributions, of course). In the " "following section, we will look at BSD and compare it to Linux. The " "description applies most closely to FreeBSD, which accounts for an estimated " "80% of the BSD installations, but the differences from NetBSD, OpenBSD and " "DragonFlyBSD are small." msgstr "" "В чём заключается главная разница, к примеру, между Debian Linux и FreeBSD? " "Для среднего пользователя она на удивление мала: оба продукта представляют " "собой UNIX(R)-подобные операционные системы. Оба продукта разрабатываются на " "некоммерческой основе (это не относится к некоторым другим дистрибутивам " "Linux). В этом разделе мы рассмотрим BSD в сравнении с Linux. Всё сказанное " "в основном будет касаться FreeBSD, которой принадлежит около 80% всех " "инсталляций BSD в мире, хотя отличия от NetBSD, OpenBSD и DragonFlyBSD в " "рамках предмета данной статьи незначительны." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:133 #, no-wrap msgid "Who owns BSD?" msgstr "Кому принадлежит BSD?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:138 msgid "" "No one person or corporation owns BSD. It is created and distributed by a " "community of highly technical and committed contributors all over the " "world. Some of the components of BSD are Open Source projects in their own " "right and managed by different project maintainers." msgstr "" "Нельзя сказать, что какой-то конкретный человек или корпорация владеет BSD. " "Разработка и распространение ведутся группой высококвалифицированных и " "преданных проекту специалистов со всего мира. Некоторые компоненты BSD " "представляют собой отдельные проекты с открытым кодом со своими законами и " "коллективами разработчиков." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:139 #, no-wrap msgid "How is BSD developed and updated?" msgstr "Как выглядит процесс разработки и обновления BSD?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:144 msgid "" "The BSD kernels are developed and updated following the Open Source " "development model. Each project maintains a publicly accessible _source " "tree_ which contains all source files for the project, including " "documentation and other incidental files. Users can obtain a complete copy " "of any version." msgstr "" "Ядра BSD используют Open Source модель разработки. Каждый проект " "поддерживает публично доступное _дерево исходников_ с помощью http://www." "cvshome.org/[Concurrent Versions System] (CVS). Это дерево содержит " "абсолютно весь исходный код проекта, а также документацию и вспомогательные " "файлы. CVS позволяет пользователям получить копию дерева любой версии " "системы." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:147 msgid "" "A large number of developers worldwide contribute to improvements to BSD. " "They are divided into three kinds:" msgstr "" "Огромное число людей со всего мира участвуют в совершенствовании BSD. Все " "они разделены на три группы:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:149 msgid "" "_Contributors_ write code or documentation. They are not permitted to commit " "(add code) directly to the source tree. For their code to be included in the " "system, it must be reviewed and checked in by a registered developer, known " "as a __committer__." msgstr "" "_Контрибьюторы_ пишут код или документацию. Они не могут добавлять или " "изменять код непосредственно в дереве исходников проекта. Это привилегия " "особым образом зарегистрированных разработчиков, или __коммиттеров " "(committers)__, которые просматривают и тестируют присылаемый им код и " "включают его в дерево." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:150 msgid "" "_Committers_ are developers with write access to the source tree. To become " "a committer, an individual must show ability in the area in which they are " "active." msgstr "" "_Коммиттеры_ являются разработчиками, которые имеют доступ на запись в " "дерево исходных кодов проекта. Чтобы стать коммиттером, человек должен " "проявить себя в той области, в которой он хочет работать." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:157 msgid "" "It is at the individual committer's discretion whether they should obtain " "authority before committing changes to the source tree. In general, an " "experienced committer may make changes which are obviously correct without " "obtaining consensus. For example, a documentation project committer may " "correct typographical or grammatical errors without review. On the other " "hand, developers making far-reaching or complicated changes are expected to " "submit their changes for review before committing them. In extreme cases, a " "core team member with a function such as Principal Architect may order that " "changes be removed from the tree, a process known as _backing out_. All " "committers receive mail describing each individual commit, so it is not " "possible to commit secretly." msgstr "" "Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему " "подтверждение правильности планируемых изменений от других разработчиков или " "нет. В общем случае опытный коммиттер может вносить очевидно выгодные " "изменения ни с кем не советуясь. К примеру, коммиттер проекта документации " "может исправлять опечатки или грамматические ошибки в документах без " "предварительного согласования. Напротив, далеко идущие или просто сложные " "изменения настоятельно рекомендуется представлять к обсуждению перед " -"окончательным внесением в дерево. Бывают крайние случаи, когда член Core " -"Team, выполняющий функцию архитектора проекта, может санкционировать " -"немедленную отмену или _откат_ каких-то изменений в дереве. Все коммиттеры " -"обязательно получают уведомление о каждом изменении в дереве по электронной " -"почте, так что их невозможно сохранить в тайне." +"окончательным внесением в дерево. Бывают крайние случаи, когда член Основной " +"команды (Core Team), выполняющий функцию архитектора проекта, может " +"санкционировать немедленную отмену или _откат_ каких-то изменений в дереве. " +"Все коммиттеры обязательно получают уведомление о каждом изменении в дереве " +"по электронной почте, так что их невозможно сохранить в тайне." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:158 msgid "" "The _Core team_. FreeBSD and NetBSD each have a core team which manages the " "project. The core teams developed in the course of the projects, and their " "role is not always well-defined. It is not necessary to be a developer to be " "a core team member, though it is normal. The rules for the core team vary " "from one project to the other, but in general they have more say in the " "direction of the project than non-core team members have." msgstr "" -"_Правление_ (Core Team). В проектах FreeBSD и NetBSD имеются управляющие " -"советы, которые занимаются координационной деятельностью. Их роль, права и " -"обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) " -"быть коммиттером для того, чтобы входить в состав Core Team. Правила, " -"которым следует Core Team, различаются между проектами, но в общем случае " -"члены Core Team определяют общее направление развития системы в большей " -"степени, чем все остальные разработчики." +"_Основная команда_ (Core Team). В проектах FreeBSD и NetBSD имеются " +"управляющие советы, которые занимаются координационной деятельностью. Их " +"роль, права и обязанности не всегда чётко определены. Необязательно (хотя в " +"порядке вещей) быть коммиттером для того, чтобы входить в состав Основной " +"команды. Правила, которым следует Основная команда, различаются между " +"проектами, но в общем случае члены Основной команды определяют общее " +"направление развития системы в большей степени, чем все остальные " +"разработчики." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:160 msgid "This arrangement differs from Linux in a number of ways:" msgstr "Такое положение вещей отличается от принятого в Linux:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:162 msgid "" "No one person controls the content of the system. In practice, this " "difference is overrated, since the Principal Architect can require that code " "be backed out, and even in the Linux project several people are permitted to " "make changes." msgstr "" "Не существует человека, который бы контролировал содержимое системы. На " "практике значение этого отличия оказывается переоценённым, так как Ведущий " "Архитектор может всегда потребовать откат изменений. Ко всему прочему, в " "проекте Linux на современном этапе изменения в код вносятся тоже не одним, а " "несколькими людьми." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:163 msgid "" "On the other hand, there _is_ a central repository, a single place where you " "can find the entire operating system sources, including all older versions." msgstr "" "С другой стороны, _существует_ центральное хранилище (repository), откуда " "можно получить полный код всей системы, причём как современных, так и " "предыдущих версий." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:164 msgid "" "BSD projects maintain the entire \"Operating System\", not only the kernel. " "This distinction is only marginally useful: neither BSD nor Linux is useful " "without applications. The applications used under BSD are frequently the " "same as the applications used under Linux." msgstr "" "Проекты BSD являются цельными \"Операционными Системами\", а не просто " "ядрами. Это различие тоже иногда переоценивают: ни BSD, ни Linux не " "представляют ценности без приложений, а они порой одни и те же в обеих " "средах." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:165 msgid "" "As a result of the formalized maintenance of a single Git source tree, BSD " "development is clear, and it is possible to access any version of the system " "by release number or by date. Git also allows incremental updates to the " "system: for example, the FreeBSD repository is updated about 100 times a " "day. Most of these changes are small." msgstr "" "В результате формализованной процедуры поддержки единого дерева исходников в " "CVS процесс разработки BSD является полностью открытым, и мы получаем " "возможность доступа к любой версии системы по номеру или по дате. CVS также " "очень хорошо подходит для последовательных изменений в коде: к примеру, " "хранилище кода FreeBSD обновляется около ста раз за день, и большинство этих " "изменений весьма малы и незначительны в отдельности друг от друга." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:166 #, no-wrap msgid "BSD releases" msgstr "Версии BSD" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:171 msgid "" "FreeBSD, NetBSD and OpenBSD provide the system in three different " "\"releases\". As with Linux, releases are assigned a number such as 1.4.1 " "or 3.5. In addition, the version number has a suffix indicating its purpose:" msgstr "" "FreeBSD, NetBSD и OpenBSD предоставляет миру три различных варианта системы. " "Как и в Linux, версиям присваиваются номера, например 1.4.1 или 3.5. В " "добавок, номер версии имеет суффикс -- обозначение варианта, которое " "указывает на цели той или иной версии:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:173 msgid "" "The development version of the system is called _CURRENT_. FreeBSD assigns a " "number to CURRENT, for example FreeBSD 5.0-CURRENT. NetBSD uses a slightly " "different naming scheme and appends a single-letter suffix which indicates " "changes in the internal interfaces, for example NetBSD 1.4.3G. OpenBSD does " "not assign a number (\"OpenBSD-current\"). All new development on the system " "goes into this branch." msgstr "" "Версия для разработчиков носит название _CURRENT_. FreeBSD присваивает ей и " "номер, например FreeBSD 5.0-CURRENT. NetBSD использует чуть-чуть другую " "схему наименований и добавляет к номеру однобуквенный суффикс, обозначающий " "изменения во внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не " "нумерует разрабатываемую версию (\"OpenBSD-current\"). Все новые разработки " "производятся именно на этой \"ветке\" (branch) системы." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:174 msgid "" "At regular intervals, between two and four times a year, the projects bring " "out a _RELEASE_ version of the system, which is available on CD-ROM and for " "free download from FTP sites, for example OpenBSD 2.6-RELEASE or NetBSD 1.4-" "RELEASE. The RELEASE version is intended for end users and is the normal " "version of the system. NetBSD also provides _patch releases_ with a third " "digit, for example NetBSD 1.4.2." msgstr "" "Через определённые интервалы от 3 до 6 месяцев проект выпускает версию " "_RELEASE_, которая распространяется на CD-ROM и доступна для скачивания с " "серверов FTP. Примерами таких версий могут служить OpenBSD 2.6-RELEASE и " "NetBSD 1.4-RELEASE. Этот вариант предназначен для конечных пользователей. " "NetBSD также предоставляет так называемые __исправленные релизы (patch " "releases)__, обозначаемые третьей цифрой в номере, например NetBSD 1.4.2." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:175 msgid "" "As bugs are found in a RELEASE version, they are fixed, and the fixes are " "added to the Git tree. In FreeBSD, the resultant version is called the " "_STABLE_ version, while in NetBSD and OpenBSD it continues to be called the " "RELEASE version. Smaller new features can also be added to this branch after " "a period of test in the CURRENT branch. Security and other important bug " "fixes are also applied to all supported RELEASE versions." msgstr "" "По мере обнаружения ошибок в версии RELEASE необходимые исправления вносятся " "в дерево CVS. Получающаяся система в проекте FreeBSD носит название " "_STABLE_, а в NetBSD и OpenBSD продолжает называться RELEASE. Некоторые " "мелкие улучшения тоже иногда вносятся в эту версию после продолжительного " "периода тестирования в CURRENT." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:182 msgid "" "_By contrast, Linux maintains two separate code trees: the stable version " "and the development version. Stable versions have an even minor version " "number, such as 2.0, 2.2 or 2.4. Development versions have an odd minor " "version number, such as 2.1, 2.3 or 2.5. In each case, the number is " "followed by a further number designating the exact release. In addition, " "each vendor adds their own userland programs and utilities, so the name of " "the distribution is also important. Each distribution vendor also assigns " "version numbers to the distribution, so a complete description might be " "something like \"TurboLinux 6.0 with kernel 2.2.14\"_" msgstr "" "_Linux, напротив, поддерживает два различных дерева исходников, которые " "называются соответственно стабильной версией и версией для разработчиков. " "Стабильные версии имеют чётный вторичный номер, например 2.0, 2.2 или 2.4. " "Версии для разработчиков используют нечётные номера, такие как 2.1, 2.3 или " "2.5. Во обоих случаях, к двойному номеру версии добавляется ещё одно число, " "указывающее на конкретный релиз. Стоит также отметить, что каждый поставщик " "предоставляет свой собственный вариант пользовательских программ (userland), " "так что имя дистрибутива тоже имеет значение. Естественно, что поставщики " "нумеруют свои изделия каждый по-своему, и, таким образом, мы получаем что-то " "вроде \"TurboLinux 6.0 с ядром 2.2.14\"._" #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:183 #, no-wrap msgid "What versions of BSD are available?" msgstr "Какие существуют варианты BSD?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:186 msgid "" "In contrast to the numerous Linux distributions, there are only four major " "open source BSDs. Each BSD project maintains its own source tree and its own " "kernel. In practice, though, there appear to be fewer divergences between " "the userland code of the projects than there is in Linux." msgstr "" "В отличие от многочисленных дистрибутивов Linux, в мире существует лишь " "четыре крупных BSD проекта с открытыми исходными кодами. Каждый из них " "поддерживает своё собственное дерево исходников и своё собственное ядро. На " "практике однако оказывается, что пользовательские части (userland) различных " "BSD отличаются гораздо меньше, чем у разных дистрибутивов Linux." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:188 msgid "" "It is difficult to categorize the goals of each project: the differences are " "very subjective. Basically," msgstr "" "Цели каждого из проектов не поддаются чёткой формулировке. Различия между " "ними весьма субъективны. В основном," #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:190 msgid "" "FreeBSD aims for high performance and ease of use by end users, and is a " "favourite of web content providers. It runs on a link:https://www.FreeBSD." "org/platforms/[number of platforms] and has significantly more users than " "the other projects." msgstr "" "проект FreeBSD нацелен на повышение производительности и простоту в " "использовании конечными пользователями. FreeBSD очень ценят в среде web-" "хостеров. Эта ОС работает на link:https://www.FreeBSD.org/platforms/[" "нескольких аппаратных платформах], число пользователей FreeBSD значительно " "превышает число пользователей других проектов." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:191 msgid "" "NetBSD aims for maximum portability: \"of course it runs NetBSD\". It runs " "on machines from palmtops to large servers, and has even been used on NASA " "space missions. It is a particularly good choice for running on old non-" "Intel(R) hardware." msgstr "" "проект NetBSD ставит целью максимальную мобильность (или переносимость) кода:" " девиз \"конечно NetBSD работает на этом\". NetBSD поддерживает машины от " "крошечных палмтопов до огромных серверов и использовалась NASA в космических " "миссиях. Это хороший выбор для старой не-Intel(R) аппаратуры." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:192 msgid "" "OpenBSD aims for security and code purity: it uses a combination of the open " "source concept and rigorous code reviews to create a system which is " "demonstrably correct, making it the choice of security-conscious " "organizations such as banks, stock exchanges and US Government departments. " "Like NetBSD, it runs on a number of platforms." msgstr "" "проект OpenBSD нацелен на безопасность и \"чистоту\" кода. С помощью " "комбинирования концепций открытых исходников и скрупулёзного анализа кода " "проект демонстрирует чудеса корректности работы системы. В силу названных " "причин совершенно естественно, что OpenBSD выбирают организации, для которых " "очень важна защита информации, например банки, фондовые биржи и различные " "департаменты правительства США. Также как и NetBSD, проект поддерживает " "целый ряд аппаратных платформ." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:193 msgid "" "DragonFlyBSD aims for high performance and scalability under everything from " "a single-node UP system to a massively clustered system. DragonFlyBSD has " "several long-range technical goals, but focus lies on providing a SMP-" "capable infrastructure that is easy to understand, maintain and develop for." msgstr "" "Целью DragonFlyBSD является достижение высокой производительности и " "масштабируемости в любой ситуации-как для одиночных однопроцессорных, так и " "крупных кластерных систем. DragonFlyBSD ставит перед собой несколько " "долгосрочных технических задач, но основной упор делается на создание " "инфраструктуры для работы с SMP, которая была бы проста для понимания, " "поддержки и ведения в ней разработок." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:195 msgid "" "There are also two additional BSD UNIX(R) operating systems which are not " "open source, BSD/OS and Apple's Mac OS(R) X:" msgstr "" "Следует упомянуть ещё две операционных системы BSD UNIX(R), которые не " "предоставляют публичного доступа к своим исходным кодам. Это BSD/OS и Mac " "OS(R) X компании Apple:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:197 msgid "" "BSD/OS was the oldest of the 4.4BSD derivatives. It was not open source, " "though source code licenses were available at relatively low cost. It " "resembled FreeBSD in many ways. Two years after the acquisition of BSDi by " "Wind River Systems, BSD/OS failed to survive as an independent product. " "Support and source code may still be available from Wind River, but all new " "development is focused on the VxWorks embedded operating system." msgstr "" "BSD/OS являлась самым старым из потомков 4.4BSD. Исходный код был недоступен " "широкой публике, хотя лицензия на него стоила относительно немного. BSD/OS " "во многом похожа на FreeBSD. Через два года после поглощения BSDi компанией " "Wind River Systems, BSD/OS перестала существовать как отдельный продукт. " "Поддержку и исходный код ещё можно получить у Wind River, но все новые " "разработки сосредоточены на встраиваемой операционной системой VxWorks." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:198 msgid "" "http://www.apple.com/macosx/server/[Mac OS(R) X] is the latest version of " "the operating system for Apple(R)'s Mac(R) line. The BSD core of this " "operating system, http://developer.apple.com/darwin/[Darwin], is available " "as a fully functional open source operating system for x86 and PPC " "computers. The Aqua/Quartz graphics system and many other proprietary " "aspects of Mac OS(R) X remain closed-source, however. Several Darwin " "developers are also FreeBSD committers, and vice-versa." msgstr "" "http://www.apple.com/macosx/server/[Mac OS(R) X] - это самая последняя " "версия операционной системы для линейки компьютеров Apple(R) Mac(R). Ядро " "этой операционной системы, http://developer.apple.com/darwin/[Darwin], " "построенное на коде BSD, доступно в виде полностью функциональной " "операционной системы с открытым кодом для компьютеров архитектур x86 и PPC. " "Однако код графической системы Aqua/Quartz и многих других проприетарных " "компонентов Mac OS(R) X остаётся закрытым. Несколько разработчиков Darwin " "являются также коммиттерами FreeBSD и наоборот." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:199 #, no-wrap msgid "How does the BSD license differ from the GNU Public license?" msgstr "В чём отличие между лицензией BSD и Общественной Лицензией GNU (GPL)?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:205 msgid "" "Linux is available under the http://www.fsf.org/copyleft/gpl.html[GNU " "General Public License] (GPL), which is designed to eliminate closed source " "software. In particular, any derivative work of a product released under " "the GPL must also be supplied with source code if requested. By contrast, " "the http://www.opensource.org/licenses/bsd-license.html[BSD license] is less " "restrictive: binary-only distributions are allowed. This is particularly " "attractive for embedded applications." msgstr "" "Linux распространяется на условиях лицензии http://www.fsf.org/copyleft/gpl." "html[GNU General Public License] (GPL). Эта лицензия имеет целью уничтожить " "программное обеспечение с закрытым исходным кодом. В частности, любое ПО, " "базирующееся на продукте, выпущенном на условиях лицензии GPL, тоже должно " "поставляться с исходными кодами по первому требованию. http://www.opensource." "org/licenses/bsd-license.html[Лицензия BSD] не накладывает таких жёстких " "ограничений: разрешается распространение программного обеспечения в двоичном " "виде (binary-only). Этот факт привлекает разработчиков встроенных (embedded) " "приложений." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:206 #, no-wrap msgid "What else should I know?" msgstr "Что ещё следует знать?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:211 msgid "" "Since fewer applications are available for BSD than Linux, the BSD " "developers created a Linux compatibility package, which allows Linux " "programs to run under BSD. The package includes both kernel modifications, " "to correctly perform Linux system calls, and Linux compatibility files such " "as the C library. There is no noticeable difference in execution speed " "between a Linux application running on a Linux machine and a Linux " "application running on a BSD machine of the same speed." msgstr "" "То обстоятельство, что приложений для BSD существует меньше, чем для Linux, " "вынудило разработчиков BSD позаботиться о создании дополнительной " "совместимости с Linux, которая позволяет запускать программы для Linux на " "компьютере, работающем под BSD. Программный пакет, обеспечивающий " "совместимость, включает в себя как ядерную реализацию системных вызовов " "Linux, так и разнообразные файлы, необходимые программам, скомпилированным " "для Linux, например библиотеку C. Разница в скорости выполнения Linux-" "приложений на машине с Linux и на такой же машине с BSD незаметна." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:214 msgid "" "The \"all from one supplier\" nature of BSD means that upgrades are much " "easier to handle than is frequently the case with Linux. BSD handles " "library version upgrades by providing compatibility modules for earlier " "library versions, so it is possible to run binaries which are several years " "old with no problems." msgstr "" "Принцип \"вся система от одного поставщика\", используемый в BSD, приводит к " "упрощению процедур обновления системы по сравнению с многими дистрибутивами " "Linux. BSD предоставляет специальные модули совместимости с устаревшими " "версиями системных библиотек, и таким образом делает возможным запуск " "откомпилированных несколько лет назад программ на обновлённой системе." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:215 #, no-wrap msgid "Which should I use, BSD or Linux?" msgstr "Что же выбрать, BSD или Linux?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:218 msgid "" "What does this all mean in practice? Who should use BSD, who should use " "Linux?" msgstr "" "Во что выливается всё вышесказанное на практике? Кому предназначена BSD, и " "кому -- Linux?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:221 msgid "This is a very difficult question to answer. Here are some guidelines:" msgstr "" "Это действительно очень сложный вопрос. Приведём несколько советов, которые " "призваны помочь Вам с выбором:" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:223 msgid "" "\"If it ain't broke, don't fix it\": If you already use an open source " "operating system, and you are happy with it, there is probably no good " "reason to change." msgstr "" "\"Не тронь, пока работает\": если Вы уже успешно используете какую-нибудь " "Open Source ОС, и она Вас устраивает, то пожалуй не стоит ничего менять." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:224 msgid "" "BSD systems, in particular FreeBSD, can have notably higher performance than " "Linux. But this is not across the board. In many cases, there is little or " "no difference in performance. In some cases, Linux may perform better than " "FreeBSD." msgstr "" "Системы BSD, в особенности FreeBSD, могут демонстрировать большую по " "сравнению с Linux производительность. Но это вовсе не универсальное правило. " "Во многих случаях эта разница не заметна, если вообще есть. Иногда Linux " "может работать лучше, чем FreeBSD." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:225 msgid "" "In general, BSD systems have a better reputation for reliability, mainly as " "a result of the more mature code base." msgstr "" "В общем случае, у систем BSD очень хорошая репутация, когда дело касается " "надёжности. Это, в основном, связано с более \"зрелой\" базой исходных кодов." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:226 msgid "" "BSD projects have a better reputation for the quality and completeness of " "their documentation. The various documentation projects aim to provide " "actively updated documentation, in many languages, and covering all aspects " "of the system." msgstr "" "BSD проекты имеют более лучшую репутацию за качество и полноту документации. " "Различные проекты документирования ставят своей целью предоставлять активно " "изменяющуюся документацию, в том числе и на нескольких языках и покрывающую " "все аспекты системы." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:227 msgid "The BSD license may be more attractive than the GPL." msgstr "Лицензия BSD иногда может быть более привлекательной, нежели GPL." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:228 msgid "" "BSD can execute most Linux binaries, while Linux can not execute BSD " "binaries. Many BSD implementations can also execute binaries from other " "UNIX(R) like systems. As a result, BSD may present an easier migration route " "from other systems than Linux would." msgstr "" "В BSD может работать большинство исполнимых файлов Linux, однако в Linux " "выполнимые файлы BSD запускаться не будут. Во многих реализациях BSD могут " "также выполняться двоичные файл и других UNIX(R)-подобных систем. Таким " "образом, BSD может предложить более простой способ перехода с других систем, " "чем Linux." #. type: Title === #: documentation/content/en/articles/explaining-bsd/_index.adoc:229 #, no-wrap msgid "Who provides support, service, and training for BSD?" msgstr "" "Кто предоставляет техническую поддержку, обслуживание и обучение для систем " "BSD?" #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:232 msgid "" "http://www.ixsystems.com/[iXsystems, Inc.] provides support contracts for " "FreeBSD." msgstr "" "BSDi / http://www.freebsdmall.com[FreeBSD Mall, Inc.] уже около десяти лет " "предлагает контракты на поддержку FreeBSD." #. type: Plain text #: documentation/content/en/articles/explaining-bsd/_index.adoc:233 msgid "" "In addition, each of the projects has a list of consultants for hire: link:" "https://www.FreeBSD.org/commercial/consult_bycat/[FreeBSD], http://www." "netbsd.org/gallery/consultants.html[NetBSD], and http://www.openbsd.org/" "support.html[OpenBSD]." msgstr "" "Кроме того, каждый из проектов постоянно обновляет список консультантов, " "которые оказывают поддержку за отдельную плату: link:https://www.FreeBSD.org/" "commercial/consult_bycat/[FreeBSD], http://www.NetBSD.org/gallery/consultants" ".html[NetBSD] и http://www.OpenBSD.org/support.html[OpenBSD]." diff --git a/documentation/content/ru/articles/filtering-bridges/_index.adoc b/documentation/content/ru/articles/filtering-bridges/_index.adoc index 3c0cdfc399..d044335557 100644 --- a/documentation/content/ru/articles/filtering-bridges/_index.adoc +++ b/documentation/content/ru/articles/filtering-bridges/_index.adoc @@ -1,235 +1,235 @@ --- authors: - author: 'Alex Dupre' email: ale@FreeBSD.org description: 'Настройка межсетевых экранов и фильтрации на хостах FreeBSD, выступающих в роли мостов, а не маршрутизаторов' tags: ["network", "filtering", "bridges", "FreeBSD"] title: 'Фильтрующие мосты' trademarks: ["freebsd", "3com", "intel", "general"] --- = Фильтрующие мосты :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/filtering-bridges/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Часто бывает полезно разделить одну физическую сеть (например, Ethernet) на два отдельных сегмента без необходимости создания подсетей и использовать маршрутизатор для их соединения. Устройство, которое соединяет две сети таким образом, называется мостом. Система FreeBSD с двумя сетевыми интерфейсами достаточна для работы в качестве моста. Мост работает, сканируя адреса на MAC-уровне (Ethernet-адреса) устройств, подключённых к каждому из его сетевых интерфейсов, и затем пересылая трафик между двумя сетями только в том случае, если источник и получатель находятся в разных сегментах. Во многих аспектах мост аналогичен Ethernet-коммутатору с двумя портами. ''' toc::[] [[filtering-bridges-why]] == Зачем использовать фильтрующий мост? Всё чаще, благодаря снижению стоимости широкополосных подключений к Интернету (xDSL), а также из-за сокращения доступных IPv4-адресов, многие компании подключены к Интернету 24 часа в сутки и имеют мало (иногда даже не степень двойки) IP-адресов. В таких ситуациях часто возникает желание иметь межсетевой экран, который фильтрует входящий и исходящий трафик из Интернета и в него, но решение для фильтрации пакетов на основе маршрутизатора может быть неприменимо — из-за проблем с подсетями, потому что маршрутизатор принадлежит поставщику услуг (ISP) или потому что он не поддерживает такие функции. В таких сценариях настоятельно рекомендуется использовать фильтрующий мост. Межсетевой экран на основе моста может быть настроен и установлен между xDSL-маршрутизатором и вашим Ethernet-концентратором/коммутатором без каких-либо проблем с IP-адресацией. [[filtering-bridges-how]] == Как установить Добавление функциональности моста в систему FreeBSD не является сложной задачей. Начиная с версии 4.5, появилась возможность загружать такие функции как модули, вместо необходимости пересборки ядра, что значительно упрощает процедуру. В следующих подразделах я объясню оба способа установки. [IMPORTANT] ==== _Не_ следуйте обеим инструкциям: одна процедура _исключает_ другую. Выберите наиболее подходящий вариант в соответствии с вашими потребностями и возможностями. ==== Прежде чем продолжить, убедитесь, что у вас есть как минимум две Ethernet-карты, поддерживающие режим promiscuous как для приёма, так и для передачи, поскольку они должны уметь отправлять Ethernet-пакеты с любым адресом, а не только с собственным. Кроме того, для обеспечения хорошей пропускной способности карты должны поддерживать управление шиной PCI. Наилучшим выбором по-прежнему остаются Intel EtherExpress(TM) Pro, за которыми следуют карты серии 3Com(R) 3c9xx. Для упрощения настройки межсетевого экрана может быть полезно иметь две карты от разных производителей (использующие разные драйверы), чтобы чётко различать, какой интерфейс подключён к маршрутизатору, а какой — к внутренней сети. [[filtering-bridges-kernel]] === Настройка ядра Итак, вы решили использовать старый, но хорошо проверенный метод установки. Для начала вам нужно добавить следующие строки в файл конфигурации ядра: [.programlisting] .... options BRIDGE options IPFIREWALL options IPFIREWALL_VERBOSE .... Первая строка компилирует поддержку моста, вторая — межсетевой экран, а третья — функции журналирования межсетевого экрана. Теперь необходимо собрать и установить новое ядро. Подробные инструкции можно найти в разделе extref:{handbook}kernelconfig[Сборка и установка пользовательского ядра, kernelconfig-building] Руководства FreeBSD. [[filtering-bridges-modules]] === Загрузка модулей Если вы выбрали использование нового и более простого метода установки, единственное, что нужно сделать сейчас, это добавить следующую строку в [.filename]#/boot/loader.conf#: [.programlisting] .... bridge_load="YES" .... Таким образом, во время загрузки системы модуль [.filename]#bridge.ko# будет загружен вместе с ядром. Не требуется добавлять аналогичную строку для модуля [.filename]#ipfw.ko#, так как он будет загружен автоматически после выполнения шагов из следующего раздела. [[filtering-bridges-finalprep]] == Окончательная подготовка Прежде чем перезагрузиться для загрузки нового ядра или необходимых модулей (в соответствии с выбранным ранее методом установки), необходимо внести некоторые изменения в конфигурационный файл [.filename]#/etc/rc.conf#. Правило по умолчанию для межсетевого экрана — отклонять все IP-пакеты. Изначально мы настроим `открытый` межсетевой экран, чтобы проверить его работу без каких-либо проблем, связанных с фильтрацией пакетов (если вы выполняете эту процедуру удалённо, такая конфигурация позволит избежать изоляции от сети). Добавьте следующие строки в [.filename]#/etc/rc.conf#: [.programlisting] .... firewall_enable="YES" firewall_type="open" firewall_quiet="YES" firewall_logging="YES" .... Первая строка включит межсетевой экран (и загрузит модуль [.filename]#ipfw.ko#, если он не встроен в ядро), вторая настроит его в режиме `open` (как описано в [.filename]#/etc/rc.firewall#), третья отключит отображение загрузки правил, а четвёртая включит поддержку журналирования. О конфигурации сетевых интерфейсов: наиболее распространённый способ — назначить IP только одной из сетевых карт, но мост будет работать одинаково, даже если оба интерфейса или ни один из них не имеют настроенного IP. В последнем случае (без IP) машина с мостом останется более скрытой, так как будет недоступна из сети: для её настройки потребуется войти с консоли или через третий сетевой интерфейс, отделённый от моста. Иногда во время запуска системы некоторым программам требуется доступ к сети, например, для разрешения доменных имён: в этом случае необходимо назначить IP внешнему интерфейсу (тому, который подключён к интернету, где находится DNS-сервер), так как мост будет активирован в конце процедуры запуска. Это означает, что интерфейс [.filename]#fxp0# (в нашем случае) должен быть указан в разделе ifconfig файла [.filename]#/etc/rc.conf#, тогда как [.filename]#xl0# — нет. Назначение IP обеим сетевым картам не имеет особого смысла, за исключением случаев, когда во время запуска приложения должны получать доступ к сервисам на обоих сегментах Ethernet. Есть ещё один важный момент. При работе IP поверх Ethernet фактически используются два протокола Ethernet: один — это IP, другой — ARP. ARP выполняет преобразование IP-адреса хоста в его Ethernet-адрес (уровень MAC). Чтобы обеспечить связь между двумя хостами, разделёнными мостом, необходимо, чтобы мост передавал ARP-пакеты. Этот протокол не включён в уровень IP, так как он существует только при работе IP поверх Ethernet. Межсетевой экран FreeBSD фильтрует исключительно на уровне IP, поэтому все не-IP пакеты (включая ARP) будут передаваться без фильтрации, даже если межсетевой экран настроен на запрет всего. Вот теперь пришло время перезагрузить систему и использовать её как прежде: будут появляться некоторые новые сообщения о мосте и межсетевом экране, но мост не будет активирован, а межсетевой экран, находясь в режиме `open`, не будет препятствовать никаким операциям. Если возникли какие-либо проблемы, их следует решить сейчас, прежде чем продолжить. [[filtering-bridges-enabling]] == Включение моста На этом этапе, чтобы включить мост, необходимо выполнить следующие команды (с учётом замены имён двух сетевых интерфейсов [.filename]#fxp0# и [.filename]#xl0# на ваши собственные): [source, shell] .... # sysctl net.link.ether.bridge.config=fxp0:0,xl0:0 # sysctl net.link.ether.bridge.ipfw=1 # sysctl net.link.ether.bridge.enable=1 .... Первая строка указывает, какие интерфейсы должны быть активированы мостом, вторая включает межсетевой экран на мосту, а третья активирует сам мост. На этом этапе вы должны быть способны разместить машину между двумя группами хостов, не нарушая их способности к взаимодействию. Если это так, следующим шагом будет добавление строк `net.link.ether.bridge._[blah]_=_[blah]_` в файл [.filename]#/etc/sysctl.conf#, чтобы они выполнялись при запуске системы. [[filtering-bridges-ipfirewall]] == Настройка межсетевого экрана Время создать собственный файл с правилами межсетевого экрана для защиты внутренней сети. Это будет несколько сложно, так как не все функции межсетевого экрана доступны для мостовых пакетов. Кроме того, есть разница между пакетами, которые перенаправляются, и пакетами, которые принимаются локальной машиной. В целом, входящие пакеты проходят через межсетевой экран только один раз, а не два, как обычно; фактически они фильтруются только при получении, поэтому правила с `out` или `xmit` никогда не сработают. Лично я использую `in via` — это более старый синтаксис, но он интуитивно понятен при чтении. Ещё одно ограничение заключается в том, что для пакетов, фильтруемых мостом, можно использовать только команды `pass` или `drop`. Более сложные действия, такие как `divert`, `forward` или `reject`, недоступны. Такие опции всё ещё можно использовать, но только для трафика, направленного на саму машину моста или исходящего от неё (если у неё есть IP-адрес). В FreeBSD 4.0 появилась концепция фильтрации с сохранением состояния. Это значительное улучшение для UDP-трафика, который обычно представляет собой запрос, отправляемый наружу, за которым вскоре следует ответ с тем же набором IP-адресов и номеров портов (но, конечно, с поменянными местами источником и назначением). Для межсетевых экранов без сохранения состояния практически нет возможности обрабатывать такой трафик как единую сессию. Однако, если межсетевой экран может «запоминать» исходящий UDP-пакет и в течение нескольких минут разрешать ответ, обработка UDP-сервисов становится тривиальной. В следующем примере показано, как это сделать. То же самое можно проделать и с TCP-пакетами. Это позволяет избежать некоторых атак типа «отказ в обслуживании» и других неприятных трюков, но также обычно приводит к быстрому росту таблицы состояний. Рассмотрим пример настройки. Обратите внимание, что в начале файла [.filename]#/etc/rc.firewall# уже есть стандартные правила для loopback-интерфейса (интерфейса обратной петли) [.filename]#lo0#, поэтому нам не нужно о них заботиться. Пользовательские правила следует поместить в отдельный файл (например, [.filename]#/etc/rc.firewall.local#) и загружать его при старте системы, изменив строку в [.filename]#/etc/rc.conf#, где мы определили `open` для межсетевого экрана: [.programlisting] .... firewall_type="/etc/rc.firewall.local" .... [IMPORTANT] ==== Вы должны указать _полный_ путь, иначе он не будет загружен с риском остаться изолированным от сети. ==== Для нашего примера представим, что интерфейс [.filename]#fxp0# подключён к внешней сети (Интернет), а [.filename]#xl0# — к внутренней (ЛВС). У машины с мостом IP-адрес `1.2.3.4` (ваш провайдер вряд ли выдаст вам такой адрес, но для нашего примера он подходит). [.programlisting] .... # Things that we have kept state on before get to go through in a hurry add check-state # Throw away RFC 1918 networks add drop all from 10.0.0.0/8 to any in via fxp0 add drop all from 172.16.0.0/12 to any in via fxp0 add drop all from 192.168.0.0/16 to any in via fxp0 # Allow the bridge machine to say anything it wants # (if the machine is IP-less do not include these rows) add pass tcp from 1.2.3.4 to any setup keep-state add pass udp from 1.2.3.4 to any keep-state add pass ip from 1.2.3.4 to any # Allow the inside hosts to say anything they want add pass tcp from any to any in via xl0 setup keep-state add pass udp from any to any in via xl0 keep-state add pass ip from any to any in via xl0 # TCP section # Allow SSH add pass tcp from any to any 22 in via fxp0 setup keep-state # Allow SMTP only towards the mail server add pass tcp from any to relay 25 in via fxp0 setup keep-state # Allow zone transfers only by the secondary name server [dns2.nic.it] add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state # Pass ident probes. It is better than waiting for them to timeout add pass tcp from any to any 113 in via fxp0 setup keep-state # Pass the "quarantine" range add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state # UDP section # Allow DNS only towards the name server add pass udp from any to ns 53 in via fxp0 keep-state # Pass the "quarantine" range add pass udp from any to any 49152-65535 in via fxp0 keep-state # ICMP section # Pass 'ping' add pass icmp from any to any icmptypes 8 keep-state # Pass error messages generated by 'traceroute' add pass icmp from any to any icmptypes 3 add pass icmp from any to any icmptypes 11 # Everything else is suspect add drop log all from any to any .... Те из вас, кто ранее настраивал межсетевые экраны, могут заметить некоторые отсутствующие элементы. В частности, здесь нет правил защиты от спуфинга, и фактически мы _не_ добавили: [.programlisting] .... add deny all from 1.2.3.4/8 to any in via fxp0 .... -То есть, отбрасывать пакеты, которые поступают извне, утверждая, что они из нашей сети. Это стандартная мера для предотвращения попыток обхода межсетевого экрана путем генерации вредоносных пакетов, которые выглядят так, будто они из внутренней сети. Проблема в том, что есть _как минимум_ один хост на внешнем интерфейсе, который нельзя игнорировать: маршрутизатор. Однако обычно интернет-провайдер применяет антиспуфинг на своем маршрутизаторе, так что нам не нужно слишком беспокоиться об этом. +То есть, отбрасывать пакеты, которые поступают извне, утверждая, что они из нашей сети. Это стандартная мера для предотвращения попыток обхода межсетевого экрана путем генерации вредоносных пакетов, которые выглядят так, будто они из внутренней сети. Проблема в том, что есть _как минимум_ один хост на внешнем интерфейсе, который нельзя игнорировать: маршрутизатор. Однако обычно интернет-провайдер применяет антиспуфинг на своём маршрутизаторе, так что нам не нужно слишком беспокоиться об этом. Последнее правило кажется точной копией правила по умолчанию, то есть не пропускать ничего, что явно не разрешено. Однако есть разница: весь подозрительный трафик будет записываться в журнал. -Существует два правила для пропуска SMTP и DNS-трафика к почтовому серверу и серверу имен, если они у вас есть. Очевидно, весь набор правил должен быть адаптирован под личные предпочтения — это лишь конкретный пример (формат правил подробно описан на man:ipfw[8]). Обратите внимание, что для работы "relay" и "ns" разрешение имен должно работать _до_ включения моста. Это пример того, как убедиться, что IP-адрес установлен на правильной сетевой карте. Альтернативно можно указать IP-адрес вместо имени хоста (это требуется, если у машины нет IP-адреса). +Существует два правила для пропуска SMTP и DNS-трафика к почтовому серверу и серверу имен, если они у вас есть. Очевидно, весь набор правил должен быть адаптирован под личные предпочтения — это лишь конкретный пример (формат правил подробно описан на man:ipfw[8]). Обратите внимание, что для работы "relay" и "ns" разрешение имён должно работать _до_ включения моста. Это пример того, как убедиться, что IP-адрес установлен на правильной сетевой карте. Или можно указать IP-адрес вместо имени хоста (это требуется, если у машины нет IP-адреса). Люди, привыкшие настраивать межсетевые экраны, вероятно, также привыкли использовать правило `reset` или `forward` для идентификационных пакетов (TCP-порт 113). К сожалению, это не применимо при использовании моста, поэтому лучше всего просто передавать их целевому устройству. Пока на этом устройстве не запущен идентификационный демон, это относительно безопасно. Альтернативой является сброс соединений на порту 113, что создает проблемы с такими сервисами, как IRC (запрос идентификации будет ожидать таймаута). Единственное, что может показаться немного странным — это наличие правила, разрешающего общение для мостовой машины, и другого правила для внутренних хостов. Помните, что это связано с тем, что два типа трафика проходят разные пути через ядро и попадают в пакетный фильтр. Трафик внутренней сети проходит через мост, в то время как локальная машина использует обычный IP-стек для общения. Поэтому и нужны два правила для обработки разных случаев. Правила `in via fxp0` работают для обоих путей. В общем случае, если вы используете правила `in via` во всём фильтре, вам потребуется сделать исключение для локально сгенерированных пакетов, так как они не поступают через какие-либо из наших интерфейсов. [[filtering-bridges-contributors]] == Участники Многие части этой статьи были взяты, обновлены и адаптированы из старого текста о мостах, отредактированного Ником Сайером. Пара вдохновений обязана введению в мосты от Стива Петерсона. Огромная благодарность Луиджи Риццо за реализацию кода моста в FreeBSD и за время, которое он уделил мне, отвечая на все мои вопросы по этой теме. Благодарность также выражается Тому Родсу, который проверил мою работу по переводу с итальянского (оригинального языка этой статьи) на английский. diff --git a/documentation/content/ru/articles/filtering-bridges/_index.po b/documentation/content/ru/articles/filtering-bridges/_index.po index a8e6d17c99..530fd6346e 100644 --- a/documentation/content/ru/articles/filtering-bridges/_index.po +++ b/documentation/content/ru/articles/filtering-bridges/_index.po @@ -1,825 +1,825 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-11-08 16:17+0000\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\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: YAML Front Matter: description #: documentation/content/en/articles/filtering-bridges/_index.adoc:1 #, no-wrap msgid "Configuring firewalls and filtering on FreeBSD hosts acting as bridges rather than routers" msgstr "Настройка межсетевых экранов и фильтрации на хостах FreeBSD, выступающих в роли мостов, а не маршрутизаторов" #. type: Title = #: documentation/content/en/articles/filtering-bridges/_index.adoc:1 #: documentation/content/en/articles/filtering-bridges/_index.adoc:11 #, no-wrap msgid "Filtering Bridges" msgstr "Фильтрующие мосты" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:44 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:48 msgid "" "Often it is useful to divide one physical network (like an Ethernet) into " "two separate segments without having to create subnets, and use a router to " "link them together. The device that connects the two networks in this way " "is called a bridge. A FreeBSD system with two network interfaces is enough " "to act as a bridge." msgstr "" "Часто бывает полезно разделить одну физическую сеть (например, Ethernet) на " "два отдельных сегмента без необходимости создания подсетей и использовать " "маршрутизатор для их соединения. Устройство, которое соединяет две сети " "таким образом, называется мостом. Система FreeBSD с двумя сетевыми " "интерфейсами достаточна для работы в качестве моста." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:51 msgid "" "A bridge works by scanning the addresses of MAC level (Ethernet addresses) " "of the devices connected to each of its network interfaces and then " "forwarding the traffic between the two networks only if the source and the " "destination are on different segments. Under many points of view a bridge " "is similar to an Ethernet switch with only two ports." msgstr "" "Мост работает, сканируя адреса на MAC-уровне (Ethernet-адреса) устройств, " "подключённых к каждому из его сетевых интерфейсов, и затем пересылая трафик " "между двумя сетями только в том случае, если источник и получатель находятся " "в разных сегментах. Во многих аспектах мост аналогичен Ethernet-коммутатору " "с двумя портами." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:53 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:57 #, no-wrap msgid "Why use a filtering bridge?" msgstr "Зачем использовать фильтрующий мост?" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:62 msgid "" "More and more frequently, thanks to the lowering costs of broad band " "Internet connections (xDSL) and also because of the reduction of available " "IPv4 addresses, many companies are connected to the Internet 24 hours on 24 " "and with few (sometimes not even a power of 2) IP addresses. In these " "situations it is often desirable to have a firewall that filters incoming " "and outgoing traffic from and towards Internet, but a packet filtering " "solution based on router may not be applicable, either due to subnetting " "issues, the router is owned by the connectivity supplier (ISP), or because " "it does not support such functionalities. In these scenarios the use of a " "filtering bridge is highly advised." msgstr "" "Всё чаще, благодаря снижению стоимости широкополосных подключений к " "Интернету (xDSL), а также из-за сокращения доступных IPv4-адресов, многие " "компании подключены к Интернету 24 часа в сутки и имеют мало (иногда даже не " "степень двойки) IP-адресов. В таких ситуациях часто возникает желание иметь " "межсетевой экран, который фильтрует входящий и исходящий трафик из Интернета " "и в него, но решение для фильтрации пакетов на основе маршрутизатора может " "быть неприменимо — из-за проблем с подсетями, потому что маршрутизатор " "принадлежит поставщику услуг (ISP) или потому что он не поддерживает такие " "функции. В таких сценариях настоятельно рекомендуется использовать " "фильтрующий мост." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:64 msgid "" "A bridge-based firewall can be configured and inserted between the xDSL " "router and your Ethernet hub/switch without any IP numbering issues." msgstr "" "Межсетевой экран на основе моста может быть настроен и установлен между xDSL-" "маршрутизатором и вашим Ethernet-концентратором/коммутатором без каких-либо " "проблем с IP-адресацией." #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:66 #, no-wrap msgid "How to Install" msgstr "Как установить" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:71 msgid "" "Adding bridge functionalities to a FreeBSD system is not difficult. Since " "4.5 release it is possible to load such functionalities as modules instead " "of having to rebuild the kernel, simplifying the procedure a great deal. In " "the following subsections I will explain both installation ways." msgstr "" "Добавление функциональности моста в систему FreeBSD не является сложной " "задачей. Начиная с версии 4.5, появилась возможность загружать такие функции " "как модули, вместо необходимости пересборки ядра, что значительно упрощает " "процедуру. В следующих подразделах я объясню оба способа установки." #. type: delimited block = 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:76 msgid "" "_Do not_ follow both instructions: a procedure _excludes_ the other one. " "Select the best choice according to your needs and abilities." msgstr "" "_Не_ следуйте обеим инструкциям: одна процедура _исключает_ другую. Выберите " "наиболее подходящий вариант в соответствии с вашими потребностями и " "возможностями." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:82 msgid "" "Before going on, be sure to have at least two Ethernet cards that support " "the promiscuous mode for both reception and transmission, since they must be " "able to send Ethernet packets with any address, not just their own. " "Moreover, to have a good throughput, the cards should be PCI bus mastering " "cards. The best choices are still the Intel EtherExpress(TM) Pro, followed " "by the 3Com(R) 3c9xx series. To simplify the firewall configuration it may " "be useful to have two cards of different manufacturers (using different " "drivers) to distinguish clearly which interface is connected to the router " "and which to the inner network." msgstr "" "Прежде чем продолжить, убедитесь, что у вас есть как минимум две Ethernet-" "карты, поддерживающие режим promiscuous как для приёма, так и для передачи, " "поскольку они должны уметь отправлять Ethernet-пакеты с любым адресом, а не " "только с собственным. Кроме того, для обеспечения хорошей пропускной " "способности карты должны поддерживать управление шиной PCI. Наилучшим " "выбором по-прежнему остаются Intel EtherExpress(TM) Pro, за которыми следуют " "карты серии 3Com(R) 3c9xx. Для упрощения настройки межсетевого экрана может " "быть полезно иметь две карты от разных производителей (использующие разные " "драйверы), чтобы чётко различать, какой интерфейс подключён к " "маршрутизатору, а какой — к внутренней сети." #. type: Title === #: documentation/content/en/articles/filtering-bridges/_index.adoc:84 #, no-wrap msgid "Kernel Configuration" msgstr "Настройка ядра" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:88 msgid "" "So you have decided to use the older but well tested installation method. " "To begin, you have to add the following rows to your kernel configuration " "file:" msgstr "" "Итак, вы решили использовать старый, но хорошо проверенный метод установки. " "Для начала вам нужно добавить следующие строки в файл конфигурации ядра:" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:94 #, no-wrap msgid "" "options BRIDGE\n" "options IPFIREWALL\n" "options IPFIREWALL_VERBOSE\n" msgstr "" "options BRIDGE\n" "options IPFIREWALL\n" "options IPFIREWALL_VERBOSE\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:97 msgid "" "The first line is to compile the bridge support, the second one is the " "firewall and the third one is the logging functions of the firewall." msgstr "" "Первая строка компилирует поддержку моста, вторая — межсетевой экран, а " "третья — функции журналирования межсетевого экрана." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:100 msgid "" "Now it is necessary to build and install the new kernel. You may find " "detailed instructions in the extref:{handbook}kernelconfig[Building and " "Installing a Custom Kernel, kernelconfig-building] section of the FreeBSD " "Handbook." msgstr "" "Теперь необходимо собрать и установить новое ядро. Подробные инструкции " "можно найти в разделе extref:{handbook}kernelconfig[Сборка и установка " "пользовательского ядра, kernelconfig-building] Руководства FreeBSD." #. type: Title === #: documentation/content/en/articles/filtering-bridges/_index.adoc:102 #, no-wrap msgid "Modules Loading" msgstr "Загрузка модулей" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:105 msgid "" "If you have chosen to use the new and simpler installation method, the only " "thing to do now is add the following row to [.filename]#/boot/loader.conf#:" msgstr "" "Если вы выбрали использование нового и более простого метода установки, " "единственное, что нужно сделать сейчас, это добавить следующую строку в [." "filename]#/boot/loader.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:109 #, no-wrap msgid "bridge_load=\"YES\"\n" msgstr "bridge_load=\"YES\"\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:113 msgid "" "In this way, during the system startup, the [.filename]#bridge.ko# module " "will be loaded together with the kernel. It is not required to add a " "similar row for the [.filename]#ipfw.ko# module, since it will be loaded " "automatically after the execution of the steps in the following section." msgstr "" "Таким образом, во время загрузки системы модуль [.filename]#bridge.ko# будет " "загружен вместе с ядром. Не требуется добавлять аналогичную строку для " "модуля [.filename]#ipfw.ko#, так как он будет загружен автоматически после " "выполнения шагов из следующего раздела." #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:115 #, no-wrap msgid "Final Preparation" msgstr "Окончательная подготовка" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:121 msgid "" "Before rebooting to load the new kernel or the required modules (according " "to the previously chosen installation method), you have to make some changes " "to the [.filename]#/etc/rc.conf# configuration file. The default rule of " "the firewall is to reject all IP packets. Initially we will set up an " "`open` firewall, to verify its operation without any issue related to packet " "filtering (in case you are going to execute this procedure remotely, such " "configuration will avoid you to remain isolated from the network). Put " "these lines in [.filename]#/etc/rc.conf#:" msgstr "" "Прежде чем перезагрузиться для загрузки нового ядра или необходимых модулей " "(в соответствии с выбранным ранее методом установки), необходимо внести " "некоторые изменения в конфигурационный файл [.filename]#/etc/rc.conf#. " "Правило по умолчанию для межсетевого экрана — отклонять все IP-пакеты. " "Изначально мы настроим `открытый` межсетевой экран, чтобы проверить его " "работу без каких-либо проблем, связанных с фильтрацией пакетов (если вы " "выполняете эту процедуру удалённо, такая конфигурация позволит избежать " "изоляции от сети). Добавьте следующие строки в [.filename]#/etc/rc.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:128 #, no-wrap msgid "" "firewall_enable=\"YES\"\n" "firewall_type=\"open\"\n" "firewall_quiet=\"YES\"\n" "firewall_logging=\"YES\"\n" msgstr "" "firewall_enable=\"YES\"\n" "firewall_type=\"open\"\n" "firewall_quiet=\"YES\"\n" "firewall_logging=\"YES\"\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:131 msgid "" "The first row will enable the firewall (and will load the module [." "filename]#ipfw.ko# if it is not compiled in the kernel), the second one to " "set up it in `open` mode (as explained in [.filename]#/etc/rc.firewall#), " "the third one to not show rules loading and the fourth one to enable logging " "support." msgstr "" "Первая строка включит межсетевой экран (и загрузит модуль [.filename]#ipfw." "ko#, если он не встроен в ядро), вторая настроит его в режиме `open` (как " "описано в [.filename]#/etc/rc.firewall#), третья отключит отображение " "загрузки правил, а четвёртая включит поддержку журналирования." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:137 msgid "" "About the configuration of the network interfaces, the most used way is to " "assign an IP to only one of the network cards, but the bridge will work " "equally even if both interfaces or none has a configured IP. In the last " "case (IP-less) the bridge machine will be still more hidden, as inaccessible " "from the network: to configure it, you have to login from console or through " "a third network interface separated from the bridge. Sometimes, during the " "system startup, some programs require network access, say for domain " "resolution: in this case it is necessary to assign an IP to the external " "interface (the one connected to Internet, where DNS server resides), since " "the bridge will be activated at the end of the startup procedure. It means " "that the [.filename]#fxp0# interface (in our case) must be mentioned in the " "ifconfig section of the [.filename]#/etc/rc.conf# file, while the [." "filename]#xl0# is not. Assigning an IP to both the network cards does not " "make much sense, unless, during the start procedure, applications should " "access to services on both Ethernet segments." msgstr "" "О конфигурации сетевых интерфейсов: наиболее распространённый способ — " "назначить IP только одной из сетевых карт, но мост будет работать одинаково, " "даже если оба интерфейса или ни один из них не имеют настроенного IP. В " "последнем случае (без IP) машина с мостом останется более скрытой, так как " "будет недоступна из сети: для её настройки потребуется войти с консоли или " "через третий сетевой интерфейс, отделённый от моста. Иногда во время запуска " "системы некоторым программам требуется доступ к сети, например, для " "разрешения доменных имён: в этом случае необходимо назначить IP внешнему " "интерфейсу (тому, который подключён к интернету, где находится DNS-сервер), " "так как мост будет активирован в конце процедуры запуска. Это означает, что " "интерфейс [.filename]#fxp0# (в нашем случае) должен быть указан в разделе " "ifconfig файла [.filename]#/etc/rc.conf#, тогда как [.filename]#xl0# — нет. " "Назначение IP обеим сетевым картам не имеет особого смысла, за исключением " "случаев, когда во время запуска приложения должны получать доступ к сервисам " "на обоих сегментах Ethernet." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:144 msgid "" "There is another important thing to know. When running IP over Ethernet, " "there are actually two Ethernet protocols in use: one is IP, the other is " "ARP. ARP does the conversion of the IP address of a host into its Ethernet " "address (MAC layer). To allow the communication between two hosts separated " "by the bridge, it is necessary that the bridge will forward ARP packets. " "Such protocol is not included in the IP layer, since it exists only with IP " "over Ethernet. The FreeBSD firewall filters exclusively on the IP layer and " "therefore all non-IP packets (ARP included) will be forwarded without being " "filtered, even if the firewall is configured to not permit anything." msgstr "" "Есть ещё один важный момент. При работе IP поверх Ethernet фактически " "используются два протокола Ethernet: один — это IP, другой — ARP. ARP " "выполняет преобразование IP-адреса хоста в его Ethernet-адрес (уровень MAC). " "Чтобы обеспечить связь между двумя хостами, разделёнными мостом, необходимо, " "чтобы мост передавал ARP-пакеты. Этот протокол не включён в уровень IP, так " "как он существует только при работе IP поверх Ethernet. Межсетевой экран " "FreeBSD фильтрует исключительно на уровне IP, поэтому все не-IP пакеты " "(включая ARP) будут передаваться без фильтрации, даже если межсетевой экран " "настроен на запрет всего." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:146 msgid "" "Now it is time to reboot the system and use it as before: there will be some " "new messages about the bridge and the firewall, but the bridge will not be " "activated and the firewall, being in `open` mode, will not avoid any " "operations." msgstr "" "Вот теперь пришло время перезагрузить систему и использовать её как прежде: " "будут появляться некоторые новые сообщения о мосте и межсетевом экране, но " "мост не будет активирован, а межсетевой экран, находясь в режиме `open`, не " "будет препятствовать никаким операциям." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:148 msgid "" "If there are any problems, you should sort them out now before proceeding." msgstr "" "Если возникли какие-либо проблемы, их следует решить сейчас, прежде чем " "продолжить." #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:150 #, no-wrap msgid "Enabling the Bridge" msgstr "Включение моста" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:153 msgid "" "At this point, to enable the bridge, you have to execute the following " "commands (having the shrewdness to replace the names of the two network " "interfaces [.filename]#fxp0# and [.filename]#xl0# with your own ones):" msgstr "" "На этом этапе, чтобы включить мост, необходимо выполнить следующие команды " "(с учётом замены имён двух сетевых интерфейсов [.filename]#fxp0# и [." "filename]#xl0# на ваши собственные):" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:159 #, no-wrap msgid "" "# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0\n" "# sysctl net.link.ether.bridge.ipfw=1\n" "# sysctl net.link.ether.bridge.enable=1\n" msgstr "" "# sysctl net.link.ether.bridge.config=fxp0:0,xl0:0\n" "# sysctl net.link.ether.bridge.ipfw=1\n" "# sysctl net.link.ether.bridge.enable=1\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:162 msgid "" "The first row specifies which interfaces should be activated by the bridge, " "the second one will enable the firewall on the bridge and finally the third " "one will enable the bridge." msgstr "" "Первая строка указывает, какие интерфейсы должны быть активированы мостом, " "вторая включает межсетевой экран на мосту, а третья активирует сам мост." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:165 msgid "" "At this point you should be able to insert the machine between two sets of " "hosts without compromising any communication abilities between them. If so, " "the next step is to add the `net.link.ether.bridge._[blah]_=_[blah]_` " "portions of these rows to the [.filename]#/etc/sysctl.conf# file, to have " "them execute at startup." msgstr "" "На этом этапе вы должны быть способны разместить машину между двумя группами " "хостов, не нарушая их способности к взаимодействию. Если это так, следующим " "шагом будет добавление строк `net.link.ether.bridge._[blah]_=_[blah]_` в " "файл [.filename]#/etc/sysctl.conf#, чтобы они выполнялись при запуске " "системы." #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:167 #, no-wrap msgid "Configuring The Firewall" msgstr "Настройка межсетевого экрана" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:177 msgid "" "Now it is time to create your own file with custom firewall rules, to secure " "the inside network. There will be some complication in doing this because " "not all of the firewall functionalities are available on bridged packets. " "Furthermore, there is a difference between the packets that are in the " "process of being forwarded and packets that are being received by the local " "machine. In general, incoming packets are run through the firewall only " "once, not twice as is normally the case; in fact they are filtered only upon " "receipt, so rules that use `out` or `xmit` will never match. Personally, I " "use `in via` which is an older syntax, but one that has a sense when you " "read it. Another limitation is that you are restricted to use only `pass` " "or `drop` commands for packets filtered by a bridge. Sophisticated things " "like `divert`, `forward` or `reject` are not available. Such options can " "still be used, but only on traffic to or from the bridge machine itself (if " "it has an IP address)." msgstr "" "Время создать собственный файл с правилами межсетевого экрана для защиты " "внутренней сети. Это будет несколько сложно, так как не все функции " "межсетевого экрана доступны для мостовых пакетов. Кроме того, есть разница " "между пакетами, которые перенаправляются, и пакетами, которые принимаются " "локальной машиной. В целом, входящие пакеты проходят через межсетевой экран " "только один раз, а не два, как обычно; фактически они фильтруются только при " "получении, поэтому правила с `out` или `xmit` никогда не сработают. Лично я " "использую `in via` — это более старый синтаксис, но он интуитивно понятен " "при чтении. Ещё одно ограничение заключается в том, что для пакетов, " "фильтруемых мостом, можно использовать только команды `pass` или `drop`. " "Более сложные действия, такие как `divert`, `forward` или `reject`, " "недоступны. Такие опции всё ещё можно использовать, но только для трафика, " "направленного на саму машину моста или исходящего от неё (если у неё есть IP-" "адрес)." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:185 msgid "" "New in FreeBSD 4.0, is the concept of stateful filtering. This is a big " "improvement for UDP traffic, which typically is a request going out, " "followed shortly thereafter by a response with the same set of IP addresses " "and port numbers (but with source and destination reversed, of course). For " "firewalls that have no statekeeping, there is almost no way to deal with " "this sort of traffic as a single session. But with a firewall that can " "\"remember\" an outgoing UDP packet and, for the next few minutes, allow a " "response, handling UDP services is trivial. The following example shows how " "to do it. It is possible to do the same thing with TCP packets. This " "allows you to avoid some denial of service attacks and other nasty tricks, " "but it also typically makes your state table grow quickly in size." msgstr "" "В FreeBSD 4.0 появилась концепция фильтрации с сохранением состояния. Это " "значительное улучшение для UDP-трафика, который обычно представляет собой " "запрос, отправляемый наружу, за которым вскоре следует ответ с тем же " "набором IP-адресов и номеров портов (но, конечно, с поменянными местами " "источником и назначением). Для межсетевых экранов без сохранения состояния " "практически нет возможности обрабатывать такой трафик как единую сессию. " "Однако, если межсетевой экран может «запоминать» исходящий UDP-пакет и в " "течение нескольких минут разрешать ответ, обработка UDP-сервисов становится " "тривиальной. В следующем примере показано, как это сделать. То же самое " "можно проделать и с TCP-пакетами. Это позволяет избежать некоторых атак типа " "«отказ в обслуживании» и других неприятных трюков, но также обычно приводит " "к быстрому росту таблицы состояний." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:189 msgid "" "Let's look at an example setup. Note first that at the top of [.filename]#/" "etc/rc.firewall# there are already standard rules for the loopback interface " "[.filename]#lo0#, so we should not have to care for them anymore. Custom " "rules should be put in a separate file (say [.filename]#/etc/rc.firewall." "local#) and loaded at system startup, by modifying the row of [.filename]#/" "etc/rc.conf# where we defined the `open` firewall:" msgstr "" "Рассмотрим пример настройки. Обратите внимание, что в начале файла [." "filename]#/etc/rc.firewall# уже есть стандартные правила для loopback-" "интерфейса (интерфейса обратной петли) [.filename]#lo0#, поэтому нам не " "нужно о них заботиться. Пользовательские правила следует поместить в " "отдельный файл (например, [.filename]#/etc/rc.firewall.local#) и загружать " "его при старте системы, изменив строку в [.filename]#/etc/rc.conf#, где мы " "определили `open` для межсетевого экрана:" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:193 #, no-wrap msgid "firewall_type=\"/etc/rc.firewall.local\"\n" msgstr "firewall_type=\"/etc/rc.firewall.local\"\n" #. type: delimited block = 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:198 msgid "" "You have to specify the _full_ path, otherwise it will not be loaded with " "the risk to remain isolated from the network." msgstr "" "Вы должны указать _полный_ путь, иначе он не будет загружен с риском " "остаться изолированным от сети." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:201 msgid "" "For our example imagine to have the [.filename]#fxp0# interface connected " "towards the outside (Internet) and the [.filename]#xl0# towards the inside " "(LAN). The bridge machine has the IP `1.2.3.4` (it is not possible that your " "ISP can give you an address quite like this, but for our example it is good)." msgstr "" "Для нашего примера представим, что интерфейс [.filename]#fxp0# подключён к " "внешней сети (Интернет), а [.filename]#xl0# — к внутренней (ЛВС). У машины с " "мостом IP-адрес `1.2.3.4` (ваш провайдер вряд ли выдаст вам такой адрес, но " "для нашего примера он подходит)." #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:206 #, no-wrap msgid "" "# Things that we have kept state on before get to go through in a hurry\n" "add check-state\n" msgstr "" "# Things that we have kept state on before get to go through in a hurry\n" "add check-state\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:211 #, no-wrap msgid "" "# Throw away RFC 1918 networks\n" "add drop all from 10.0.0.0/8 to any in via fxp0\n" "add drop all from 172.16.0.0/12 to any in via fxp0\n" "add drop all from 192.168.0.0/16 to any in via fxp0\n" msgstr "" "# Throw away RFC 1918 networks\n" "add drop all from 10.0.0.0/8 to any in via fxp0\n" "add drop all from 172.16.0.0/12 to any in via fxp0\n" "add drop all from 192.168.0.0/16 to any in via fxp0\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:217 #, no-wrap msgid "" "# Allow the bridge machine to say anything it wants\n" "# (if the machine is IP-less do not include these rows)\n" "add pass tcp from 1.2.3.4 to any setup keep-state\n" "add pass udp from 1.2.3.4 to any keep-state\n" "add pass ip from 1.2.3.4 to any\n" msgstr "" "# Allow the bridge machine to say anything it wants\n" "# (if the machine is IP-less do not include these rows)\n" "add pass tcp from 1.2.3.4 to any setup keep-state\n" "add pass udp from 1.2.3.4 to any keep-state\n" "add pass ip from 1.2.3.4 to any\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:222 #, no-wrap msgid "" "# Allow the inside hosts to say anything they want\n" "add pass tcp from any to any in via xl0 setup keep-state\n" "add pass udp from any to any in via xl0 keep-state\n" "add pass ip from any to any in via xl0\n" msgstr "" "# Allow the inside hosts to say anything they want\n" "add pass tcp from any to any in via xl0 setup keep-state\n" "add pass udp from any to any in via xl0 keep-state\n" "add pass ip from any to any in via xl0\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:234 #, no-wrap msgid "" "# TCP section\n" "# Allow SSH\n" "add pass tcp from any to any 22 in via fxp0 setup keep-state\n" "# Allow SMTP only towards the mail server\n" "add pass tcp from any to relay 25 in via fxp0 setup keep-state\n" "# Allow zone transfers only by the secondary name server [dns2.nic.it]\n" "add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state\n" "# Pass ident probes. It is better than waiting for them to timeout\n" "add pass tcp from any to any 113 in via fxp0 setup keep-state\n" "# Pass the \"quarantine\" range\n" "add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state\n" msgstr "" "# TCP section\n" "# Allow SSH\n" "add pass tcp from any to any 22 in via fxp0 setup keep-state\n" "# Allow SMTP only towards the mail server\n" "add pass tcp from any to relay 25 in via fxp0 setup keep-state\n" "# Allow zone transfers only by the secondary name server [dns2.nic.it]\n" "add pass tcp from 193.205.245.8 to ns 53 in via fxp0 setup keep-state\n" "# Pass ident probes. It is better than waiting for them to timeout\n" "add pass tcp from any to any 113 in via fxp0 setup keep-state\n" "# Pass the \"quarantine\" range\n" "add pass tcp from any to any 49152-65535 in via fxp0 setup keep-state\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:240 #, no-wrap msgid "" "# UDP section\n" "# Allow DNS only towards the name server\n" "add pass udp from any to ns 53 in via fxp0 keep-state\n" "# Pass the \"quarantine\" range\n" "add pass udp from any to any 49152-65535 in via fxp0 keep-state\n" msgstr "" "# UDP section\n" "# Allow DNS only towards the name server\n" "add pass udp from any to ns 53 in via fxp0 keep-state\n" "# Pass the \"quarantine\" range\n" "add pass udp from any to any 49152-65535 in via fxp0 keep-state\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:247 #, no-wrap msgid "" "# ICMP section\n" "# Pass 'ping'\n" "add pass icmp from any to any icmptypes 8 keep-state\n" "# Pass error messages generated by 'traceroute'\n" "add pass icmp from any to any icmptypes 3\n" "add pass icmp from any to any icmptypes 11\n" msgstr "" "# ICMP section\n" "# Pass 'ping'\n" "add pass icmp from any to any icmptypes 8 keep-state\n" "# Pass error messages generated by 'traceroute'\n" "add pass icmp from any to any icmptypes 3\n" "add pass icmp from any to any icmptypes 11\n" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:250 #, no-wrap msgid "" "# Everything else is suspect\n" "add drop log all from any to any\n" msgstr "" "# Everything else is suspect\n" "add drop log all from any to any\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:254 msgid "" "Those of you who have set up firewalls before may notice some things " "missing. In particular, there are no anti-spoofing rules, in fact we did " "_not_ add:" msgstr "" "Те из вас, кто ранее настраивал межсетевые экраны, могут заметить некоторые " "отсутствующие элементы. В частности, здесь нет правил защиты от спуфинга, и " "фактически мы _не_ добавили:" #. type: delimited block . 4 #: documentation/content/en/articles/filtering-bridges/_index.adoc:258 #, no-wrap msgid "add deny all from 1.2.3.4/8 to any in via fxp0\n" msgstr "add deny all from 1.2.3.4/8 to any in via fxp0\n" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:264 msgid "" "That is, drop packets that are coming in from the outside claiming to be " "from our network. This is something that you would commonly do to be sure " "that someone does not try to evade the packet filter, by generating " "nefarious packets that look like they are from the inside. The problem with " "that is that there is _at least_ one host on the outside interface that you " "do not want to ignore: the router. But usually, the ISP anti-spoofs at " "their router, so we do not need to bother that much." msgstr "" "То есть, отбрасывать пакеты, которые поступают извне, утверждая, что они из " "нашей сети. Это стандартная мера для предотвращения попыток обхода " "межсетевого экрана путем генерации вредоносных пакетов, которые выглядят " "так, будто они из внутренней сети. Проблема в том, что есть _как минимум_ " "один хост на внешнем интерфейсе, который нельзя игнорировать: маршрутизатор. " -"Однако обычно интернет-провайдер применяет антиспуфинг на своем " +"Однако обычно интернет-провайдер применяет антиспуфинг на своём " "маршрутизаторе, так что нам не нужно слишком беспокоиться об этом." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:267 msgid "" "The last rule seems to be an exact duplicate of the default rule, that is, " "do not let anything pass that is not specifically allowed. But there is a " "difference: all suspected traffic will be logged." msgstr "" "Последнее правило кажется точной копией правила по умолчанию, то есть не " "пропускать ничего, что явно не разрешено. Однако есть разница: весь " "подозрительный трафик будет записываться в журнал." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:273 msgid "" "There are two rules for passing SMTP and DNS traffic towards the mail server " "and the name server, if you have them. Obviously the whole rule set should " "be flavored to personal taste, this is only a specific example (rule format " "is described accurately in the man:ipfw[8] man page). Note that for \"relay" "\" and \"ns\" to work, name service lookups must work _before_ the bridge is " "enabled. This is an example of making sure that you set the IP on the " "correct network card. Alternatively it is possible to specify the IP " "address instead of the host name (required if the machine is IP-less)." msgstr "" "Существует два правила для пропуска SMTP и DNS-трафика к почтовому серверу и " "серверу имен, если они у вас есть. Очевидно, весь набор правил должен быть " "адаптирован под личные предпочтения — это лишь конкретный пример (формат " "правил подробно описан на man:ipfw[8]). Обратите внимание, что для работы " -"\"relay\" и \"ns\" разрешение имен должно работать _до_ включения моста. Это " +"\"relay\" и \"ns\" разрешение имён должно работать _до_ включения моста. Это " "пример того, как убедиться, что IP-адрес установлен на правильной сетевой " -"карте. Альтернативно можно указать IP-адрес вместо имени хоста (это " -"требуется, если у машины нет IP-адреса)." +"карте. Или можно указать IP-адрес вместо имени хоста (это требуется, если у " +"машины нет IP-адреса)." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:278 msgid "" "People that are used to setting up firewalls are probably also used to " "either having a `reset` or a `forward` rule for ident packets (TCP port " "113). Unfortunately, this is not an applicable option with the bridge, so " "the best thing is to simply pass them to their destination. As long as that " "destination machine is not running an ident daemon, this is relatively " "harmless. The alternative is dropping connections on port 113, which " "creates some problems with services like IRC (the ident probe must timeout)." msgstr "" "Люди, привыкшие настраивать межсетевые экраны, вероятно, также привыкли " "использовать правило `reset` или `forward` для идентификационных пакетов " "(TCP-порт 113). К сожалению, это не применимо при использовании моста, " "поэтому лучше всего просто передавать их целевому устройству. Пока на этом " "устройстве не запущен идентификационный демон, это относительно безопасно. " "Альтернативой является сброс соединений на порту 113, что создает проблемы с " "такими сервисами, как IRC (запрос идентификации будет ожидать таймаута)." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:285 msgid "" "The only other thing that is a little weird that you may have noticed is " "that there is a rule to let the bridge machine speak, and another for " "internal hosts. Remember that this is because the two sets of traffic will " "take different paths through the kernel and into the packet filter. The " "inside net will go through the bridge, while the local machine will use the " "normal IP stack to speak. Thus the two rules to handle the different " "cases. The `in via fxp0` rules work for both paths. In general, if you use " "`in via` rules throughout the filter, you will need to make an exception for " "locally generated packets, because they did not come in via any of our " "interfaces." msgstr "" "Единственное, что может показаться немного странным — это наличие правила, " "разрешающего общение для мостовой машины, и другого правила для внутренних " "хостов. Помните, что это связано с тем, что два типа трафика проходят разные " "пути через ядро и попадают в пакетный фильтр. Трафик внутренней сети " "проходит через мост, в то время как локальная машина использует обычный IP-" "стек для общения. Поэтому и нужны два правила для обработки разных случаев. " "Правила `in via fxp0` работают для обоих путей. В общем случае, если вы " "используете правила `in via` во всём фильтре, вам потребуется сделать " "исключение для локально сгенерированных пакетов, так как они не поступают " "через какие-либо из наших интерфейсов." #. type: Title == #: documentation/content/en/articles/filtering-bridges/_index.adoc:287 #, no-wrap msgid "Contributors" msgstr "Участники" #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:291 msgid "" "Many parts of this article have been taken, updated and adapted from an old " "text about bridging, edited by Nick Sayer. A pair of inspirations are due " "to an introduction on bridging by Steve Peterson." msgstr "" "Многие части этой статьи были взяты, обновлены и адаптированы из старого " "текста о мостах, отредактированного Ником Сайером. Пара вдохновений обязана " "введению в мосты от Стива Петерсона." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:293 msgid "" "A big thanks to Luigi Rizzo for the implementation of the bridge code in " "FreeBSD and for the time he has dedicated to me answering all of my related " "questions." msgstr "" "Огромная благодарность Луиджи Риццо за реализацию кода моста в FreeBSD и за " "время, которое он уделил мне, отвечая на все мои вопросы по этой теме." #. type: Plain text #: documentation/content/en/articles/filtering-bridges/_index.adoc:294 msgid "" "A thanks goes out also to Tom Rhodes who looked over my job of translation " "from Italian (the original language of this article) into English." msgstr "" "Благодарность также выражается Тому Родсу, который проверил мою работу по " "переводу с итальянского (оригинального языка этой статьи) на английский." diff --git a/documentation/content/ru/articles/fonts/_index.adoc b/documentation/content/ru/articles/fonts/_index.adoc index dc0c900fca..b708b2ea2e 100644 --- a/documentation/content/ru/articles/fonts/_index.adoc +++ b/documentation/content/ru/articles/fonts/_index.adoc @@ -1,538 +1,538 @@ --- authors: - author: 'Dave Bodenstab' email: imdave@synet.net description: 'Обзор технологий шрифтов в FreeBSD и способы их применения в разных программах' subtitle: 'A Tutorial' tags: ["Fonts", "syscons", "X11", "Ghostscript", "Groff", "guide", "tutorial", "FreeBSD"] title: 'Шрифты и FreeBSD' trademarks: ["freebsd", "adobe", "apple", "linux", "microsoft", "opengroup", "general"] --- = Шрифты и FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/fonts/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Этот документ содержит описание различных файлов шрифтов, которые могут использоваться с FreeBSD и драйвером системной консоли, системой X11, программами Ghostscript и Groff. Даются реально работающие примеры по переключению экрана системной консоли в режим 80x60 и использованию файлов шрифтов формата Type 1 с перечисленными выше прикладными программами. ''' toc::[] [[intro]] == Введение Существует много мест, где можно найти файлы шрифтов, но встает вопрос о возможных способах их использования с FreeBSD. Ответ может быть найден в результате тщательного изучения документации по тем компонентам, которые вы собираетесь использовать. На это тратится очень много времени, и это пособие является попыткой дать готовые ответы для тех, кто заинтересуется такими вопросами. [[terminology]] == Основные термины -Имеется множество различных форматов файлов шрифтов и соответствующих окончаний имен файлов. Здесь обсуждаются лишь следующие из них: +Имеется множество различных форматов файлов шрифтов и соответствующих окончаний имён файлов. Здесь обсуждаются лишь следующие из них: [.filename]#.pfa#, [.filename]#.pfb#:: Файлы шрифтов PostScript(R) type 1. Файлы [.filename]#.pfa# являются текстовым (__A__scii) представлением, а [.filename]#.pfb# - двоичным (__B__inary). [.filename]#.afm#:: Параметры (метрики) соответствующих шрифтов типа type 1. [.filename]#.pfm#:: Метрики для принтеров соответствующих шрифтов типа type 1. [.filename]#.ttf#:: Файл шрифтов TrueType(R) [.filename]#.fot#:: Неявная ссылка на файл шрифтов TrueType (реальной информации о шрифте здесь не содержится) [.filename]#.fon#, [.filename]#.fnt#:: Файлы экранных шрифтов с побитным представлением Файлы [.filename]#.fot# используются в Windows(R) в качестве некой символической ссылки на файл со шрифтом в формате TrueType(R) ([.filename]#.ttf#). Файлы шрифтов [.filename]#.fon# также используются в Windows(R). Мне неизвестно, как можно использовать этот формат шрифтов во FreeBSD. [[font-formats]] == Какие форматы файлов шрифтов я могу использовать? То, файл шрифтов какого формата будет полезен, зависит от используемого приложения. Сама по себе FreeBSD шрифтов не использует. Прикладные программы и/или драйверы могут использовать файлы шрифтов. Вот краткий справочник по типам файлов шрифтов и приложениям/драйверам: Драйвер:: vt::: [.filename]#.hex# syscons::: [.filename]#.fnt# Приложение:: Ghostscript::: [.filename]#.pfa#, [.filename]#.pfb#, [.filename]#.ttf# X11::: [.filename]#.pfa#, [.filename]#.pfb# Groff::: [.filename]#.pfa#, [.filename]#.afm# Povray::: [.filename]#.ttf# Окончание [.filename]#.fnt# используется достаточно часто. Я полагаю, что когда кто-нибудь собирается создать файл шрифтов для своего приложения, чаще всего выбирается именно это окончание. Поэтому файлы с таким окончанием не все имеют одинаковый формат; в частности, формат файлов [.filename]#.fnt#, используемых драйвером syscons во FreeBSD, может отличаться от формата файлов [.filename]#.fnt#, встречающихся в MS-DOS(R)/Windows(R). Я даже не пытался использовать другие файлы [.filename]#.fnt#, кроме тех, что поставляются с FreeBSD. [[virtual-console]] == Настройка виртуальной консоли на режим работы 80x60 Во-первых, должен быть загружен шрифт размера 8x8. Для этого файл [.filename]#/etc/rc.conf# должен содержать строчку (измените в ней имя файла со шрифтом на соответствующий вашей локализации): [.programlisting] .... font8x8="iso-8x8" # font 8x8 from /usr/share/syscons/fonts/* (or NO). .... Команда для переключения режимов называется man:vidcontrol[1]: [source, shell] .... % vidcontrol VGA_80x60 .... -Различные программы, ориентированные на работу с экраном, такие, как man:vi[1], должны уметь определять текущие размеры экрана. Так как это делается через вызовы `ioctl` к драйверу консоли (такому, как man:syscons[4]), то размеры будут определяться правильно. +Различные программы, ориентированные на работу с экраном, такие, как man:vi[1], должны уметь определять текущие размеры экрана. Так как это делается через вызовы `ioctl` к драйверу консоли (такому как man:syscons[4]), то размеры будут определяться правильно. Чтобы это проходило более гладко, можно включить эти команды в скрипты начальной загрузки, чтобы они выполнялись при запуске системы. Чтобы это сделать, добавьте такую строчку в [.filename]#/etc/rc.conf#. [.programlisting] .... allscreens_flags="VGA_80x60" # Set this vidcontrol mode for all virtual screens .... Справочная информация: man:rc.conf[5], man:vidcontrol[1]. [[type1-fonts-x11]] == Использование шрифтов type 1 с системой X11 X11 может использовать файлы шрифтов в формате [.filename]#.pfa# или [.filename]#.pfb#. Шрифты для X11 располагаются в различных подкаталогах в [.filename]#/usr/X11R6/lib/X11/fonts#. На каждый файл со шрифтом имеется ссылка по его X11-имени в файле [.filename]#fonts.dir# в каждом таком каталоге. Существует каталог по имени [.filename]#Type1#. Самым простым способом добавить новый шрифт заключается в помещении его в этот каталог. Но лучше хранить все новые шрифты в отдельном каталоге и использовать символические ссылки для добавляемых шрифтов. Это позволяет легко управлять отдельными добавляемыми шрифтами, не путая их с изначально поставляемыми. Например: [source, shell] .... Создаем каталог для файлов шрифтов % mkdir -p /usr/local/shared/fonts/type1 % cd /usr/local/shared/fonts/type1 Помещаем сюда файлы .pfa, .pfb и .afm Кому-то может потребоваться хранить здесь также cопроводительные файлы и документацию к шрифтам % cp /cdrom/fonts/atm/showboat/showboat.pfb . % cp /cdrom/fonts/atm/showboat/showboat.afm . Обновление индексного файла со ссылками на файлы шрифтов % echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX .... Теперь, чтобы использовать новый шрифт с X11, нужно дать доступ к файлу шрифтов и обновить файлы и именами шрифтов. Имена шрифтов в X11 выглядят следующим образом: [.programlisting] .... -bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1 | | | | | | | | | | | | \ \ | | | | | \ \ \ \ \ \ \ +----+- набор символов | | | | \ \ \ \ \ \ \ +- средняя ширина | | | | \ \ \ \ \ \ +- spacing | | | \ \ \ \ \ \ +- разрешение по вертикали | | | \ \ \ \ \ +- разрешение по горизонтали | | | \ \ \ \ +- пунктов | | | \ \ \ +- пиксел | | | \ \ \ foundry family weight slant width additional style .... Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас есть какая-либо информация из сопроводительной документации к шрифту, то она может служить основой для создания имени. Если информации нет, то можно получить некоторую информацию от использования программы man:strings[1] над файлом шрифта. Например: [source, shell] .... % strings showboat.pfb | more %!FontType1-1.0: Showboat 001.001 %%CreationDate: 1/15/91 5:16:03 PM %%VMusage: 1024 45747 % Generated by Fontographer 3.1 % Showboat 1991 by David Rakowski. Alle Rechte Vorbehalten. FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup /UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 12 dict begin /FontInfo 9 dict dup begin /version (001.001) readonly def /FullName (Showboat) readonly def /FamilyName (Showboat) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -106 def /UnderlineThickness 16 def /Notice (Showboat 1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def end readonly def /FontName /Showboat def --stdin-- .... Пользуясь этой информацией, можно составить возможное имя: [source, shell] .... -type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1 .... Компонентами нашего имени являются: Foundry:: Давайте называть все новые шрифты `type1`. Family:: Имя шрифта. Weight:: Normal, bold, medium, semibold, и так далее. Из результата работы команды man:strings[1] похоже, что этот шрифт имеет ширину __medium__. Slant:: __r__oman, __i__talic, __o__blique, и так далее. Так как _ItalicAngle_ равен нулю, то будет использоваться __roman__. Width:: Normal, wide, condensed, extended, и так далее. Пока это не будет проверено, предполагаем __normal__. Дополнительный стиль:: Обычно опускается, но он будет указывать, что в шрифте есть декоративные заглавные буквы. Spacing:: proportional или monospaced. Используется __proportional__, потому что _isFixedPitch_ равен false. Все эти имена произвольны, но нужно стараться следовать существующим соглашениям. В программе для X11 на шрифт ссылаются по имени с применением шаблонов, так что в выбираемом имени это должно учитываться. Можно начать с простого использования [source, shell] .... ...-normal-r-normal-...-p-... .... в качестве имени, а затем использовать man:xfontsel[1] для его проверки и изменения имени на основе того, как выглядит шрифт. Итак, завершая наш пример: [source, shell] .... Делаем шрифт доступным для X11 % cd /usr/X11R6/lib/X11/fonts/Type1 % ln -s /usr/local/shared/fonts/type1/showboat.pfb . Редактируем файлы fonts.dir and fonts.scale, добавляя строку, описывающую шрифт и увеличивая количество шрифтов в первой строке. % ex fonts.dir :1p 25 :1c 26 . :$a showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1 . :wq fonts.scale идентичен fonts.dir... % cp fonts.dir fonts.scale Указываем X11, что произошли изменения % xset fp rehash Проверяем новый шрифт % xfontsel -pattern -type1-* .... Справочная информация: man:xfontsel[1], man:xset[1], The X Windows System in a Nutshell, http://www.ora.com/[O'Reilly & Associates]. [[type1-fonts-ghostscript]] == Использование шрифтов type 1 с пакетом Ghostscript Ghostscript ссылается на шрифт через свой файл [.filename]#Fontmap#. Он должен быть подправлен так же, как и файл [.filename]#fonts.dir# в случае X11. Ghostscript может использовать файлы шрифтов в форматах [.filename]#.pfa# или [.filename]#.pfb#. Взяв шрифт из предыдущего примера, его можно использовать с Ghostscript вот так: [source, shell] .... Помещаем файл со шрифтом в каталог со шрифтами Ghostscript % cd /usr/local/shared/ghostscript/fonts % ln -s /usr/local/shared/fonts/type1/showboat.pfb . Редактируем Fontmap, чтобы Ghostscript знал о шрифте % cd /usr/local/shared/ghostscript/4.01 % ex Fontmap :$a /Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat . :wq Используем Ghostscript для проверки шрифта % gs prfont.ps Aladdin Ghostscript 4.01 (1996-7-10) Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb... /1899520 581354 1300084 13826 0 done. GS>Showboat DoFont Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb... 1939688 565415 1300084 16901 0 done. >>showpage, press to continue<< >>showpage, press to continue<< >>showpage, press to continue<< GS>quit .... Справочная информация: [.filename]#fonts.txt# из дистрибутива Ghostscript 4.01 [[type1-fonts-groff]] == Использование шрифтов в формате type 1 с программой Groff Теперь, когда новый шрифт может быть использован как с X11, так и в Ghostscript, как использовать его с программой Groff? Во-первых, так как мы имеем дело со PostScript(R)-шрифтами формата type 1, то подходящим устройством Groff является __ps__. Для каждого шрифта, который может использоваться программой Groff, должен быть создан файл шрифта. Имя шрифта для Groff является просто именем файла из каталога [.filename]#/usr/shared/groff_font/devps#. В нашем примере файлом шрифта может быть [.filename]#/usr/shared/groff_font/devps/SHOWBOAT#. Файл должен быть создан с помощью утилит, поставляемых с программой Groff. Первой утилитой является `afmtodit`. Обычно она не устанавливается, так что она должна быть получена из дистрибутива с исходными текстами. Я обнаружил, что нужно изменить первую строку файла, что я делал так: [source, shell] .... % cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp % ex /tmp/afmtodit.pl :1c #!/usr/bin/perl -P- . :wq .... Эта утилита создаст файл шрифтов для Groff из файла метрик (с окончанием [.filename]#.afm#). Продолжая с нашим примером: [source, shell] .... Многие файлы .afm в формате Mac ... строки разделены символом ^M. Нам нужно преобразовать их в разделитель ^J в стиле UNIX(R) % cd /tmp % cat /usr/local/shared/fonts/type1/showboat.afm | tr '\015' '\012' >showboat.afm Теперь создаем файл шрифтов groff % cd /usr/share/groff_font/devps % /tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT .... Теперь к шрифту можно обращаться по имени SHOWBOAT. Если в системе для управления принтерами используется программа Ghostscript, то больше ничего делать не нужно. Однако, если используются настоящие PostScript(R)-принтеры, то для использования шрифта его нужно загрузить в принтер (если только в принтере шрифт showboat не встроен или не имеется на диске со шрифтами). Последний шаг заключается в создании загружаемого шрифта. Утилита `pfbtops` используется для создания шрифта в формате [.filename]#.pfa#, а файл для [.filename]#загрузки# изменяется для указания нового шрифта. Файл для [.filename]#загрузки# должен ссылаться на внутреннее имя шрифта. Оно может быть легко определено из файла шрифтов groff, как это показывается здесь: [source, shell] .... Создание файла шрифта .pfa % pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa .... Конечно, если файл [.filename]#.pfa# уже имеется, для его использования создаем символическую ссылку на него. [source, shell] .... Получение внутреннего имени шрифта % fgrep internalname SHOWBOAT internalname Showboat Указываем утилите groff, что шрифт должен быть загружен % ex download :$a Showboat showboat.pfa . :wq .... Для тестирования шрифта: [source, shell] .... % cd /tmp % cat >example.t <example.ps Для использования с ghostscript/ghostview % ghostview example.ps Для его печати % lpr -Ppostscript example.ps .... Справочная информация: [.filename]#/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man#, man:groff_font[5], man:groff_char[7], man:pfbtops[1]. [[convert-truetype]] == Преобразование файлов шрифтов TrueType в формат groff/PostScript для использования с groff Потенциально это требует некоторых усилий, просто потому что зависит некоторых утилит, которые в качестве части системы не устанавливаются. Это: `ttf2pf`:: Утилита для преобразования TrueType в PostScript. Она позволяет преобразовать шрифт TrueType в метрику шрифта в текстовом формате (файл [.filename]#.afm#). + Доступна по адресу http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/[http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/]. Замечание: Эти файлы являются PostScript-программами и должны быть скачаны на диск щелчком на ссылке при нажатой клавише kbd:[Shift]. В противном случае для их просмотра ваш браузер может попытаться запустить программу ghostview. + Интерес представляют следующие файлы: ** [.filename]#GS_TTF.PS# ** [.filename]#PF2AFM.PS# ** [.filename]#ttf2pf.ps# + Смесь верхнего/нижнего регистров присутствует из-за того, что эти файлы предназначены и для DOS. [.filename]#ttf2pf.ps# использует остальные с именами в верхнем регистре, так что при переименовании это нужно учитывать. (На самом деле [.filename]#GS_TTF.PS# и [.filename]#PFS2AFM.PS# предположительно являются частью дистрибутива Ghostscript, но их легко использовать как отдельные утилиты. В поставку FreeBSD они не включены.) Вы можете также установить их в каталог [.filename]#/usr/local/shared/groff_font/devps#(?). `afmtodit`:: -Создает файлы шрифтов для использования с программой Groff из текстовых файлов с метриками шрифта. Она обычно располагается в каталоге [.filename]#/usr/src/contrib/groff/afmtodit# и для ее использования требуется проделать некоторую работу. +Создает файлы шрифтов для использования с программой Groff из текстовых файлов с метриками шрифта. Она обычно располагается в каталоге [.filename]#/usr/src/contrib/groff/afmtodit# и для её использования требуется проделать некоторую работу. + [NOTE] ==== Если вы избегаете работать в дереве [.filename]#/usr/src#, просто скопируйте содержимое вышеупомянутого каталога во временный рабочий каталог. ==== + Во рабочем каталоге вам нужно построить утилиту. Просто введите такую команду: + [source, shell] .... # make -f Makefile.sub afmtodit .... + Вам может также потребоваться скопировать [.filename]#/usr/contrib/groff/devps/generate/textmap# в [.filename]#/usr/shared/groff_font/devps/generate#, если его не существует. Как только эти утилиты готовы, вы можете начать: . Создайте файл [.filename]#.afm# по такой команде: + [source, shell] .... % gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name .... + Здесь _TTF_name_ обозначает ваш файл со шрифтом TrueType, _PS_font_name_ является именем для файла [.filename]#.pfa#, _AFM_name_ задает имя для файла [.filename]#.afm#. Если вы не укажете имена выходных файлов, для форматов [.filename]#.pfa# или [.filename]#.afm#, то по умолчанию будут использоваться имена, получаемые из имени файла со шрифтом TrueType. + При этом также будет создан файл [.filename]#.pfa#, текстовый файл с метриками PostScript-шрифта (([.filename]#.pfb# для двоичного представления). Это не будет обязательно, но может быть (я думаю) полезным для сервера шрифтов. + Например, для преобразования шрифта 30f9 Barcode с именами файлов по умолчанию, воспользуйтесь следующей командой: + [source, shell] .... % gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf Aladdin Ghostscript 5.10 (1997-11-23) Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Converting 3of9.ttf to 3of9.pfa and 3of9.afm. .... + Если вы хотите, чтобы преобразованные шрифты сохранялись в файлы [.filename]#A.pfa# and [.filename]#B.afm#, то выдайте такую команду: + [source, shell] .... % gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B Aladdin Ghostscript 5.10 (1997-11-23) Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Converting 3of9.ttf to A.pfa and B.afm. .... . Создайте PostScript-файл для Groff: + Смените текущий каталог на [.filename]#/usr/shared/groff_font/devps# для облегчения запуска упоминаемых далее программ. Для этого вам может понадобиться иметь привилегии администратора системы. (Или, если вы избегаете здесь работать, обязательно посмотрите файлы [.filename]#DESC#, [.filename]#text.enc# и [.filename]#generate/textmap# в этом каталоге.) + [source, shell] .... % afmtodit -d DESC -e text.enc file.afm generate/textmap PS_font_name .... + Здесь [.filename]#file.afm# является файлом _AFM_name_, созданным программой `ttf2pf.ps` выше, а _PS_font_name_ является именем шрифта, используемым в той команде, так же, как и имя, которое будет использовать утилита man:groff[1] для ссылки на этот шрифт. Например, полагая, что вы использовали первую команду `tiff2pf.ps` выше, то шрифт 3of9 Barcode может быть создан при помощи такой команды: + [source, shell] .... % afmtodit -d DESC -e text.enc 3of9.afm generate/textmap 3of9 .... + Проверьте, что полученный файл _PS_font_name_ (к примеру, [.filename]#3of9# из примера выше) расположен в каталоге [.filename]#/usr/shared/groff_font/devps#, скопировав или перенеся его сюда. + Заметьте, что если [.filename]#ttf2pf.ps# назначает имя шрифта, используя один из найденных в файле шрифта TrueType, а вы хотите использовать другое имя, то вы должны отредактировать файл [.filename]#.afm# до запуска команды `afmtodit`. Это имя к тому же должно совпадать с тем, что используется в файле Fontmap, если вы собираетесь перенаправлять вывод man:groff[1] утилите man:gs[1]. [[truetype-for-other-programs]] == Можно ли использовать шрифты в формате TrueType с другими программами? Формат TrueType используется в Windows, Windows 95 и на компьютерах Macintosh. Он достаточно популярен и в этом формате имеется большое количество шрифтов. К сожалению, я знаю лишь несколько программ, которые могут использовать этот формат: на ум приходят Ghostscript и Povray. Его поддержка в программе Ghostscript, согласно документации, находится в зачаточном состоянии и получаемый результат хуже того, что получается при использовании шрифтов type 1. Программа Povray версии 3 также может использовать шрифты TrueType, но я очень сомневаюсь, что много кто создает документы как последовательность анимированных страниц :-). Такая весьма печальная ситуация может вскоре измениться. В рамках проекта http://www.freetype.org/[FreeType Project] в настоящее время разрабатывается полезный набор инструментов для работы с FreeType: -* Сервер шрифтов `xfsft` для X11 может работать и со шрифтами TrueType, и с обычными шрифтами. Хотя в настоящее время он еще находится в стадии отладки, но его уже можно использовать. Посмотрите http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/[страницу Juliusz Chroboczek], чтобы получить более полную информацию. Указания по переносу на FreeBSD можно найти на странице http://math.missouri.edu/~stephen/software/[Стивена Монтгомери] (Stephen Montgomery), посвященной программному обеспечению. -* xfstt является еще одним сервером шрифтов для X11, доступный по адресу link:ftp://sunsite.unc.edu/pub/Linux/X11/fonts[ftp://sunsite.unc.edu/pub/Linux/X11/fonts]. +* Сервер шрифтов `xfsft` для X11 может работать и со шрифтами TrueType, и с обычными шрифтами. Хотя в настоящее время он ещё находится в стадии отладки, но его уже можно использовать. Посмотрите http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/[страницу Juliusz Chroboczek], чтобы получить более полную информацию. Указания по переносу на FreeBSD можно найти на странице http://math.missouri.edu/~stephen/software/[Стивена Монтгомери] (Stephen Montgomery), посвященной программному обеспечению. +* xfstt является ещё одним сервером шрифтов для X11, доступный по адресу link:ftp://sunsite.unc.edu/pub/Linux/X11/fonts[ftp://sunsite.unc.edu/pub/Linux/X11/fonts]. * Программа, которая называется `ttf2bdf`, может генерировать BDF-файлы, которые можно использовать в системе X Window, из файлов шрифтов TrueType. Выполнимые файлы Linux могут находиться по адресу link:ftp://crl.nmsu.edu/CLR/multiling/General[ftp://crl.nmsu.edu/CLR/multiling/General]. * и другие ... [[obtaining-additional-fonts]] == Где можно найти дополнительные шрифты? Много шрифтов можно найти в сети Интернет. Они либо абсолютно бесплатны, либо условно-бесплатны. В добавок, множество шрифтов находится в категории [.filename]#x11-fonts/# Коллекции Портов [[additional-questions]] == Дополнительные вопросы * Для чего предназначены файлы [.filename]#.pfm#? * Можно ли получить файл [.filename]#.afm# из файла [.filename]#.pfa# или [.filename]#.pfb#? * Как получить файлы преобразования символов Groff для PostScript-шрифтов с нестандартными названиями символов? * Можно ли настроить xditview и устройства devX?? на работу всех новых шрифтов? * Хорошо бы иметь примеры использования шрифтов TrueType с программами Povray и Ghostscript. diff --git a/documentation/content/ru/articles/fonts/_index.po b/documentation/content/ru/articles/fonts/_index.po index 75fdb09f33..ac43756d6f 100644 --- a/documentation/content/ru/articles/fonts/_index.po +++ b/documentation/content/ru/articles/fonts/_index.po @@ -1,1606 +1,1606 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2022-02-01 09:21-0300\n" -"PO-Revision-Date: 2025-10-02 04:45+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/fonts/_index.adoc:1 #, no-wrap msgid "A description of the various font technologies in FreeBSD, and how to use them with different programs" msgstr "" "Обзор технологий шрифтов в FreeBSD и способы их применения в разных " "программах" #. type: Title = #: documentation/content/en/articles/fonts/_index.adoc:1 #: documentation/content/en/articles/fonts/_index.adoc:12 #, no-wrap msgid "Fonts and FreeBSD" msgstr "Шрифты и FreeBSD" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:45 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:48 msgid "" "This document contains a description of the various font files that may be " "used with FreeBSD and the syscons driver, X11, Ghostscript and Groff. " "Cookbook examples are provided for switching the syscons display to 80x60 " "mode, and for using type 1 fonts with the above application programs." msgstr "" "Этот документ содержит описание различных файлов шрифтов, которые могут " "использоваться с FreeBSD и драйвером системной консоли, системой X11, " "программами Ghostscript и Groff. Даются реально работающие примеры по " "переключению экрана системной консоли в режим 80x60 и использованию файлов " "шрифтов формата Type 1 с перечисленными выше прикладными программами." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:50 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:54 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:59 msgid "" "There are many sources of fonts available, and one might ask how they might " "be used with FreeBSD. The answer can be found by carefully searching the " "documentation for the component that one would like to use. This is very " "time consuming, so this tutorial is an attempt to provide a shortcut for " "others who might be interested." msgstr "" "Существует много мест, где можно найти файлы шрифтов, но встает вопрос о " "возможных способах их использования с FreeBSD. Ответ может быть найден в " "результате тщательного изучения документации по тем компонентам, которые вы " "собираетесь использовать. На это тратится очень много времени, и это пособие " "является попыткой дать готовые ответы для тех, кто заинтересуется такими " "вопросами." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:61 #, no-wrap msgid "Basic Terminology" msgstr "Основные термины" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:65 msgid "" "There are many different font formats and associated font file suffixes. A " "few that will be addressed here are:" msgstr "" "Имеется множество различных форматов файлов шрифтов и соответствующих " -"окончаний имен файлов. Здесь обсуждаются лишь следующие из них:" +"окончаний имён файлов. Здесь обсуждаются лишь следующие из них:" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:66 #: documentation/content/en/articles/fonts/_index.adoc:110 #, no-wrap msgid "[.filename]#.pfa#, [.filename]#.pfb#" msgstr "[.filename]#.pfa#, [.filename]#.pfb#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:68 msgid "" "PostScript(R) type 1 fonts. The [.filename]#.pfa# is the __A__scii form and " "[.filename]#.pfb# the __B__inary form." msgstr "" "Файлы шрифтов PostScript(R) type 1. Файлы [.filename]#.pfa# являются " "текстовым (__A__scii) представлением, а [.filename]#.pfb# - двоичным " "(__B__inary)." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:69 #, no-wrap msgid "[.filename]#.afm#" msgstr "[.filename]#.afm#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:71 msgid "The font metrics associated with a type 1 font." msgstr "Параметры (метрики) соответствующих шрифтов типа type 1." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:72 #, no-wrap msgid "[.filename]#.pfm#" msgstr "[.filename]#.pfm#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:74 msgid "The printer font metrics associated with a type 1 font." msgstr "Метрики для принтеров соответствующих шрифтов типа type 1." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:75 #: documentation/content/en/articles/fonts/_index.adoc:116 #, no-wrap msgid "[.filename]#.ttf#" msgstr "[.filename]#.ttf#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:77 msgid "A TrueType(R) font" msgstr "Файл шрифтов TrueType(R)" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:78 #, no-wrap msgid "[.filename]#.fot#" msgstr "[.filename]#.fot#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:80 msgid "An indirect reference to a TrueType font (not an actual font)" msgstr "" "Неявная ссылка на файл шрифтов TrueType (реальной информации о шрифте здесь " "не содержится)" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:81 #, no-wrap msgid "[.filename]#.fon#, [.filename]#.fnt#" msgstr "[.filename]#.fon#, [.filename]#.fnt#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:83 msgid "Bitmapped screen fonts" msgstr "Файлы экранных шрифтов с побитным представлением" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:86 msgid "" "The [.filename]#.fot# is used by Windows(R) as sort of a symbolic link to " "the actual TrueType(R) font ([.filename]#.ttf#) file. The [.filename]#.fon# " "font files are also used by Windows. I know of no way to use this font " "format with FreeBSD." msgstr "" "Файлы [.filename]#.fot# используются в Windows(R) в качестве некой " "символической ссылки на файл со шрифтом в формате TrueType(R) ([.filename]#." "ttf#). Файлы шрифтов [.filename]#.fon# также используются в Windows(R). Мне " "неизвестно, как можно использовать этот формат шрифтов во FreeBSD." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:88 #, no-wrap msgid "What Font Formats Can I Use?" msgstr "Какие форматы файлов шрифтов я могу использовать?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:94 msgid "" "Which font file format is useful depends on the application being used. " "FreeBSD by itself uses no fonts. Application programs and/or drivers may " "make use of the font files. Here is a small cross reference of application/" "driver to the font type suffixes:" msgstr "" "То, файл шрифтов какого формата будет полезен, зависит от используемого " "приложения. Сама по себе FreeBSD шрифтов не использует. Прикладные программы " "и/или драйверы могут использовать файлы шрифтов. Вот краткий справочник по " "типам файлов шрифтов и приложениям/драйверам:" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:95 #, no-wrap msgid "Driver" msgstr "Драйвер" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:97 #, no-wrap msgid "vt" msgstr "vt" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:99 msgid "[.filename]#.hex#" msgstr "[.filename]#.hex#" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:100 #, no-wrap msgid "syscons" msgstr "syscons" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:102 msgid "[.filename]#.fnt#" msgstr "[.filename]#.fnt#" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:103 #, no-wrap msgid "Application" msgstr "Приложение" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:105 #, no-wrap msgid "Ghostscript" msgstr "Ghostscript" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:107 msgid "[.filename]#.pfa#, [.filename]#.pfb#, [.filename]#.ttf#" msgstr "[.filename]#.pfa#, [.filename]#.pfb#, [.filename]#.ttf#" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:108 #, no-wrap msgid "X11" msgstr "X11" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:111 #, no-wrap msgid "Groff" msgstr "Groff" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:113 msgid "[.filename]#.pfa#, [.filename]#.afm#" msgstr "[.filename]#.pfa#, [.filename]#.afm#" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:114 #, no-wrap msgid "Povray" msgstr "Povray" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:121 msgid "" "The [.filename]#.fnt# suffix is used quite frequently. I suspect that " "whenever someone wanted to create a specialized font file for their " "application, more often than not they chose this suffix. Therefore, it is " "likely that files with this suffix are not all the same format; " "specifically, the [.filename]#.fnt# files used by syscons under FreeBSD may " "not be the same format as a [.filename]#.fnt# one encounters in the MS-" "DOS(R)/Windows(R) environment. I have not made any attempt at using other [." "filename]#.fnt# files other than those provided with FreeBSD." msgstr "" "Окончание [.filename]#.fnt# используется достаточно часто. Я полагаю, что " "когда кто-нибудь собирается создать файл шрифтов для своего приложения, чаще " "всего выбирается именно это окончание. Поэтому файлы с таким окончанием не " "все имеют одинаковый формат; в частности, формат файлов [.filename]#.fnt#, " "используемых драйвером syscons во FreeBSD, может отличаться от формата " "файлов [.filename]#.fnt#, встречающихся в MS-DOS(R)/Windows(R). Я даже не " "пытался использовать другие файлы [.filename]#.fnt#, кроме тех, что " "поставляются с FreeBSD." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:123 #, no-wrap msgid "Setting a Virtual Console to 80x60 Line Mode" msgstr "Настройка виртуальной консоли на режим работы 80x60" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:127 msgid "" "First, an 8x8 font must be loaded. To do this, [.filename]#/etc/rc.conf# " "should contain the line (change the font name to an appropriate one for your " "locale):" msgstr "" "Во-первых, должен быть загружен шрифт размера 8x8. Для этого файл [." "filename]#/etc/rc.conf# должен содержать строчку (измените в ней имя файла " "со шрифтом на соответствующий вашей локализации):" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:131 #, no-wrap msgid "font8x8=\"iso-8x8\"\t\t# font 8x8 from /usr/share/syscons/fonts/* (or NO).\n" msgstr "" "font8x8=\"iso-8x8\"\t\t# font 8x8 from /usr/share/syscons/fonts/* (or NO).\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:134 msgid "The command to actually switch the mode is man:vidcontrol[1]:" msgstr "Команда для переключения режимов называется man:vidcontrol[1]:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:138 #, no-wrap msgid "% vidcontrol VGA_80x60\n" msgstr "% vidcontrol VGA_80x60\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:142 msgid "" "Various screen-oriented programs, such as man:vi[1], must be able to " "determine the current screen dimensions. As this is achieved this through " "`ioctl` calls to the console driver (such as man:syscons[4]) they will " "correctly determine the new screen dimensions." msgstr "" "Различные программы, ориентированные на работу с экраном, такие, как " "man:vi[1], должны уметь определять текущие размеры экрана. Так как это " -"делается через вызовы `ioctl` к драйверу консоли (такому, как man:syscons[4])" +"делается через вызовы `ioctl` к драйверу консоли (такому как man:syscons[4])" ", то размеры будут определяться правильно." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:145 msgid "" "To make this more seamless, one can embed these commands in the startup " "scripts so it takes place when the system boots. To do this is add this " "line to [.filename]#/etc/rc.conf#." msgstr "" "Чтобы это проходило более гладко, можно включить эти команды в скрипты " "начальной загрузки, чтобы они выполнялись при запуске системы. Чтобы это " "сделать, добавьте такую строчку в [.filename]#/etc/rc.conf#." #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:149 #, no-wrap msgid "allscreens_flags=\"VGA_80x60\"\t# Set this vidcontrol mode for all virtual screens\n" msgstr "" "allscreens_flags=\"VGA_80x60\"\t# Set this vidcontrol mode for all virtual " "screens\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:152 msgid "References: man:rc.conf[5], man:vidcontrol[1]." msgstr "Справочная информация: man:rc.conf[5], man:vidcontrol[1]." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:154 #, no-wrap msgid "Using Type 1 Fonts with X11" msgstr "Использование шрифтов type 1 с системой X11" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:159 msgid "" "X11 can use either the [.filename]#.pfa# or the [.filename]#.pfb# format " "fonts. The X11 fonts are located in various subdirectories under [." "filename]#/usr/X11R6/lib/X11/fonts#. Each font file is cross referenced to " "its X11 name by the contents of [.filename]#fonts.dir# in each directory." msgstr "" "X11 может использовать файлы шрифтов в формате [.filename]#.pfa# или [." "filename]#.pfb#. Шрифты для X11 располагаются в различных подкаталогах в [." "filename]#/usr/X11R6/lib/X11/fonts#. На каждый файл со шрифтом имеется " "ссылка по его X11-имени в файле [.filename]#fonts.dir# в каждом таком " "каталоге." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:165 msgid "" "There is already a directory named [.filename]#Type1#. The most straight " "forward way to add a new font is to put it into this directory. A better " "way is to keep all new fonts in a separate directory and use a symbolic link " "to the additional font. This allows one to more easily keep track of ones " "fonts without confusing them with the fonts that were originally provided. " "For example:" msgstr "" "Существует каталог по имени [.filename]#Type1#. Самым простым способом " "добавить новый шрифт заключается в помещении его в этот каталог. Но лучше " "хранить все новые шрифты в отдельном каталоге и использовать символические " "ссылки для добавляемых шрифтов. Это позволяет легко управлять отдельными " "добавляемыми шрифтами, не путая их с изначально поставляемыми. Например:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:171 #, no-wrap msgid "" "Create a directory to contain the font files\n" "% mkdir -p /usr/local/share/fonts/type1\n" "% cd /usr/local/share/fonts/type1\n" msgstr "" "Создаем каталог для файлов шрифтов\n" "% mkdir -p /usr/local/shared/fonts/type1\n" "% cd /usr/local/shared/fonts/type1\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:173 #, no-wrap msgid "Place the .pfa, .pfb and .afm files here\n" msgstr "Помещаем сюда файлы .pfa, .pfb и .afm\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:175 #, no-wrap msgid "One might want to keep readme files, and other documentation\n" msgstr "Кому-то может потребоваться хранить здесь также\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:179 #, no-wrap msgid "" "for the fonts here also\n" "% cp /cdrom/fonts/atm/showboat/showboat.pfb .\n" "% cp /cdrom/fonts/atm/showboat/showboat.afm .\n" msgstr "" "cопроводительные файлы и документацию к шрифтам\n" "% cp /cdrom/fonts/atm/showboat/showboat.pfb .\n" "% cp /cdrom/fonts/atm/showboat/showboat.afm .\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:182 #, no-wrap msgid "" "Maintain an index to cross reference the fonts\n" "% echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX\n" msgstr "" "Обновление индексного файла со ссылками на файлы шрифтов\n" "% echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:186 msgid "" "Now, to use a new font with X11, one must make the font file available and " "update the font name files. The X11 font names look like:" msgstr "" "Теперь, чтобы использовать новый шрифт с X11, нужно дать доступ к файлу " "шрифтов и обновить файлы и именами шрифтов. Имена шрифтов в X11 выглядят " "следующим образом:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:200 #, no-wrap msgid "" "-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1\n" " | | | | | | | | | | | | \\ \\\n" " | | | | | \\ \\ \\ \\ \\ \\ \\ +----+- character set\n" " | | | | \\ \\ \\ \\ \\ \\ \\ +- average width\n" " | | | | \\ \\ \\ \\ \\ \\ +- spacing\n" " | | | \\\t\\ \\ \\ \\ \\ +- vertical res.\n" " | | | \\\t \\\t\\ \\ \\ +- horizontal res.\n" " | | | \\\t \\\t \\ \\ +- points\n" " | | | \\ \\\t \\ +- pixels\n" " | | | \\ \\\t \\\n" " foundry family weight slant width additional style\n" msgstr "" "-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1\n" " | | | | | | | | | | | | \\ \\\n" " | | | | | \\ \\ \\ \\ \\ \\ \\ +----+- набор " "символов\n" " | | | | \\ \\ \\ \\ \\ \\ \\ +- средняя ширина\n" " | | | | \\ \\ \\ \\ \\ \\ +- spacing\n" " | | | \\\t\\ \\ \\ \\ \\ +- разрешение по " "вертикали\n" " | | | \\\t \\\t\\ \\ \\ +- разрешение по горизонтали\n" " | | | \\\t \\\t \\ \\ +- пунктов\n" " | | | \\ \\\t \\ +- пиксел\n" " | | | \\ \\\t \\\n" " foundry family weight slant width additional style\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:206 msgid "" "A new name needs to be created for each new font. If you have some " "information from the documentation that accompanied the font, then it could " "serve as the basis for creating the name. If there is no information, then " "you can get some idea by using man:strings[1] on the font file. For example:" msgstr "" "Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас " "есть какая-либо информация из сопроводительной документации к шрифту, то она " "может служить основой для создания имени. Если информации нет, то можно " "получить некоторую информацию от использования программы man:strings[1] над " "файлом шрифта. Например:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:234 #, no-wrap msgid "" "% strings showboat.pfb | more\n" "%!FontType1-1.0: Showboat 001.001\n" "%%CreationDate: 1/15/91 5:16:03 PM\n" "%%VMusage: 1024 45747\n" "% Generated by Fontographer 3.1\n" "% Showboat\n" " 1991 by David Rakowski. Alle Rechte Vorbehalten.\n" "FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup\n" "/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse\n" "{save true}{false}ifelse}{false}ifelse\n" "12 dict begin\n" "/FontInfo 9 dict dup begin\n" " /version (001.001) readonly def\n" " /FullName (Showboat) readonly def\n" " /FamilyName (Showboat) readonly def\n" " /Weight (Medium) readonly def\n" " /ItalicAngle 0 def\n" " /isFixedPitch false def\n" " /UnderlinePosition -106 def\n" " /UnderlineThickness 16 def\n" " /Notice (Showboat\n" " 1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def\n" "end readonly def\n" "/FontName /Showboat def\n" "--stdin--\n" msgstr "" "% strings showboat.pfb | more\n" "%!FontType1-1.0: Showboat 001.001\n" "%%CreationDate: 1/15/91 5:16:03 PM\n" "%%VMusage: 1024 45747\n" "% Generated by Fontographer 3.1\n" "% Showboat\n" " 1991 by David Rakowski. Alle Rechte Vorbehalten.\n" "FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup\n" "/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse\n" "{save true}{false}ifelse}{false}ifelse\n" "12 dict begin\n" "/FontInfo 9 dict dup begin\n" " /version (001.001) readonly def\n" " /FullName (Showboat) readonly def\n" " /FamilyName (Showboat) readonly def\n" " /Weight (Medium) readonly def\n" " /ItalicAngle 0 def\n" " /isFixedPitch false def\n" " /UnderlinePosition -106 def\n" " /UnderlineThickness 16 def\n" " /Notice (Showboat\n" " 1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def\n" "end readonly def\n" "/FontName /Showboat def\n" "--stdin--\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:237 msgid "Using this information, a possible name might be:" msgstr "Пользуясь этой информацией, можно составить возможное имя:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:241 #, no-wrap msgid "-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1\n" msgstr "-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:244 msgid "The components of our name are:" msgstr "Компонентами нашего имени являются:" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:245 #, no-wrap msgid "Foundry" msgstr "Foundry" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:247 msgid "Lets just name all the new fonts `type1`." msgstr "Давайте называть все новые шрифты `type1`." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:248 #, no-wrap msgid "Family" msgstr "Family" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:250 msgid "The name of the font." msgstr "Имя шрифта." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:251 #, no-wrap msgid "Weight" msgstr "Weight" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:254 msgid "" "Normal, bold, medium, semibold, etc. From the man:strings[1] output above, " "it appears that this font has a weight of __medium__." msgstr "" "Normal, bold, medium, semibold, и так далее. Из результата работы команды " "man:strings[1] похоже, что этот шрифт имеет ширину __medium__." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:255 #, no-wrap msgid "Slant" msgstr "Slant" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:258 msgid "" "__r__oman, __i__talic, __o__blique, etc. Since the _ItalicAngle_ is zero, " "_roman_ will be used." msgstr "" "__r__oman, __i__talic, __o__blique, и так далее. Так как _ItalicAngle_ равен " "нулю, то будет использоваться __roman__." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:259 #, no-wrap msgid "Width" msgstr "Width" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:262 msgid "" "Normal, wide, condensed, extended, etc. Until it can be examined, the " "assumption will be __normal__." msgstr "" "Normal, wide, condensed, extended, и так далее. Пока это не будет проверено, " "предполагаем __normal__." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:263 #, no-wrap msgid "Additional style" msgstr "Дополнительный стиль" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:265 msgid "" "Usually omitted, but this will indicate that the font contains decorative " "capital letters." msgstr "" "Обычно опускается, но он будет указывать, что в шрифте есть декоративные " "заглавные буквы." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:266 #, no-wrap msgid "Spacing" msgstr "Spacing" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:269 msgid "" "proportional or monospaced. _Proportional_ is used since _isFixedPitch_ is " "false." msgstr "" "proportional или monospaced. Используется __proportional__, потому что " "_isFixedPitch_ равен false." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:273 msgid "" "All of these names are arbitrary, but one should strive to be compatible " "with the existing conventions. A font is referenced by name with possible " "wild cards by an X11 program, so the name chosen should make some sense. " "One might begin by simply using" msgstr "" "Все эти имена произвольны, но нужно стараться следовать существующим " "соглашениям. В программе для X11 на шрифт ссылаются по имени с применением " "шаблонов, так что в выбираемом имени это должно учитываться. Можно начать с " "простого использования" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:277 #, no-wrap msgid "...-normal-r-normal-...-p-...\n" msgstr "...-normal-r-normal-...-p-...\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:280 msgid "" "as the name, and then use man:xfontsel[1] to examine it and adjust the name " "based on the appearance of the font." msgstr "" "в качестве имени, а затем использовать man:xfontsel[1] для его проверки и " "изменения имени на основе того, как выглядит шрифт." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:282 msgid "So, to complete our example:" msgstr "Итак, завершая наш пример:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:288 #, no-wrap msgid "" "Make the font accessible to X11\n" "% cd /usr/X11R6/lib/X11/fonts/Type1\n" "% ln -s /usr/local/share/fonts/type1/showboat.pfb .\n" msgstr "" "Делаем шрифт доступным для X11\n" "% cd /usr/X11R6/lib/X11/fonts/Type1\n" "% ln -s /usr/local/shared/fonts/type1/showboat.pfb .\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:301 #, no-wrap msgid "" "Edit fonts.dir and fonts.scale, adding the line describing the font\n" "and incrementing the number of fonts which is found on the first line.\n" "% ex fonts.dir\n" ":1p\n" "25\n" ":1c\n" "26\n" ".\n" ":$a\n" "showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1\n" ".\n" ":wq\n" msgstr "" "Редактируем файлы fonts.dir and fonts.scale, добавляя строку,\n" "описывающую шрифт и увеличивая количество шрифтов в первой строке.\n" "% ex fonts.dir\n" ":1p\n" "25\n" ":1c\n" "26\n" ".\n" ":$a\n" "showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-" "1\n" ".\n" ":wq\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:304 #, no-wrap msgid "" "fonts.scale seems to be identical to fonts.dir...\n" "% cp fonts.dir fonts.scale\n" msgstr "" "fonts.scale идентичен fonts.dir...\n" "% cp fonts.dir fonts.scale\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:307 #, no-wrap msgid "" "Tell X11 that things have changed\n" "% xset fp rehash\n" msgstr "" "Указываем X11, что произошли изменения\n" "% xset fp rehash\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:310 #, no-wrap msgid "" "Examine the new font\n" "% xfontsel -pattern -type1-*\n" msgstr "" "Проверяем новый шрифт\n" "% xfontsel -pattern -type1-*\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:313 msgid "" "References: man:xfontsel[1], man:xset[1], The X Windows System in a " "Nutshell, http://www.ora.com/[O'Reilly & Associates]." msgstr "" "Справочная информация: man:xfontsel[1], man:xset[1], The X Windows System in " "a Nutshell, http://www.ora.com/[O'Reilly & Associates]." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:315 #, no-wrap msgid "Using Type 1 Fonts with Ghostscript" msgstr "Использование шрифтов type 1 с пакетом Ghostscript" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:321 msgid "" "Ghostscript references a font via its [.filename]#Fontmap#. This must be " "modified in a similar way to the X11 [.filename]#fonts.dir#. Ghostscript " "can use either the [.filename]#.pfa# or the [.filename]#.pfb# format fonts. " "Using the font from the previous example, here is how to use it with " "Ghostscript:" msgstr "" "Ghostscript ссылается на шрифт через свой файл [.filename]#Fontmap#. Он " "должен быть подправлен так же, как и файл [.filename]#fonts.dir# в случае " "X11. Ghostscript может использовать файлы шрифтов в форматах [.filename]#." "pfa# или [.filename]#.pfb#. Взяв шрифт из предыдущего примера, его можно " "использовать с Ghostscript вот так:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:327 #, no-wrap msgid "" "Put the font in Ghostscript's font directory\n" "% cd /usr/local/share/ghostscript/fonts\n" "% ln -s /usr/local/share/fonts/type1/showboat.pfb .\n" msgstr "" "Помещаем файл со шрифтом в каталог со шрифтами Ghostscript\n" "% cd /usr/local/shared/ghostscript/fonts\n" "% ln -s /usr/local/shared/fonts/type1/showboat.pfb .\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:335 #, no-wrap msgid "" "Edit Fontmap so Ghostscript knows about the font\n" "% cd /usr/local/share/ghostscript/4.01\n" "% ex Fontmap\n" ":$a\n" "/Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat\n" ".\n" ":wq\n" msgstr "" "Редактируем Fontmap, чтобы Ghostscript знал о шрифте\n" "% cd /usr/local/shared/ghostscript/4.01\n" "% ex Fontmap\n" ":$a\n" "/Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat\n" ".\n" ":wq\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:351 #, no-wrap msgid "" "Use Ghostscript to examine the font\n" "% gs prfont.ps\n" "Aladdin Ghostscript 4.01 (1996-7-10)\n" "Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights\n" "reserved.\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb...\n" " /1899520 581354 1300084 13826 0 done.\n" "GS>Showboat DoFont\n" "Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb...\n" " 1939688 565415 1300084 16901 0 done.\n" ">>showpage, press to continue<<\n" ">>showpage, press to continue<<\n" ">>showpage, press to continue<<\n" "GS>quit\n" msgstr "" "Используем Ghostscript для проверки шрифта\n" "% gs prfont.ps\n" "Aladdin Ghostscript 4.01 (1996-7-10)\n" "Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights\n" "reserved.\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____." "pfb...\n" " /1899520 581354 1300084 13826 0 done.\n" "GS>Showboat DoFont\n" "Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb..." "\n" " 1939688 565415 1300084 16901 0 done.\n" ">>showpage, press to continue<<\n" ">>showpage, press to continue<<\n" ">>showpage, press to continue<<\n" "GS>quit\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:354 msgid "References: [.filename]#fonts.txt# in the Ghostscript 4.01 distribution" msgstr "" "Справочная информация: [.filename]#fonts.txt# из дистрибутива Ghostscript 4." "01" #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:356 #, no-wrap msgid "Using Type 1 Fonts with Groff" msgstr "Использование шрифтов в формате type 1 с программой Groff" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:363 msgid "" "Now that the new font can be used by both X11 and Ghostscript, how can one " "use the new font with groff? First of all, since we are dealing with type 1 " "PostScript(R) fonts, the groff device that is applicable is the _ps_ " "device. A font file must be created for each font that groff can use. A " "groff font name is just a file in [.filename]#/usr/share/groff_font/devps#. " "With our example, the font file could be [.filename]#/usr/share/groff_font/" "devps/SHOWBOAT#. The file must be created using tools provided by groff." msgstr "" "Теперь, когда новый шрифт может быть использован как с X11, так и в " "Ghostscript, как использовать его с программой Groff? Во-первых, так как мы " "имеем дело со PostScript(R)-шрифтами формата type 1, то подходящим " "устройством Groff является __ps__. Для каждого шрифта, который может " "использоваться программой Groff, должен быть создан файл шрифта. Имя шрифта " "для Groff является просто именем файла из каталога [.filename]#/usr/shared/" "groff_font/devps#. В нашем примере файлом шрифта может быть [.filename]#/usr/" "shared/groff_font/devps/SHOWBOAT#. Файл должен быть создан с помощью утилит, " "поставляемых с программой Groff." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:367 msgid "" "The first tool is `afmtodit`. This is not normally installed, so it must be " "retrieved from the source distribution. I found I had to change the first " "line of the file, so I did:" msgstr "" "Первой утилитой является `afmtodit`. Обычно она не устанавливается, так что " "она должна быть получена из дистрибутива с исходными текстами. Я обнаружил, " "что нужно изменить первую строку файла, что я делал так:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:376 #, no-wrap msgid "" "% cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp\n" "% ex /tmp/afmtodit.pl\n" ":1c\n" "#!/usr/bin/perl -P-\n" ".\n" ":wq\n" msgstr "" "% cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp\n" "% ex /tmp/afmtodit.pl\n" ":1c\n" "#!/usr/bin/perl -P-\n" ".\n" ":wq\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:380 msgid "" "This tool will create the groff font file from the metrics file ([." "filename]#.afm# suffix.) Continuing with our example:" msgstr "" "Эта утилита создаст файл шрифтов для Groff из файла метрик (с окончанием [." "filename]#.afm#). Продолжая с нашим примером:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:388 #, no-wrap msgid "" "Many .afm files are in Mac format... ^M delimited lines\n" "We need to convert them to UNIX(R) style ^J delimited lines\n" "% cd /tmp\n" "% cat /usr/local/share/fonts/type1/showboat.afm |\n" "\ttr '\\015' '\\012' >showboat.afm\n" msgstr "" "Многие файлы .afm в формате Mac ... строки разделены символом ^M.\n" "Нам нужно преобразовать их в разделитель ^J в стиле UNIX(R)\n" "% cd /tmp\n" "% cat /usr/local/shared/fonts/type1/showboat.afm |\n" "\ttr '\\015' '\\012' >showboat.afm\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:392 #, no-wrap msgid "" "Now create the groff font file\n" "% cd /usr/share/groff_font/devps\n" "% /tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT\n" msgstr "" "Теперь создаем файл шрифтов groff\n" "% cd /usr/share/groff_font/devps\n" "% /tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap " "SHOWBOAT\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:395 msgid "The font can now be referenced with the name SHOWBOAT." msgstr "Теперь к шрифту можно обращаться по имени SHOWBOAT." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:402 msgid "" "If Ghostscript is used to drive the printers on the system, then nothing " "more needs to be done. However, if true PostScript(R) printers are used, " "then the font must be downloaded to the printer in order for the font to be " "used (unless the printer happens to have the showboat font built in or on an " "accessible font disk.) The final step is to create a downloadable font. " "The `pfbtops` tool is used to create the [.filename]#.pfa# format of the " "font, and [.filename]#download# is modified to reference the new font. The " "[.filename]#download# must reference the internal name of the font. This " "can easily be determined from the groff font file as illustrated:" msgstr "" "Если в системе для управления принтерами используется программа Ghostscript, " "то больше ничего делать не нужно. Однако, если используются настоящие " "PostScript(R)-принтеры, то для использования шрифта его нужно загрузить в " "принтер (если только в принтере шрифт showboat не встроен или не имеется на " "диске со шрифтами). Последний шаг заключается в создании загружаемого " "шрифта. Утилита `pfbtops` используется для создания шрифта в формате [." "filename]#.pfa#, а файл для [.filename]#загрузки# изменяется для указания " "нового шрифта. Файл для [.filename]#загрузки# должен ссылаться на внутреннее " "имя шрифта. Оно может быть легко определено из файла шрифтов groff, как это " "показывается здесь:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:407 #, no-wrap msgid "" "Create the .pfa font file\n" "% pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa\n" msgstr "" "Создание файла шрифта .pfa\n" "% pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:410 msgid "" "Of course, if [.filename]#.pfa# is already available, just use a symbolic " "link to reference it." msgstr "" "Конечно, если файл [.filename]#.pfa# уже имеется, для его использования " "создаем символическую ссылку на него." #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:422 #, no-wrap msgid "" "Get the internal font name\n" "% fgrep internalname SHOWBOAT\n" "internalname Showboat\n" "Tell groff that the font must be downloaded\n" "% ex download\n" ":$a\n" "Showboat showboat.pfa\n" ".\n" ":wq\n" msgstr "" "Получение внутреннего имени шрифта\n" "% fgrep internalname SHOWBOAT\n" "internalname Showboat\n" "Указываем утилите groff, что шрифт должен быть загружен\n" "% ex download\n" ":$a\n" "Showboat showboat.pfa\n" ".\n" ":wq\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:425 msgid "To test the font:" msgstr "Для тестирования шрифта:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:456 #, no-wrap msgid "" "% cd /tmp\n" "% cat >example.t <example.ps\n" msgstr "" "% cd /tmp\n" "% cat >example.t <example.ps\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:459 #, no-wrap msgid "" "To use ghostscript/ghostview\n" "% ghostview example.ps\n" msgstr "" "Для использования с ghostscript/ghostview\n" "% ghostview example.ps\n" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:462 #, no-wrap msgid "" "To print it\n" "% lpr -Ppostscript example.ps\n" msgstr "" "Для его печати\n" "% lpr -Ppostscript example.ps\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:465 msgid "" "References: [.filename]#/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man#, " "man:groff_font[5], man:groff_char[7], man:pfbtops[1]." msgstr "" "Справочная информация: [.filename]#/usr/src/gnu/usr.bin/groff/afmtodit/" "afmtodit.man#, man:groff_font[5], man:groff_char[7], man:pfbtops[1]." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:467 #, no-wrap msgid "Converting TrueType Fonts to a groff/PostScript Format For groff" msgstr "" "Преобразование файлов шрифтов TrueType в формат groff/PostScript для " "использования с groff" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:471 msgid "" "This potentially requires a bit of work, simply because it depends on some " "utilities that are not installed as part of the base system. They are:" msgstr "" "Потенциально это требует некоторых усилий, просто потому что зависит " "некоторых утилит, которые в качестве части системы не устанавливаются. Это:" #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:472 #, no-wrap msgid "`ttf2pf`" msgstr "`ttf2pf`" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:475 msgid "" "TrueType to PostScript conversion utilities. This allows conversion of a " "TrueType font to an ascii font metric ([.filename]#.afm#) file." msgstr "" "Утилита для преобразования TrueType в PostScript. Она позволяет " "преобразовать шрифт TrueType в метрику шрифта в текстовом формате (файл [." "filename]#.afm#)." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:479 msgid "" "Currently available at http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/" "ttf2pf/[http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/]. " "Note: These files are PostScript programs and must be downloaded to disk by " "holding down kbd:[Shift] when clicking on the link. Otherwise, your browser " "may try to launch ghostview to view them." msgstr "" "Доступна по адресу http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/" "ttf2pf/[http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/]. " "Замечание: Эти файлы являются PostScript-программами и должны быть скачаны " "на диск щелчком на ссылке при нажатой клавише kbd:[Shift]. В противном " "случае для их просмотра ваш браузер может попытаться запустить программу " "ghostview." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:481 msgid "The files of interest are:" msgstr "Интерес представляют следующие файлы:" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:483 msgid "[.filename]#GS_TTF.PS#" msgstr "[.filename]#GS_TTF.PS#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:484 msgid "[.filename]#PF2AFM.PS#" msgstr "[.filename]#PF2AFM.PS#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:485 msgid "[.filename]#ttf2pf.ps#" msgstr "[.filename]#ttf2pf.ps#" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:491 msgid "" "The funny upper/lower case is due to their being intended also for DOS " "shells. [.filename]#ttf2pf.ps# makes use of the others as upper case, so " "any renaming must be consistent with this. (Actually, [.filename]#GS_TTF." "PS# and [.filename]#PFS2AFM.PS# are supposedly part of the Ghostscript " "distribution, but it is just as easy to use these as an isolated utility. " "FreeBSD does not seem to include the latter.) You also may want to have " "these installed to [.filename]#/usr/local/share/groff_font/devps#(?)." msgstr "" "Смесь верхнего/нижнего регистров присутствует из-за того, что эти файлы " "предназначены и для DOS. [.filename]#ttf2pf.ps# использует остальные с " "именами в верхнем регистре, так что при переименовании это нужно учитывать. (" "На самом деле [.filename]#GS_TTF.PS# и [.filename]#PFS2AFM.PS# " "предположительно являются частью дистрибутива Ghostscript, но их легко " "использовать как отдельные утилиты. В поставку FreeBSD они не включены.) Вы " "можете также установить их в каталог [.filename]#/usr/local/shared/" "groff_font/devps#(?)." #. type: Labeled list #: documentation/content/en/articles/fonts/_index.adoc:492 #, no-wrap msgid "`afmtodit`" msgstr "`afmtodit`" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:495 msgid "" "Creates font files for use with groff from ascii font metrics file. This " "usually resides in the directory, [.filename]#/usr/src/contrib/groff/" "afmtodit#, and requires some work to get going." msgstr "" "Создает файлы шрифтов для использования с программой Groff из текстовых " "файлов с метриками шрифта. Она обычно располагается в каталоге [.filename]#/" -"usr/src/contrib/groff/afmtodit# и для ее использования требуется проделать " +"usr/src/contrib/groff/afmtodit# и для её использования требуется проделать " "некоторую работу." #. type: delimited block = 4 #: documentation/content/en/articles/fonts/_index.adoc:499 msgid "" "If you are paranoid about working in the [.filename]#/usr/src# tree, simply " "copy the contents of the above directory to a work location." msgstr "" "Если вы избегаете работать в дереве [.filename]#/usr/src#, просто скопируйте " "содержимое вышеупомянутого каталога во временный рабочий каталог." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:503 msgid "In the work area, you will need to make the utility. Just type:" msgstr "" "Во рабочем каталоге вам нужно построить утилиту. Просто введите такую " "команду:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:507 #, no-wrap msgid "# make -f Makefile.sub afmtodit\n" msgstr "# make -f Makefile.sub afmtodit\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:510 msgid "" "You may also need to copy [.filename]#/usr/contrib/groff/devps/generate/" "textmap# to [.filename]#/usr/share/groff_font/devps/generate# if it does not " "already exist." msgstr "" "Вам может также потребоваться скопировать [.filename]#/usr/contrib/groff/" "devps/generate/textmap# в [.filename]#/usr/shared/groff_font/devps/generate#" ", если его не существует." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:512 msgid "Once all these utilities are in place, you are ready to commence:" msgstr "Как только эти утилиты готовы, вы можете начать:" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:514 msgid "Create [.filename]#.afm# by typing:" msgstr "Создайте файл [.filename]#.afm# по такой команде:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:518 #, no-wrap msgid "% gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name\n" msgstr "% gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:521 msgid "" "Where, _TTF_name_ is your TrueType font file, _PS_font_name_ is the file " "name for [.filename]#.pfa#, _AFM_name_ is the name you wish for [.filename]#." "afm#. If you do not specify output file names for the [.filename]#.pfa# or [." "filename]#.afm# files, then default names will be generated from the " "TrueType font file name." msgstr "" "Здесь _TTF_name_ обозначает ваш файл со шрифтом TrueType, _PS_font_name_ " "является именем для файла [.filename]#.pfa#, _AFM_name_ задает имя для файла " "[.filename]#.afm#. Если вы не укажете имена выходных файлов, для форматов [." "filename]#.pfa# или [.filename]#.afm#, то по умолчанию будут использоваться " "имена, получаемые из имени файла со шрифтом TrueType." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:524 msgid "" "This also produces a [.filename]#.pfa#, the ascii PostScript font metrics " "file ([.filename]#.pfb# is for the binary form). This will not be needed, " "but could (I think) be useful for a fontserver." msgstr "" "При этом также будет создан файл [.filename]#.pfa#, текстовый файл с " "метриками PostScript-шрифта (([.filename]#.pfb# для двоичного представления)" ". Это не будет обязательно, но может быть (я думаю) полезным для сервера " "шрифтов." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:526 msgid "" "For example, to convert the 30f9 Barcode font using the default file names, " "use the following command:" msgstr "" "Например, для преобразования шрифта 30f9 Barcode с именами файлов по " "умолчанию, воспользуйтесь следующей командой:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:534 #, no-wrap msgid "" "% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf\n" "Aladdin Ghostscript 5.10 (1997-11-23)\n" "Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Converting 3of9.ttf to 3of9.pfa and 3of9.afm.\n" msgstr "" "% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf\n" "Aladdin Ghostscript 5.10 (1997-11-23)\n" "Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved." "\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Converting 3of9.ttf to 3of9.pfa and 3of9.afm.\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:537 msgid "" "If you want the converted fonts to be stored in [.filename]#A.pfa# and [." "filename]#B.afm#, then use this command:" msgstr "" "Если вы хотите, чтобы преобразованные шрифты сохранялись в файлы [." "filename]#A.pfa# and [.filename]#B.afm#, то выдайте такую команду:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:545 #, no-wrap msgid "" "% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B\n" "Aladdin Ghostscript 5.10 (1997-11-23)\n" "Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Converting 3of9.ttf to A.pfa and B.afm.\n" msgstr "" "% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B\n" "Aladdin Ghostscript 5.10 (1997-11-23)\n" "Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved." "\n" "This software comes with NO WARRANTY: see the file PUBLIC for details.\n" "Converting 3of9.ttf to A.pfa and B.afm.\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:548 msgid "Create the groff PostScript file:" msgstr "Создайте PostScript-файл для Groff:" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:552 msgid "" "Change directories to [.filename]#/usr/share/groff_font/devps# so as to make " "the following command easier to execute. You will probably need root " "privileges for this. (Or, if you are paranoid about working there, make " "sure you reference the files [.filename]#DESC#, [.filename]#text.enc# and [." "filename]#generate/textmap# as being in this directory.)" msgstr "" "Смените текущий каталог на [.filename]#/usr/shared/groff_font/devps# для " "облегчения запуска упоминаемых далее программ. Для этого вам может " "понадобиться иметь привилегии администратора системы. (Или, если вы " "избегаете здесь работать, обязательно посмотрите файлы [.filename]#DESC#, [." "filename]#text.enc# и [.filename]#generate/textmap# в этом каталоге.)" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:556 #, no-wrap msgid "% afmtodit -d DESC -e text.enc file.afm generate/textmap PS_font_name\n" msgstr "% afmtodit -d DESC -e text.enc file.afm generate/textmap PS_font_name\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:560 msgid "" "Where, [.filename]#file.afm# is the _AFM_name_ created by `ttf2pf.ps` above, " "and _PS_font_name_ is the font name used from that command, as well as the " "name that man:groff[1] will use for references to this font. For example, " "assuming you used the first `tiff2pf.ps` above, then the 3of9 Barcode font " "can be created using the command:" msgstr "" "Здесь [.filename]#file.afm# является файлом _AFM_name_, созданным программой " "`ttf2pf.ps` выше, а _PS_font_name_ является именем шрифта, используемым в " "той команде, так же, как и имя, которое будет использовать утилита " "man:groff[1] для ссылки на этот шрифт. Например, полагая, что вы " "использовали первую команду `tiff2pf.ps` выше, то шрифт 3of9 Barcode может " "быть создан при помощи такой команды:" #. type: delimited block . 4 #: documentation/content/en/articles/fonts/_index.adoc:564 #, no-wrap msgid "% afmtodit -d DESC -e text.enc 3of9.afm generate/textmap 3of9\n" msgstr "% afmtodit -d DESC -e text.enc 3of9.afm generate/textmap 3of9\n" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:567 msgid "" "Ensure that the resulting _PS_font_name_ file (e.g., [.filename]#3of9# in " "the example above) is located in the directory [.filename]#/usr/share/" "groff_font/devps# by copying or moving it there." msgstr "" "Проверьте, что полученный файл _PS_font_name_ (к примеру, [.filename]#3of9# " "из примера выше) расположен в каталоге [.filename]#/usr/shared/groff_font/" "devps#, скопировав или перенеся его сюда." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:570 msgid "" "Note that if [.filename]#ttf2pf.ps# assigns a font name using the one it " "finds in the TrueType font file and you want to use a different name, you " "must edit the [.filename]#.afm# prior to running `afmtodit`. This name must " "also match the one used in the Fontmap file if you wish to pipe man:groff[1] " "into man:gs[1]." msgstr "" "Заметьте, что если [.filename]#ttf2pf.ps# назначает имя шрифта, используя " "один из найденных в файле шрифта TrueType, а вы хотите использовать другое " "имя, то вы должны отредактировать файл [.filename]#.afm# до запуска команды " "`afmtodit`. Это имя к тому же должно совпадать с тем, что используется в " "файле Fontmap, если вы собираетесь перенаправлять вывод man:groff[1] утилите " "man:gs[1]." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:572 #, no-wrap msgid "Can TrueType Fonts be Used with Other Programs?" msgstr "Можно ли использовать шрифты в формате TrueType с другими программами?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:576 msgid "" "The TrueType font format is used by Windows, Windows 95, and Mac's. It is " "quite popular and there are a great number of fonts available in this format." msgstr "" "Формат TrueType используется в Windows, Windows 95 и на компьютерах " "Macintosh. Он достаточно популярен и в этом формате имеется большое " "количество шрифтов." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:580 msgid "" "Unfortunately, there are few applications that I am aware of that can use " "this format: Ghostscript and Povray come to mind. Ghostscript's support, " "according to the documentation, is rudimentary and the results are likely to " "be inferior to type 1 fonts. Povray version 3 also has the ability to use " "TrueType fonts, but I rather doubt many people will be creating documents as " "a series of raytraced pages :-)." msgstr "" "К сожалению, я знаю лишь несколько программ, которые могут использовать этот " "формат: на ум приходят Ghostscript и Povray. Его поддержка в программе " "Ghostscript, согласно документации, находится в зачаточном состоянии и " "получаемый результат хуже того, что получается при использовании шрифтов " "type 1. Программа Povray версии 3 также может использовать шрифты TrueType, " "но я очень сомневаюсь, что много кто создает документы как " "последовательность анимированных страниц :-)." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:583 msgid "" "This rather dismal situation may soon change. The http://www.freetype.org/" "[FreeType Project] is currently developing a useful set of FreeType tools:" msgstr "" "Такая весьма печальная ситуация может вскоре измениться. В рамках проекта " "http://www.freetype.org/[FreeType Project] в настоящее время разрабатывается " "полезный набор инструментов для работы с FreeType:" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:585 msgid "" "The `xfsft` font server for X11 can serve TrueType fonts in addition to " "regular fonts. Though currently in beta, it is said to be quite usable. See " "http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/[Juliusz Chroboczek's page] " "for further information. Porting instructions for FreeBSD can be found at " "http://math.missouri.edu/~stephen/software/[Stephen Montgomery's software " "page]." msgstr "" "Сервер шрифтов `xfsft` для X11 может работать и со шрифтами TrueType, и с " -"обычными шрифтами. Хотя в настоящее время он еще находится в стадии отладки, " +"обычными шрифтами. Хотя в настоящее время он ещё находится в стадии отладки, " "но его уже можно использовать. Посмотрите http://www.dcs.ed.ac.uk/home/jec/" "programs/xfsft/[страницу Juliusz Chroboczek], чтобы получить более полную " "информацию. Указания по переносу на FreeBSD можно найти на странице " "http://math.missouri.edu/~stephen/software/[Стивена Монтгомери] (Stephen " "Montgomery), посвященной программному обеспечению." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:586 msgid "" "xfstt is another font server for X11, available under link:ftp://sunsite.unc." "edu/pub/Linux/X11/fonts/[ftp://sunsite.unc.edu/pub/Linux/X11/fonts/]." msgstr "" -"xfstt является еще одним сервером шрифтов для X11, доступный по адресу " +"xfstt является ещё одним сервером шрифтов для X11, доступный по адресу " "link:ftp://sunsite.unc.edu/pub/Linux/X11/fonts[ftp://sunsite.unc.edu/pub/" "Linux/X11/fonts]." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:587 msgid "" "A program called `ttf2bdf` can produce BDF files suitable for use in an X " "environment from TrueType files. Linux binaries are said to be available " "from link:ftp://crl.nmsu.edu/CLR/multiling/General/[ftp://crl.nmsu.edu/CLR/" "multiling/General/]." msgstr "" "Программа, которая называется `ttf2bdf`, может генерировать BDF-файлы, " "которые можно использовать в системе X Window, из файлов шрифтов TrueType. " "Выполнимые файлы Linux могут находиться по адресу link:ftp://crl.nmsu.edu/" "CLR/multiling/General[ftp://crl.nmsu.edu/CLR/multiling/General]." #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:588 msgid "and others ..." msgstr "и другие ..." #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:590 #, no-wrap msgid "Where Can Additional Fonts be Obtained?" msgstr "Где можно найти дополнительные шрифты?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:595 msgid "" "Many fonts are available on the Internet. They are either entirely free, or " "are share-ware. In addition many fonts are available in the [.filename]#x11-" "fonts/# category in the ports collection" msgstr "" "Много шрифтов можно найти в сети Интернет. Они либо абсолютно бесплатны, " "либо условно-бесплатны. В добавок, множество шрифтов находится в категории [." "filename]#x11-fonts/# Коллекции Портов" #. type: Title == #: documentation/content/en/articles/fonts/_index.adoc:597 #, no-wrap msgid "Additional Questions" msgstr "Дополнительные вопросы" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:600 msgid "What use are the [.filename]#.pfm# files?" msgstr "Для чего предназначены файлы [.filename]#.pfm#?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:601 msgid "" "Can one generate the [.filename]#.afm# from a [.filename]#.pfa# or [." "filename]#.pfb#?" msgstr "" "Можно ли получить файл [.filename]#.afm# из файла [.filename]#.pfa# или [." "filename]#.pfb#?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:602 msgid "" "How to generate the groff character mapping files for PostScript fonts with " "non-standard character names?" msgstr "" "Как получить файлы преобразования символов Groff для PostScript-шрифтов с " "нестандартными названиями символов?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:603 msgid "Can xditview and devX?? devices be set up to access all the new fonts?" msgstr "" "Можно ли настроить xditview и устройства devX?? на работу всех новых шрифтов?" #. type: Plain text #: documentation/content/en/articles/fonts/_index.adoc:603 msgid "" "It would be good to have examples of using TrueType fonts with Povray and " "Ghostscript." msgstr "" "Хорошо бы иметь примеры использования шрифтов TrueType с программами Povray " "и Ghostscript." diff --git a/documentation/content/ru/articles/freebsd-questions/_index.adoc b/documentation/content/ru/articles/freebsd-questions/_index.adoc index c707b57c82..9fb3b9c6fe 100644 --- a/documentation/content/ru/articles/freebsd-questions/_index.adoc +++ b/documentation/content/ru/articles/freebsd-questions/_index.adoc @@ -1,200 +1,200 @@ --- authors: - author: 'Greg Lehey' email: grog@FreeBSD.org description: 'Как работать со списком рассылки FreeBSD-questions c максимальной отдачей' tags: ["questions", "mailing", "FreeBSD"] title: 'Как работать со списком рассылки FreeBSD-questions c максимальной отдачей' trademarks: ["freebsd", "microsoft", "opengroup", "qualcomm", "general"] --- = Как работать со списком рассылки FreeBSD-questions c максимальной отдачей :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/freebsd-questions/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация В этом документе содержится информация, которая будет полезна тем, кто собирается отправить письмо в список рассылки FreeBSD-questions. Даются советы и рекомендации, которые максимально увеличат шанс на получение полезных ответов. Этот документ регулярно публикуется в списке рассылки FreeBSD-questions. ''' toc::[] == Введение `FreeBSD-questions` является списком рассылки, который поддерживается проектом FreeBSD для оказания помощи тем, у кого возникли вопросы по поводу использования FreeBSD в повседневной работе. В другом списке рассылки, `FreeBSD-hackers`, обсуждаются более сложные вопросы, такие, как направление будущей работы над системой. [NOTE] ==== -Термин "хакер" не имеет ничего общего с проникновением на компьютеры других людей. Правильным термином для обозначения такой деятельности является "кракер", однако популярная пресса этого еще не поняла. Хакеры FreeBSD нарушением защиты не занимаются. Более полное описание хакеров находится в руководстве Эрика Рэймонда (Eric Raymond) http://www.catb.org/~esr/faqs/hacker-howto.html[Как стать хакером] +Термин "хакер" не имеет ничего общего с проникновением на компьютеры других людей. Правильным термином для обозначения такой деятельности является "кракер", однако популярная пресса этого ещё не поняла. Хакеры FreeBSD нарушением защиты не занимаются. Более полное описание хакеров находится в руководстве Эрика Рэймонда (Eric Raymond) http://www.catb.org/~esr/faqs/hacker-howto.html[Как стать хакером] ==== Данный регулярно рассылаемый документ предназначен для помощи как тем, кто ищет ответов на вопросы во FreeBSD-questions ("новички"), так и тем, кто на эти вопросы отвечает ("хакеры"). Несомненно, здесь существуют некоторые трения, которые проистекают из-за разных точек зрения этих двух групп. Новички обвиняют хакеров в высокомерии, заносчивости и несостоятельности в оказании помощи, когда как хакеры обвиняют начинающих в том, что последние глупы, не умеют читать по-английски и ждут, что им все будет преподнесено на блюдечке с голубой каемочкой. Конечно, есть элемент правды в обоих этих утверждениях, однако по большей части такие мнения появляются из-за чувства разочарования. В этом документе я постараюсь уменьшить это разочарование и помочь всем получить более хорошие результаты от FreeBSD-questions. В следующем разделе я дам рекомендации по посылке вопросов; после этого мы посмотрим, как нужно на них отвечать. == Как подписаться на FreeBSD-questions FreeBSD-questions является списком рассылки, распространяемым по электронной почте, поэтому вам нужен доступ к системе электронной почты. Зайдите через ваш WWW браузер на {freebsd-questions}. В разделе "Подписка на freebsd-questions" (Subscribing to freebsd-questions) заполните поле "Ваш адрес электронной почты" (Your email address); другие поля являются опциональными. Вы получите подтверждающее сообщение от mlmmj; следуйте приложенным инструкциям для завершения подписки. == Как отписаться от FreeBSD-questions Направьте ваш браузер на {freebsd-questions}. В разделе "Subscribe or unsubscribe online" заполните поле "Your email address" и нажмите "Unsubscribe". Или отправьте письмо на freebsd-questions+unsubscribe@freebsd.org. Сообщение с подтверждением будет отправлено вам от mlmmj; следуйте приложенным инструкциям, чтобы завершить отмену подписки. == Нужно задавать вопросы в `-questions` или `-hackers`? Общим вопросам по FreeBSD посвящены два списка рассылки, `FreeBSD-questions` и `FreeBSD-hackers`. В некоторых случаях на самом деле не ясно, в каком списке нужно задавать вопрос. Следующий критерий, однако, должен помочь в 98% всех случаев: . Если вопрос является общим, спрашивайте во `FreeBSD-questions`. Примерами могут служить вопросы по установке FreeBSD или использованию конкретных утилит UNIX(R). -. Если вы думаете, что вопрос относится к ошибке, но вы не уверены или не знаете, как ее исправить, пошлите сообщение во `FreeBSD-questions`. +. Если вы думаете, что вопрос относится к ошибке, но вы не уверены или не знаете, как её исправить, пошлите сообщение во `FreeBSD-questions`. . Если вопрос относится к ошибке и вы __уверены__, что это ошибка (например, вы можете указать место в коде, где она происходит, и, может быть, у вас есть для нее исправление), то пошлите сообщение в список рассылки `FreeBSD-hackers`. -. Если вопрос относится к усовершенствованию FreeBSD, и вы можете дать предложения по ее реализации, то посылайте сообщение во `FreeBSD-hackers`. +. Если вопрос относится к усовершенствованию FreeBSD, и вы можете дать предложения по её реализации, то посылайте сообщение во `FreeBSD-hackers`. Имеется также некоторое количество других extref:{handbook}eresources[специализированных списков рассылки, eresources-mail]. Здесь также подходит указанный выше критерий, и в ваших интересах следовать ему, потому что именно так можно получить результат. == Перед посылкой вопроса Вы можете (и должны) что-нибудь сделать сами перед тем, как задать вопрос в одном из списков рассылки: * Попытайтесь решить проблему самостоятельно. Если вы пошлёте вопрос, который покажет, что вы пытались решить проблему, ваш вопрос, как правило, привлечёт более положительное внимание со стороны людей, читающих его. Попытка решить проблему самостоятельно также увеличит уровень вашего понимания FreeBSD, и в конечном счёте позволит вам использовать ваши знания для помощи другим, отвечая на вопросы, посылаемые в списки рассылки. * Прочтите страницы справочника и документацию FreeBSD (установлена в [.filename]#/usr/doc# или доступна через WWW на http://www.FreeBSD.org[http://www.FreeBSD.org]), особенно extref:{handbook}[Руководство пользователя] и extref:{faq}[FAQ]. * Просмотрите и/или выполните поиск по архивам списка рассылки, чтобы узнать, задавался ли ваш вопрос или подобный ему в списке (и возможно, был на него ответ). Вы можете просматривать и/или искать архивы списка рассылки по адресам https://www.FreeBSD.org/mail[https://www.FreeBSD.org/mail] и https://www.FreeBSD.org/search/#mailinglists[https://www.FreeBSD.org/search/#mailinglists] соответственно. * Используйте поисковик, например, http://www.google.com[Google] или http://www.yahoo.com[Yahoo] для поиска ответов на ваш вопрос. Google имеет даже http://www.google.com/bsd[BSD ориентированный поисковой интерфейс]. == Как посылать вопрос При посылке сообщения в список рассылки FreeBSD-questions, имейте в виду следующее: * Помните, что за ответы на вопросы о FreeBSD никто денег не получает. Все делают это в свободное время. Вы можете привлечь внимание, послав четко сформулированный вопрос, содержащий как можно больше относящейся к делу информации. Вы можете не получить внимания, послав неполный, непонятный или примитивный вопрос. В действительности можно посылать сообщение в список рассылки FreeBSD-questions и не получить ответа, даже если вы следуете этим правилам. Еще более вероятно не получить ответа, если вы им не следуете. В оставшейся части документа мы рассмотрим, как получить максимум от вопроса во FreeBSD-questions. * Не всякий человек, могущий ответить на вопрос о FreeBSD, читает все сообщения: обычно читается строка с темой письма и решается, представляет ли сообщение интерес. То есть в ваших интересах указать тему письма. "FreeBSD problem" или "Help" недостаточно. Если вы не укажете тему вообще, то многие даже не потрудятся прочесть сообщение. Если тема сообщения недостаточно конкретна, то люди, которые могут ответить, могут его не прочесть. * Оформляйте ваше сообщение так, чтобы оно было читабельно, и ПОЖАЛУЙСТА, НЕ КРИЧИТЕ!!!!!. Мы понимаем, что для многих английский не является родным языком, и не исключаем этого, однако действительно очень трудно и мучительно читать сообщение, полное опечаток или в котором отсутствуют разделители строк. + Не упускайте из виду эффект, который производит плохо отформатированное письмо, причем не только в списке рассылки FreeBSD-questions. По вашему почтовому сообщению люди составляют мнение о вас, и если сообщение плохо отформатировано, содержит по одной строке на абзац, неправильно разделено или полно ошибок, то о вас сложится плохое впечатление. + Множество плохо форматированных сообщений возникает из-за http://www.lemis.com/email.html[неправильно работающих или плохо настроенных почтовых программ]. Известно, что следующие почтовые программы могут посылать неправильно отформатированные сообщения без вашего ведома об этом: ** exmh ** Microsoft(R) Exchange ** Microsoft(R) Outlook(R) + Постарайтесь не использовать MIME: многие используют программы, которые не очень хорошо работают с MIME. * Проверьте правильность настроек времени и временной зоны. Это может выглядеть немножко глупо, потому что ваши сообщения все равно будут доставляться, однако многие люди получают несколько сотен сообщений в день. Зачастую они сортируют входящие сообщения по теме и дате, и если ваше сообщение не будет предшествовать первому ответу, то они могут предположить, что оно потерялось и даже не взглянут на него. * Не включайте не связанные друг с другом вопросы в одно и то же письмо. Во-первых, длинное сообщение отпугивает людей, а во-вторых, труднее найти людей, которые могут ответить на все вопросы, и прочитали такое сообщение. * Сообщите максимальное количество информации. Это трудно, и нужно пояснить, какую информацию нужно сообщать, а поначалу: ** Практически в любом случае важно знать версию FreeBSD, с которой вы работаете. Особенно, в частности, в случае FreeBSD-CURRENT вы должны также указать дату исходных текстов, хотя, конечно, вам не нужно посылать сообщения о -CURRENT в список рассылки FreeBSD-questions. ** В случае любой проблемы, которая _может_ быть связана с работой оборудования, расскажите о вашем аппаратном обеспечении. В случае сомнений предположите, что это, возможно, вина оборудования. Какой тип процессора используется? Насколько он быстр? Какая материнская плата? Сколько установлено памяти? Какое периферийное оборудование? + Здесь вам стоит подумать и принять решение, конечно, но вывод команды man:dmesg[8] зачастую может оказаться очень полезным, так как он говорит не только об оборудовании, с которым вы работаете, но также и о версии FreeBSD. ** Если выдаются сообщения об ошибках, недостаточно написать "I get error messages", напишите (например) "I get the error message 'No route to host'". ** Если ваша система завершает работу аварийно, не пишите "My system panicked", напишите (к примеру) "my system panicked with the message 'free vnode isn't'". ** Если у вас возникли трудности при установке FreeBSD, пожалуйста, опишите ваше оборудование. В частности, важно знать адреса ввода/вывода и IRQ адаптеров, установленных в вашей машине. ** Если у вас возникли трудности в настройке PPP, опишите настройку. Какую версию PPP вы используете? Какой тип аутентификации? У вас используется статическое или динамическое выделение адресов IP? Какие сообщения вы получили в файле протокола? -* Основной объем информации, который вы должны дать, представляет собой вывод программ, таких, как man:dmesg[8], или консольные сообщения, которые обычно появляются в файле [.filename]#/var/log/messages#. Не пытайтесь скопировать эту информацию, набрав ее снова; это действительно трудно, и здесь легко сделать ошибку. Чтобы послать содержимое файлов протоколов, сделайте копию файла и воспользуйтесь редактором для того, чтобы обрезать информацию, оставив только относящуюся к делу, либо скопируйте и вставьте текст в ваше сообщение. В случае вывода программ, таких, как man:dmesg[8], перенаправьте вывод в файл и включите его в письмо. Например, +* Основной объём информации, который вы должны дать, представляет собой вывод программ, таких как man:dmesg[8], или консольные сообщения, которые обычно появляются в файле [.filename]#/var/log/messages#. Не пытайтесь скопировать эту информацию, набрав её снова; это действительно трудно, и здесь легко сделать ошибку. Чтобы послать содержимое файлов протоколов, сделайте копию файла и воспользуйтесь редактором для того, чтобы обрезать информацию, оставив только относящуюся к делу, либо скопируйте и вставьте текст в ваше сообщение. В случае вывода программ, таких как man:dmesg[8], перенаправьте вывод в файл и включите его в письмо. Например, + [source, shell] .... % dmesg > /tmp/dmesg.out .... + Эта команда перенаправляет информацию в файл [.filename]#/tmp/dmesg.out#. * Если вы все это сделали, и все же не можете получить ответа, этому могут быть другие причины. Например, проблема столь сложна, что никто не знает ответа, или тот, кто знает, отсутствовал. Если вы не получили ответа, скажем, в течении недели, может помочь повторная посылка сообщения. Если вы не получили ответа на свое второе послание, скорее всего, вы вовсе не получите его из этого списка рассылки. Повторная посылка того же самого сообщения снова и снова только повредит вашей репутации. Подводя итог, давайте предположим, что вы знаете ответ на следующий вопрос (да, это один и тот же вопрос). Выберите, на какой вопрос вы в большей степени готовы ответить: .Сообщение 1 [example] ==== .... Subject: HELP!!?!?? I just can't get hits damn silly FereBSD system to workd, and Im really good at this tsuff, but I have never seen anythign sho difficult to install, it jst wont work whatever I try so why don't you guys tell me what I doing wrong. .... ==== .Сообщение 2 [example] ==== .... Subject: Problems installing FreeBSD I've just got the FreeBSD 2.1.5 CDROM from Walnut Creek, and I'm having a lot of difficulty installing it. I have a 66 MHz 486 with 16 MB of memory and an Adaptec 1540A SCSI board, a 1.2GB Quantum Fireball disk and a Toshiba 3501XA CDROM drive. The installation works just fine, but when I try to reboot the system, I get the message Missing Operating System. .... ==== == Как дополнить вопрос Часто вам бывает нужно дать дополнительную информацию к вопросу, который вы уже отослали. Лучшим способом сделать это является ответ на первоначальное сообщение. Здесь есть три момента: . Вы включаете текст исходного сообщения, чтобы люди знали, о чем вы говорите. Однако не забудьте удалить ненужный текст. -. Текст в строке с темой письма остается тем же самым (вы не забыли его указать, не правда ли?). Многие почтовые программы сортируют сообщения по теме письма. Это поможет при группировке сообщений. +. Текст в строке с темой письма остаётся тем же самым (вы не забыли его указать, не правда ли?). Многие почтовые программы сортируют сообщения по теме письма. Это поможет при группировке сообщений. . Ссылочные номера сообщений в заголовке будут указывать на предыдущее сообщение. Некоторые почтовые программы, такие, как http://www.mutt.org/[mutt], могут _упорядочивать_ сообщения, показывая точную связь между ними. == Как отвечать на вопрос Перед тем, как отвечать на вопрос в списке рассылки FreeBSD-questions, имейте в виду: . Многие замечания, касающиеся посылки вопросов, относятся и к ответам на них. Прочтите эти замечания. . Ответил ли кто-либо на вопрос? Самым простым способом проверить это является сортировка входящей почты по темам писем: тогда (надеемся) вы увидите вопрос с последующими ответами все вместе. + Если кто-то уже ответил на вопрос, это вовсе не значит, что вы не должны посылать свой ответ. Но сначала имеет смысл прочитать все другие ответы. . Есть ли у вас что добавить сверх того, что уже было сказано? В общем случае ответы "Yeah, me too" сильно не помогут, хотя есть и исключения, например, когда кто-нибудь описывает свою проблему и не знает, его ли это ошибка, или что-то не так с аппаратным или программным обеспечением. Если вы посылаете сообщение "me too", включите также относящуюся к делу информацию. . Уверены ли вы, что поняли вопрос? Очень часто тот, кто задает вопрос, путается или не может все хорошо описать. Даже при самом полном понимании системы легко послать ответ, который не отвечает на вопрос. К сожалению, так вы никому не поможете, только ещё больше запутаете и разочаруете спрашивающего. Если никто больше не отвечает, или вы не очень уверены, то всегда можете запросить более подробную информацию. . Уверены ли вы, что ваш ответ корректен? Если нет, то подождите пару дней. Если никого больше не появится с лучшим ответом, чем ваш, то вы можете ответить и сказать, например, "I don't know if this is correct, but since nobody else has replied, why don't you try replacing your ATAPI CDROM with a frog?". . Если нет причин поступить как-то иначе, то ответьте отправителю и в список рассылки FreeBSD-questions. Многие подписчики FreeBSD-questions "таятся": они учатся на чтении сообщений, посланных и отвеченных другими. Если вы пошлете сообщение, представляющее интерес для всех, минуя список рассылки, то лишите этих людей их информации. Будьте внимательны при ответе всем; многие посылают сообщения с сотнями CC-адресатов. В таких случаях удалите лишние строки Cc:. . Из исходного сообщения включите текст, который относится к делу. Избегайте излишнего цитирования, но не переусердствуйте. Тот, кто не читал первоначального сообщения, должен понять, о чём же идёт речь. . Используйте приемы выделения текста, который взят из исходного сообщения и текста, который добавили вы. Лично я нахожу, что для первоначального текста лучше всего работает вставка символа "`>`". Вставка пробела после "`>`" и пустых строк между вашим и первоначальным текстами сделает результат более читабельным. . Поместите ваш ответ в правильном месте (после текста, на который вы отвечаете). Очень трудно читать набор ответов, когда каждый из них следует перед текстом, к которому относится. -. Большинство почтовых программ меняют строку темы письма в ответе, предваряя ее текстом типа "Re: ". Если ваша почтовая программа не делает это автоматически, вы должны делать это вручную. +. Большинство почтовых программ меняют строку темы письма в ответе, предваряя её текстом типа "Re: ". Если ваша почтовая программа не делает это автоматически, вы должны делать это вручную. . Если спрашивающий не следует соглашениям по форматированию текста (слишком длинные строки, неподходящая строка темы), __пожалуйста__, исправьте эти ошибки. В случае некорректной строки темы письма (типа "HELP!!??") измените её, например, так: "Re: Difficulties with sync PPP (was: HELP!!??)". В таком случае у других людей, пытающихся отследить обсуждение, будет меньше проблем. + В таких случаях хорошо сказать, что вы сделали и почему, но постарайтесь не грубить. Если вы чувствуете, что не можете ответить, не скатываясь на грубость, воздержитесь от ответа вообще. + Если вы хотите ответить на сообщение лишь потому, что оно плохо оформлено, ответьте только автору, но не в список. Если хотите, то в ответ можете просто послать ему эту статью. diff --git a/documentation/content/ru/articles/freebsd-questions/_index.po b/documentation/content/ru/articles/freebsd-questions/_index.po index 1358996fa1..90780b7dce 100644 --- a/documentation/content/ru/articles/freebsd-questions/_index.po +++ b/documentation/content/ru/articles/freebsd-questions/_index.po @@ -1,938 +1,938 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-11-08 16:17+0000\n" -"PO-Revision-Date: 2025-11-09 04:45+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/freebsd-questions/_index.adoc:1 #: documentation/content/en/articles/freebsd-questions/_index.adoc:11 #, no-wrap msgid "How to get Best Results from the FreeBSD-questions Mailing List" msgstr "Как работать со списком рассылки FreeBSD-questions c максимальной отдачей" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:44 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:47 msgid "" "This document provides useful information for people looking to prepare an e-" "mail to the FreeBSD-questions mailing list. Advice and hints are given that " "will maximize the chance that the reader will receive useful replies." msgstr "" "В этом документе содержится информация, которая будет полезна тем, кто " "собирается отправить письмо в список рассылки FreeBSD-questions. Даются " "советы и рекомендации, которые максимально увеличат шанс на получение " "полезных ответов." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:49 msgid "" "This document is regularly posted to the FreeBSD-questions mailing list." msgstr "" "Этот документ регулярно публикуется в списке рассылки FreeBSD-questions." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:51 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:54 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:58 msgid "" "`FreeBSD-questions` is a mailing list maintained by the FreeBSD project to " "help people who have questions about the normal use of FreeBSD. Another " "group, `FreeBSD-hackers`, discusses more advanced questions such as future " "development work." msgstr "" "`FreeBSD-questions` является списком рассылки, который поддерживается " "проектом FreeBSD для оказания помощи тем, у кого возникли вопросы по поводу " "использования FreeBSD в повседневной работе. В другом списке рассылки, " "`FreeBSD-hackers`, обсуждаются более сложные вопросы, такие, как направление " "будущей работы над системой." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:65 msgid "" "The term \"hacker\" has nothing to do with breaking into other people's " "computers. The correct term for the latter activity is \"cracker\", but the " "popular press has not found out yet. The FreeBSD hackers disapprove " "strongly of cracking security, and have nothing to do with it. For a longer " "description of hackers, see Eric Raymond's http://www.catb.org/~esr/faqs/" "hacker-howto.html[How To Become A Hacker]" msgstr "" "Термин \"хакер\" не имеет ничего общего с проникновением на компьютеры " "других людей. Правильным термином для обозначения такой деятельности " -"является \"кракер\", однако популярная пресса этого еще не поняла. Хакеры " +"является \"кракер\", однако популярная пресса этого ещё не поняла. Хакеры " "FreeBSD нарушением защиты не занимаются. Более полное описание хакеров " -"находится в руководстве Эрика Рэймонда (Eric Raymond) http://www.catb.org/" -"~esr/faqs/hacker-howto.html[Как стать хакером]" +"находится в руководстве Эрика Рэймонда (Eric Raymond) http://www.catb.org/~" +"esr/faqs/hacker-howto.html[Как стать хакером]" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:68 msgid "" "This is a regular posting aimed to help both those seeking advice from " "FreeBSD-questions (the \"newcomers\"), and also those who answer the " "questions (the \"hackers\")." msgstr "" "Данный регулярно рассылаемый документ предназначен для помощи как тем, кто " "ищет ответов на вопросы во FreeBSD-questions (\"новички\"), так и тем, кто " "на эти вопросы отвечает (\"хакеры\")." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:72 msgid "" "Inevitably there is some friction, which stems from the different viewpoints " "of the two groups. The newcomers accuse the hackers of being arrogant, " "stuck-up, and unhelpful, while the hackers accuse the newcomers of being " "stupid, unable to read plain English, and expecting everything to be handed " "to them on a silver platter. Of course, there is an element of truth in " "both these claims, but for the most part these viewpoints come from a sense " "of frustration." msgstr "" "Несомненно, здесь существуют некоторые трения, которые проистекают из-за " "разных точек зрения этих двух групп. Новички обвиняют хакеров в высокомерии, " "заносчивости и несостоятельности в оказании помощи, когда как хакеры " "обвиняют начинающих в том, что последние глупы, не умеют читать по-английски " "и ждут, что им все будет преподнесено на блюдечке с голубой каемочкой. " "Конечно, есть элемент правды в обоих этих утверждениях, однако по большей " "части такие мнения появляются из-за чувства разочарования." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:75 msgid "" "In this document, I would like to do something to relieve this frustration " "and help everybody get better results from FreeBSD-questions. In the " "following section, I recommend how to submit a question; after that, we will " "look at how to answer one." msgstr "" "В этом документе я постараюсь уменьшить это разочарование и помочь всем " "получить более хорошие результаты от FreeBSD-questions. В следующем разделе " "я дам рекомендации по посылке вопросов; после этого мы посмотрим, как нужно " "на них отвечать." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:76 #, no-wrap msgid "How to Subscribe to FreeBSD-questions" msgstr "Как подписаться на FreeBSD-questions" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:82 msgid "" "FreeBSD-questions is a mailing list, so you need mail access. Point your " "WWW browser to the {freebsd-questions}. In the section titled \"Subscribe " "or unsubscribe online\" fill in the \"Your email address\" field and hit " "\"Subscribe\". Or send an email to freebsd-questions+subscribe@freebsd.org." msgstr "" "FreeBSD-questions является списком рассылки, распространяемым по электронной " "почте, поэтому вам нужен доступ к системе электронной почты. Зайдите через " "ваш WWW браузер на {freebsd-questions}. В разделе \"Подписка на freebsd-" "questions\" (Subscribing to freebsd-questions) заполните поле \"Ваш адрес " "электронной почты\" (Your email address); другие поля являются опциональными." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:84 msgid "" "You will receive a confirmation message from mlmmj; follow the included " "instructions to complete your subscription." msgstr "" "Вы получите подтверждающее сообщение от mlmmj; следуйте приложенным " "инструкциям для завершения подписки." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:85 #, no-wrap msgid "How to Unsubscribe from FreeBSD-questions" msgstr "Как отписаться от FreeBSD-questions" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:90 msgid "" "Point your WWW browser to the {freebsd-questions}. In the section titled " "\"Subscribe or unsubscribe online\" fill in the \"Your email address\" field " "and hit \"Unsubscribe\". Or send an email to freebsd-questions" "+unsubscribe@freebsd.org." msgstr "" "Направьте ваш браузер на {freebsd-questions}. В разделе \"Subscribe or " "unsubscribe online\" заполните поле \"Your email address\" и нажмите " "\"Unsubscribe\". Или отправьте письмо на freebsd-questions" "+unsubscribe@freebsd.org." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:92 msgid "" "A confirmation message will be sent to you from mlmmj; follow the included " "instructions to finish unsubscribing." msgstr "" "Сообщение с подтверждением будет отправлено вам от mlmmj; следуйте " "приложенным инструкциям, чтобы завершить отмену подписки." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:93 #, no-wrap msgid "Should I ask `-questions` or `-hackers`?" msgstr "Нужно задавать вопросы в `-questions` или `-hackers`?" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:98 msgid "" "Two mailing lists handle general questions about FreeBSD, `FreeBSD-" "questions` and `FreeBSD-hackers`. In some cases, it is not really clear " "which group you should ask. The following criteria should help for 99% of " "all questions, however:" msgstr "" "Общим вопросам по FreeBSD посвящены два списка рассылки, `FreeBSD-questions` " "и `FreeBSD-hackers`. В некоторых случаях на самом деле не ясно, в каком " "списке нужно задавать вопрос. Следующий критерий, однако, должен помочь в " "98% всех случаев:" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:100 msgid "" "If the question is of a general nature, ask `FreeBSD-questions`. Examples " "might be questions about installing FreeBSD or the use of a particular " "UNIX(R) utility." msgstr "" "Если вопрос является общим, спрашивайте во `FreeBSD-questions`. Примерами " "могут служить вопросы по установке FreeBSD или использованию конкретных " "утилит UNIX(R)." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:101 msgid "" "If you think the question relates to a bug, but you are not sure, or you do " "not know how to look for it, send the message to `FreeBSD-questions`." msgstr "" "Если вы думаете, что вопрос относится к ошибке, но вы не уверены или не " -"знаете, как ее исправить, пошлите сообщение во `FreeBSD-questions`." +"знаете, как её исправить, пошлите сообщение во `FreeBSD-questions`." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:102 msgid "" "If the question relates to a bug, and you are _sure_ that it is a bug (for " "example, you can pinpoint the place in the code where it happens, and you " "maybe have a fix), then send the message to `FreeBSD-hackers`." msgstr "" "Если вопрос относится к ошибке и вы __уверены__, что это ошибка (например, " "вы можете указать место в коде, где она происходит, и, может быть, у вас " "есть для нее исправление), то пошлите сообщение в список рассылки `FreeBSD-" "hackers`." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:103 msgid "" "If the question relates to enhancements to FreeBSD, and you can make " "suggestions about how to implement them, then send the message to `FreeBSD-" "hackers`." msgstr "" "Если вопрос относится к усовершенствованию FreeBSD, и вы можете дать " -"предложения по ее реализации, то посылайте сообщение во `FreeBSD-hackers`." +"предложения по её реализации, то посылайте сообщение во `FreeBSD-hackers`." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:106 msgid "" "There are also a number of other extref:{handbook}eresources[specialized " "mailing lists, eresources-mail], which caters to more specific interests. " "The criteria above still apply, and it is in your interest to stick to them, " "since you are more likely to get good results that way." msgstr "" "Имеется также некоторое количество других extref:{handbook}eresources[" "специализированных списков рассылки, eresources-mail]. Здесь также подходит " "указанный выше критерий, и в ваших интересах следовать ему, потому что " "именно так можно получить результат." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:107 #, no-wrap msgid "Before Submitting a Question" msgstr "Перед посылкой вопроса" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:110 msgid "" "You can (and should) do some things yourself before asking a question on one " "of the mailing lists:" msgstr "" "Вы можете (и должны) что-нибудь сделать сами перед тем, как задать вопрос в " "одном из списков рассылки:" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:112 msgid "" "Try solving the problem on your own. If you post a question which shows that " "you have tried to solve the problem, your question will generally attract " "more positive attention from people reading it. Trying to solve the problem " "yourself will also enhance your understanding of FreeBSD, and will " "eventually let you use your knowledge to help others by answering questions " "posted to the mailing lists." msgstr "" "Попытайтесь решить проблему самостоятельно. Если вы пошлёте вопрос, который " "покажет, что вы пытались решить проблему, ваш вопрос, как правило, привлечёт " "более положительное внимание со стороны людей, читающих его. Попытка решить " "проблему самостоятельно также увеличит уровень вашего понимания FreeBSD, и в " "конечном счёте позволит вам использовать ваши знания для помощи другим, " "отвечая на вопросы, посылаемые в списки рассылки." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:113 msgid "" "Read the manual pages, and the FreeBSD documentation (either installed in [." "filename]#/usr/doc# or accessible via WWW at http://www.FreeBSD.org[http://" "www.FreeBSD.org]), especially the extref:{handbook}[handbook] and the extref:" "{faq}[FAQ]." msgstr "" "Прочтите страницы справочника и документацию FreeBSD (установлена в [." "filename]#/usr/doc# или доступна через WWW на http://www.FreeBSD.org[http://" "www.FreeBSD.org]), особенно extref:{handbook}[Руководство пользователя] и " "extref:{faq}[FAQ]." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:114 msgid "" "Browse and/or search the archives for the mailing list, to see if your " "question or a similar one has been asked (and possibly answered) on the " "list. You can browse and/or search the mailing list archives at https://www." "FreeBSD.org/mail[https://www.FreeBSD.org/mail] and https://www.FreeBSD.org/" "search/#mailinglists[https://www.FreeBSD.org/search/#mailinglists] " "respectively." msgstr "" "Просмотрите и/или выполните поиск по архивам списка рассылки, чтобы узнать, " "задавался ли ваш вопрос или подобный ему в списке (и возможно, был на него " "ответ). Вы можете просматривать и/или искать архивы списка рассылки по " "адресам https://www.FreeBSD.org/mail[https://www.FreeBSD.org/mail] и https://" "www.FreeBSD.org/search/#mailinglists[https://www.FreeBSD.org/search/" "#mailinglists] соответственно." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:115 msgid "" "Use a search engine such as http://www.google.com[Google] or http://www." "yahoo.com[Yahoo] to find answers to your question." msgstr "" "Используйте поисковик, например, http://www.google.com[Google] или http://" "www.yahoo.com[Yahoo] для поиска ответов на ваш вопрос. Google имеет даже " "http://www.google.com/bsd[BSD ориентированный поисковой интерфейс]." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:116 #, no-wrap msgid "How to Submit a Question" msgstr "Как посылать вопрос" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:119 msgid "" "When submitting a question to FreeBSD-questions, consider the following " "points:" msgstr "" "При посылке сообщения в список рассылки FreeBSD-questions, имейте в виду " "следующее:" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:121 msgid "" "Remember that nobody gets paid for answering a FreeBSD question. They do it " "of their own free will. You can influence this free will positively by " "submitting a well-formulated question supplying as much relevant information " "as possible. You can influence this free will negatively by submitting an " "incomplete, illegible, or rude question. It is perfectly possible to send a " "message to FreeBSD-questions and not get an answer even if you follow these " "rules. It is much more possible to not get an answer if you do not. In the " "rest of this document, we will look at how to get the most out of your " "question to FreeBSD-questions." msgstr "" "Помните, что за ответы на вопросы о FreeBSD никто денег не получает. Все " "делают это в свободное время. Вы можете привлечь внимание, послав четко " "сформулированный вопрос, содержащий как можно больше относящейся к делу " "информации. Вы можете не получить внимания, послав неполный, непонятный или " "примитивный вопрос. В действительности можно посылать сообщение в список " "рассылки FreeBSD-questions и не получить ответа, даже если вы следуете этим " "правилам. Еще более вероятно не получить ответа, если вы им не следуете. В " "оставшейся части документа мы рассмотрим, как получить максимум от вопроса " "во FreeBSD-questions." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:122 msgid "" "Not everybody who answers FreeBSD questions reads every message: they look " "at the subject line and decide whether it interests them. Clearly, it is in " "your interest to specify a subject. \"FreeBSD problem\" or \"Help\" are not " "enough. If you provide no subject at all, many people will not bother " "reading it. If your subject is not specific enough, the people who can " "answer it may not read it." msgstr "" "Не всякий человек, могущий ответить на вопрос о FreeBSD, читает все " "сообщения: обычно читается строка с темой письма и решается, представляет ли " "сообщение интерес. То есть в ваших интересах указать тему письма. \"FreeBSD " "problem\" или \"Help\" недостаточно. Если вы не укажете тему вообще, то " "многие даже не потрудятся прочесть сообщение. Если тема сообщения " "недостаточно конкретна, то люди, которые могут ответить, могут его не " "прочесть." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:123 msgid "" "Format your message so that it is legible, and PLEASE DO NOT SHOUT!!!!!. We " "appreciate that a lot of people do not speak English as their first " "language, and we try to make allowances for that, but it is really painful " "to try to read a message written full of typos or without any line breaks." msgstr "" "Оформляйте ваше сообщение так, чтобы оно было читабельно, и ПОЖАЛУЙСТА, НЕ " "КРИЧИТЕ!!!!!. Мы понимаем, что для многих английский не является родным " "языком, и не исключаем этого, однако действительно очень трудно и мучительно " "читать сообщение, полное опечаток или в котором отсутствуют разделители " "строк." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:126 msgid "" "Do not underestimate the effect that a poorly formatted mail message has, " "not just on the FreeBSD-questions mailing list. Your mail message is all " "people see of you, and if it is poorly formatted, one line per paragraph, " "badly spelt, or full of errors, it will give people a poor impression of you." msgstr "" "Не упускайте из виду эффект, который производит плохо отформатированное " "письмо, причем не только в списке рассылки FreeBSD-questions. По вашему " "почтовому сообщению люди составляют мнение о вас, и если сообщение плохо " "отформатировано, содержит по одной строке на абзац, неправильно разделено " "или полно ошибок, то о вас сложится плохое впечатление." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:129 msgid "" "A lot of badly formatted messages come from http://www.lemis.com/email." "html[bad mailers or badly configured mailers]. The following mailers are " "known to send out badly formatted messages without you finding out about " "them:" msgstr "" "Множество плохо форматированных сообщений возникает из-за http://www.lemis." "com/email.html[неправильно работающих или плохо настроенных почтовых " "программ]. Известно, что следующие почтовые программы могут посылать " "неправильно отформатированные сообщения без вашего ведома об этом:" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:131 msgid "exmh" msgstr "exmh" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:132 msgid "Microsoft(R) Exchange" msgstr "Microsoft(R) Exchange" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:133 msgid "Microsoft(R) Outlook(R)" msgstr "Microsoft(R) Outlook(R)" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:135 msgid "" "Try not to use MIME: a lot of people use mailers which do not get on very " "well with MIME." msgstr "" "Постарайтесь не использовать MIME: многие используют программы, которые не " "очень хорошо работают с MIME." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:136 msgid "" "Make sure your time and time zone are set correctly. This may seem a little " "silly, since your message still gets there, but many of the people you are " "trying to reach get several hundred messages a day. They frequently sort the " "incoming messages by subject and by date, and if your message does not come " "before the first answer, they may assume they missed it and not bother to " "look." msgstr "" "Проверьте правильность настроек времени и временной зоны. Это может " "выглядеть немножко глупо, потому что ваши сообщения все равно будут " "доставляться, однако многие люди получают несколько сотен сообщений в день. " "Зачастую они сортируют входящие сообщения по теме и дате, и если ваше " "сообщение не будет предшествовать первому ответу, то они могут предположить, " "что оно потерялось и даже не взглянут на него." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:137 msgid "" "Do not include unrelated questions in the same message. Firstly, a long " "message tends to scare people off, and secondly, it is more difficult to get " "all the people who can answer all the questions to read the message." msgstr "" "Не включайте не связанные друг с другом вопросы в одно и то же письмо. Во-" "первых, длинное сообщение отпугивает людей, а во-вторых, труднее найти " "людей, которые могут ответить на все вопросы, и прочитали такое сообщение." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:138 msgid "" "Specify as much information as possible. This is a difficult area, and we " "need to expand on what information you need to submit, but here is a start:" msgstr "" "Сообщите максимальное количество информации. Это трудно, и нужно пояснить, " "какую информацию нужно сообщать, а поначалу:" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:140 msgid "" "In nearly every case, it is important to know the version of FreeBSD you are " "running. This is particularly the case for FreeBSD-CURRENT, where you should " "also specify the date of the sources, though of course you should not be " "sending questions about -CURRENT to FreeBSD-questions." msgstr "" "Практически в любом случае важно знать версию FreeBSD, с которой вы " "работаете. Особенно, в частности, в случае FreeBSD-CURRENT вы должны также " "указать дату исходных текстов, хотя, конечно, вам не нужно посылать " "сообщения о -CURRENT в список рассылки FreeBSD-questions." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:141 msgid "" "With any problem which _could_ be hardware related, tell us about your " "hardware. In case of doubt, assume it is possible that it is hardware. What " "kind of CPU are you using? How fast? What motherboard? How much memory? What " "peripherals?" msgstr "" "В случае любой проблемы, которая _может_ быть связана с работой " "оборудования, расскажите о вашем аппаратном обеспечении. В случае сомнений " "предположите, что это, возможно, вина оборудования. Какой тип процессора " "используется? Насколько он быстр? Какая материнская плата? Сколько " "установлено памяти? Какое периферийное оборудование?" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:143 msgid "" "There is a judgement call here, of course, but the output of the man:" "dmesg[8] command can frequently be very useful, since it tells not just what " "hardware you are running, but what version of FreeBSD as well." msgstr "" "Здесь вам стоит подумать и принять решение, конечно, но вывод команды man:" "dmesg[8] зачастую может оказаться очень полезным, так как он говорит не " "только об оборудовании, с которым вы работаете, но также и о версии FreeBSD." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:144 msgid "" "If you get error messages, do not say \"I get error messages\", say (for " "example) \"I get the error message 'No route to host'\"." msgstr "" "Если выдаются сообщения об ошибках, недостаточно написать \"I get error " "messages\", напишите (например) \"I get the error message 'No route to " "host'\"." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:145 msgid "" "If your system panics, do not say \"My system panicked\", say (for example) " "\"my system panicked with the message 'free vnode isn't'\"." msgstr "" "Если ваша система завершает работу аварийно, не пишите \"My system panicked" "\", напишите (к примеру) \"my system panicked with the message 'free vnode " "isn't'\"." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:146 msgid "" "If you have difficulty installing FreeBSD, please tell us what hardware you " "have. In particular, it is important to know the IRQs and I/O addresses of " "the boards installed in your machine." msgstr "" "Если у вас возникли трудности при установке FreeBSD, пожалуйста, опишите " "ваше оборудование. В частности, важно знать адреса ввода/вывода и IRQ " "адаптеров, установленных в вашей машине." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:147 msgid "" "If you have difficulty getting PPP to run, describe the configuration. Which " "version of PPP do you use? What kind of authentication do you have? Do you " "have a static or dynamic IP address? What kind of messages do you get in the " "log file?" msgstr "" "Если у вас возникли трудности в настройке PPP, опишите настройку. Какую " "версию PPP вы используете? Какой тип аутентификации? У вас используется " "статическое или динамическое выделение адресов IP? Какие сообщения вы " "получили в файле протокола?" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:149 msgid "" "A lot of the information you need to supply is the output of programs, such " "as man:dmesg[8], or console messages, which usually appear in [.filename]#/" "var/log/messages#. Do not try to copy this information by typing it in " "again; it is a real pain, and you are bound to make a mistake. To send log " "file contents, either make a copy of the file and use an editor to trim the " "information to what is relevant, or cut and paste into your message. For the " "output of programs like man:dmesg[8], redirect the output to a file and " "include that. For example," msgstr "" -"Основной объем информации, который вы должны дать, представляет собой вывод " -"программ, таких, как man:dmesg[8], или консольные сообщения, которые обычно " +"Основной объём информации, который вы должны дать, представляет собой вывод " +"программ, таких как man:dmesg[8], или консольные сообщения, которые обычно " "появляются в файле [.filename]#/var/log/messages#. Не пытайтесь скопировать " -"эту информацию, набрав ее снова; это действительно трудно, и здесь легко " +"эту информацию, набрав её снова; это действительно трудно, и здесь легко " "сделать ошибку. Чтобы послать содержимое файлов протоколов, сделайте копию " "файла и воспользуйтесь редактором для того, чтобы обрезать информацию, " "оставив только относящуюся к делу, либо скопируйте и вставьте текст в ваше " -"сообщение. В случае вывода программ, таких, как man:dmesg[8], перенаправьте " +"сообщение. В случае вывода программ, таких как man:dmesg[8], перенаправьте " "вывод в файл и включите его в письмо. Например," #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:153 #, no-wrap msgid "% dmesg > /tmp/dmesg.out\n" msgstr "% dmesg > /tmp/dmesg.out\n" #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:156 msgid "This redirects the information to the file [.filename]#/tmp/dmesg.out#." msgstr "" "Эта команда перенаправляет информацию в файл [.filename]#/tmp/dmesg.out#." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:157 msgid "" "If you do all this, and you still do not get an answer, there could be other " "reasons. For example, the problem is so complicated that nobody knows the " "answer, or the person who does know the answer was offline. If you do not " "get an answer after, say, a week, it might help to re-send the message. If " "you do not get an answer to your second message, though, you are probably " "not going to get one from this forum. Resending the same message again and " "again will only make you unpopular." msgstr "" "Если вы все это сделали, и все же не можете получить ответа, этому могут " "быть другие причины. Например, проблема столь сложна, что никто не знает " "ответа, или тот, кто знает, отсутствовал. Если вы не получили ответа, " "скажем, в течении недели, может помочь повторная посылка сообщения. Если вы " "не получили ответа на свое второе послание, скорее всего, вы вовсе не " "получите его из этого списка рассылки. Повторная посылка того же самого " "сообщения снова и снова только повредит вашей репутации." #. type: Plain text #: documentation/content/en/articles/freebsd-questions/_index.adoc:160 msgid "" "To summarize, let's assume you know the answer to the following question " "(yes, it is the same one in each case). You choose which of these two " "questions you would be more prepared to answer:" msgstr "" "Подводя итог, давайте предположим, что вы знаете ответ на следующий вопрос " "(да, это один и тот же вопрос). Выберите, на какой вопрос вы в большей " "степени готовы ответить:" #. type: Block title #: documentation/content/en/articles/freebsd-questions/_index.adoc:161 #, no-wrap msgid "Message 1" msgstr "Сообщение 1" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:171 #, no-wrap msgid "" "Subject: HELP!!?!??\n" "I just can't get hits damn silly FereBSD system to\n" "workd, and Im really good at this tsuff, but I have never seen\n" "anythign sho difficult to install, it jst wont work whatever I try\n" "so why don't you guys tell me what I doing wrong.\n" msgstr "" "Subject: HELP!!?!??\n" "I just can't get hits damn silly FereBSD system to\n" "workd, and Im really good at this tsuff, but I have never seen\n" "anythign sho difficult to install, it jst wont work whatever I try\n" "so why don't you guys tell me what I doing wrong.\n" #. type: Block title #: documentation/content/en/articles/freebsd-questions/_index.adoc:174 #, no-wrap msgid "Message 2" msgstr "Сообщение 2" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:180 #, no-wrap msgid "Subject: Problems installing FreeBSD\n" msgstr "Subject: Problems installing FreeBSD\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:187 #, no-wrap msgid "" "I've just got the FreeBSD 2.1.5 CDROM from Walnut Creek, and I'm having a lot\n" "of difficulty installing it. I have a 66 MHz 486 with 16 MB of\n" "memory and an Adaptec 1540A SCSI board, a 1.2GB Quantum Fireball\n" "disk and a Toshiba 3501XA CDROM drive. The installation works just\n" "fine, but when I try to reboot the system, I get the message\n" "Missing Operating System.\n" msgstr "" "I've just got the FreeBSD 2.1.5 CDROM from Walnut Creek, and I'm having a lot\n" "of difficulty installing it. I have a 66 MHz 486 with 16 MB of\n" "memory and an Adaptec 1540A SCSI board, a 1.2GB Quantum Fireball\n" "disk and a Toshiba 3501XA CDROM drive. The installation works just\n" "fine, but when I try to reboot the system, I get the message\n" "Missing Operating System.\n" #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:190 #, no-wrap msgid "How to Follow up to a Question" msgstr "Как дополнить вопрос" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:195 msgid "" "Often you will want to send in additional information to a question you have " "already sent. The best way to do this is to reply to your original " "message. This has three advantages:" msgstr "" "Часто вам бывает нужно дать дополнительную информацию к вопросу, который вы " "уже отослали. Лучшим способом сделать это является ответ на первоначальное " "сообщение. Здесь есть три момента:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:197 msgid "" "You include the original message text, so people will know what you are " "talking about. Do not forget to trim unnecessary text out, though." msgstr "" "Вы включаете текст исходного сообщения, чтобы люди знали, о чем вы говорите. " "Однако не забудьте удалить ненужный текст." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:198 msgid "" "The text in the subject line stays the same (you did remember to put one in, " "did you not?). Many mailers will sort messages by subject. This helps group " "messages together." msgstr "" -"Текст в строке с темой письма остается тем же самым (вы не забыли его " +"Текст в строке с темой письма остаётся тем же самым (вы не забыли его " "указать, не правда ли?). Многие почтовые программы сортируют сообщения по " "теме письма. Это поможет при группировке сообщений." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:199 msgid "" "The message reference numbers in the header will refer to the previous " "message. Some mailers, such as http://www.mutt.org/[mutt], can _thread_ " "messages, showing the exact relationships between the messages." msgstr "" "Ссылочные номера сообщений в заголовке будут указывать на предыдущее " "сообщение. Некоторые почтовые программы, такие, как http://www.mutt.org/" "[mutt], могут _упорядочивать_ сообщения, показывая точную связь между ними." #. type: Title == #: documentation/content/en/articles/freebsd-questions/_index.adoc:200 #, no-wrap msgid "How to Answer a Question" msgstr "Как отвечать на вопрос" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:203 msgid "Before you answer a question to FreeBSD-questions, consider:" msgstr "" "Перед тем, как отвечать на вопрос в списке рассылки FreeBSD-questions, " "имейте в виду:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:205 msgid "" "A lot of the points on submitting questions also apply to answering " "questions. Read them." msgstr "" "Многие замечания, касающиеся посылки вопросов, относятся и к ответам на них. " "Прочтите эти замечания." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:206 msgid "" "Has somebody already answered the question? The easiest way to check this is " "to sort your incoming mail by subject: then (hopefully) you will see the " "question followed by any answers, all together." msgstr "" "Ответил ли кто-либо на вопрос? Самым простым способом проверить это является " "сортировка входящей почты по темам писем: тогда (надеемся) вы увидите вопрос " "с последующими ответами все вместе." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:209 msgid "" "If somebody has already answered it, it does not automatically mean that you " "should not send another answer. But it makes sense to read all the other " "answers first." msgstr "" "Если кто-то уже ответил на вопрос, это вовсе не значит, что вы не должны " "посылать свой ответ. Но сначала имеет смысл прочитать все другие ответы." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:210 msgid "" "Do you have something to contribute beyond what has already been said? In " "general, \"Yeah, me too\" answers do not help much, although there are " "exceptions, like when somebody is describing a problem they are having, and " "they do not know whether it is their fault or whether there is something " "wrong with the hardware or software. If you do send a \"me too\" answer, you " "should also include any further relevant information." msgstr "" "Есть ли у вас что добавить сверх того, что уже было сказано? В общем случае " "ответы \"Yeah, me too\" сильно не помогут, хотя есть и исключения, например, " "когда кто-нибудь описывает свою проблему и не знает, его ли это ошибка, или " "что-то не так с аппаратным или программным обеспечением. Если вы посылаете " "сообщение \"me too\", включите также относящуюся к делу информацию." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:211 msgid "" "Are you sure you understand the question? Very frequently, the person who " "asks the question is confused or does not express themselves very well. Even " "with the best understanding of the system, it is easy to send a reply which " "does not answer the question. This does not help: you will leave the person " "who submitted the question more frustrated or confused than ever. If nobody " "else answers, and you are not too sure either, you can always ask for more " "information." msgstr "" "Уверены ли вы, что поняли вопрос? Очень часто тот, кто задает вопрос, " "путается или не может все хорошо описать. Даже при самом полном понимании " "системы легко послать ответ, который не отвечает на вопрос. К сожалению, так " "вы никому не поможете, только ещё больше запутаете и разочаруете " "спрашивающего. Если никто больше не отвечает, или вы не очень уверены, то " "всегда можете запросить более подробную информацию." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:212 msgid "" "Are you sure your answer is correct? If not, wait a day or so. If nobody " "else comes up with a better answer, you can still reply and say, for " "example, \"I do not know if this is correct, but since nobody else has " "replied, why don't you try replacing your ATAPI CDROM with a frog?\"." msgstr "" "Уверены ли вы, что ваш ответ корректен? Если нет, то подождите пару дней. " "Если никого больше не появится с лучшим ответом, чем ваш, то вы можете " "ответить и сказать, например, \"I don't know if this is correct, but since " "nobody else has replied, why don't you try replacing your ATAPI CDROM with a " "frog?\"." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:213 msgid "" "Unless there is a good reason to do otherwise, reply to the sender and to " "FreeBSD-questions. Many people on the FreeBSD-questions are \"lurkers\": " "they learn by reading messages sent and replied to by others. If you take a " "message which is of general interest off the list, you are depriving these " "people of their information. Be careful with group replies; lots of people " "send messages with hundreds of CCs. If this is the case, be sure to trim the " "Cc: lines appropriately." msgstr "" "Если нет причин поступить как-то иначе, то ответьте отправителю и в список " "рассылки FreeBSD-questions. Многие подписчики FreeBSD-questions \"таятся\": " "они учатся на чтении сообщений, посланных и отвеченных другими. Если вы " "пошлете сообщение, представляющее интерес для всех, минуя список рассылки, " "то лишите этих людей их информации. Будьте внимательны при ответе всем; " "многие посылают сообщения с сотнями CC-адресатов. В таких случаях удалите " "лишние строки Cc:." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:214 msgid "" "Include relevant text from the original message. Trim it to the minimum, but " "do not overdo it. It should still be possible for somebody who did not read " "the original message to understand what you are talking about." msgstr "" "Из исходного сообщения включите текст, который относится к делу. Избегайте " "излишнего цитирования, но не переусердствуйте. Тот, кто не читал " "первоначального сообщения, должен понять, о чём же идёт речь." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:215 msgid "" "Use some technique to identify which text came from the original message, " "and which text you add. I personally find that prepending \"`>`\" to the " "original message works best. Leaving white space after the \"`> ;`\" and " "leave empty lines between your text and the original text both make the " "result more readable." msgstr "" "Используйте приемы выделения текста, который взят из исходного сообщения и " "текста, который добавили вы. Лично я нахожу, что для первоначального текста " "лучше всего работает вставка символа \"`>`\". Вставка пробела после \"`>`\" " "и пустых строк между вашим и первоначальным текстами сделает результат более " "читабельным." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:216 msgid "" "Put your response in the correct place (after the text to which it replies). " "It is very difficult to read a thread of responses where each reply comes " "before the text to which it replies." msgstr "" "Поместите ваш ответ в правильном месте (после текста, на который вы " "отвечаете). Очень трудно читать набор ответов, когда каждый из них следует " "перед текстом, к которому относится." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:217 msgid "" "Most mailers change the subject line on a reply by prepending a text such as " "\"Re: \". If your mailer does not do it automatically, you should do it " "manually." msgstr "" "Большинство почтовых программ меняют строку темы письма в ответе, предваряя " -"ее текстом типа \"Re: \". Если ваша почтовая программа не делает это " +"её текстом типа \"Re: \". Если ваша почтовая программа не делает это " "автоматически, вы должны делать это вручную." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:218 msgid "" "If the submitter did not abide by format conventions (lines too long, " "inappropriate subject line) _please_ fix it. In the case of an incorrect " "subject line (such as \"HELP!!??\"), change the subject line to (say) \"Re: " "Difficulties with sync PPP (was: HELP!!??)\". That way other people trying " "to follow the thread will have less difficulty following it." msgstr "" "Если спрашивающий не следует соглашениям по форматированию текста (слишком " "длинные строки, неподходящая строка темы), __пожалуйста__, исправьте эти " "ошибки. В случае некорректной строки темы письма (типа \"HELP!!??\") " "измените её, например, так: \"Re: Difficulties with sync PPP (was: " "HELP!!??)\". В таком случае у других людей, пытающихся отследить обсуждение, " "будет меньше проблем." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:221 msgid "" "In such cases, it is appropriate to say what you did and why you did it, but " "try not to be rude. If you find you can not answer without being rude, do " "not answer." msgstr "" "В таких случаях хорошо сказать, что вы сделали и почему, но постарайтесь не " "грубить. Если вы чувствуете, что не можете ответить, не скатываясь на " "грубость, воздержитесь от ответа вообще." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-questions/_index.adoc:223 msgid "" "If you just want to reply to a message because of its bad format, just reply " "to the submitter, not to the list. You can just send him this message in " "reply, if you like." msgstr "" "Если вы хотите ответить на сообщение лишь потому, что оно плохо оформлено, " "ответьте только автору, но не в список. Если хотите, то в ответ можете " "просто послать ему эту статью." diff --git a/documentation/content/ru/articles/freebsd-releng/_index.adoc b/documentation/content/ru/articles/freebsd-releng/_index.adoc index 3484efe5ff..9bcfdc0b6a 100644 --- a/documentation/content/ru/articles/freebsd-releng/_index.adoc +++ b/documentation/content/ru/articles/freebsd-releng/_index.adoc @@ -1,758 +1,758 @@ --- authors: - author: 'Glen Barber' email: gjb@FreeBSD.org -description: 'Описывает подход, используемый командой разработки релизов FreeBSD для создания релизов операционной системы FreeBSD производственного качества. В нем описаны инструменты, доступные тем, кто заинтересован в создании настраиваемых релизов FreeBSD для корпоративного внедрения или коммерческой продуктивизации' +description: 'Описывает подход, используемый командой разработки релизов FreeBSD для создания релизов операционной системы FreeBSD производственного качества. В нём описаны инструменты, доступные тем, кто заинтересован в создании настраиваемых релизов FreeBSD для корпоративного внедрения или коммерческой продуктивизации' organizations: - organization: 'The FreeBSD Foundation' webpage: https://www.freebsdfoundation.org/ - organization: 'Rubicon Communications, LLC (Netgate)' webpage: https://www.netgate.com/ tags: ["releases", "engineering", "process", "FreeBSD"] title: 'Подготовка релизов FreeBSD' trademarks: ["freebsd", "intel", "general", "git"] --- = Подготовка релизов FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :teamBugmeister: FreeBSD Bugmeister Team :teamDoceng: FreeBSD Documentation Engineering Team :teamPortmgr: FreeBSD Ports Management Team :teamPostmaster: FreeBSD Postmaster Team :teamRe: FreeBSD Release Engineering Team :teamSecteam: FreeBSD Security Team :branchHead: main :branchStable: stable/ :branchStablex: stable/13 :branchReleng: releng/ :branchRelengx: releng/13.0 :tagReleasex: release/13.0.0 :branchRevision: 13.0 :images-path: articles/freebsd-releng/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация В этой статье описывается процесс разработки релизов проекта FreeBSD. ''' toc::[] [[introduction]] == Введение в процесс разработки релизов FreeBSD Разработка FreeBSD следует очень специфичному рабочему процессу. В общем случае все изменения в базовой системе FreeBSD вносятся в ветку {branchHead}, которая отражает вершину дерева исходного кода. После достаточного периода тестирования изменения могут быть объединены в ветки {branchStable}. Минимальный срок по умолчанию перед объединением в ветки {branchStable} составляет три (3) дня. Хотя общее правило предписывает выждать минимум три дня перед слиянием из {branchHead}, существуют особые обстоятельства, при которых может потребоваться немедленное слияние, например, критическое исправление безопасности или исправление ошибки, напрямую блокирующей процесс сборки выпуска. Через несколько месяцев, когда количество изменений в ветке {branchStable} значительно увеличилось, наступает время выпуска следующей версии FreeBSD. Исторически такие выпуски называются релизами "с точкой". Между выпусками из ветвей {branchStable}, примерно каждые два (2) года, выпуск будет создаваться напрямую из {branchHead}. Исторически такие выпуски назывались выпуском «точка-ноль (dot-zero)». Эта статья освещает рабочий процесс и обязанности команды {teamRe} как для выпуска "точка-ноль", так и для "промежуточных" выпусков. Следующие разделы этой статьи описывают: crossref:freebsd-releng[releng-prep, Общая информация и подготовка]:: Общая информация и подготовка перед началом цикла выпуска. crossref:freebsd-releng[releng-website, Изменения на веб-сайте в течение цикла выпуска]:: Изменения на веб-сайте в течение цикла выпуска crossref:freebsd-releng[releng-terms, Терминология выпуска релизов]:: Терминология и общая информация, такие как "мягкая заморозка кода (code slush)" и "заморозка кода (code freeze)", используемые в этом документе. crossref:freebsd-releng[releng-head, Выпуск релиза от {branchHead}]:: Процесс Release Engineering для релиза "точка-ноль". crossref:freebsd-releng[releng-stable, Выпуск релиза от {branchStable}]:: Процесс Release Engineering для "точечного" выпуска. crossref:freebsd-releng[releng-building, Создание установочных носителей FreeBSD]:: Информация, относящаяся к конкретным процедурам создания установочного носителя. crossref:freebsd-releng[releng-mirrors, Публикация установочных носителей FreeBSD на зеркалах проекта]:: Процедуры публикации установочного носителя. crossref:freebsd-releng[releng-wrapup, Завершение цикла выпуска]:: Завершение цикла выпуска. [[releng-prep]] == Общая информация и подготовка Примерно за два месяца до начала цикла выпуска команда {teamRe} определяет график выпуска. График включает в себя различные этапы цикла выпуска, такие как даты заморозки, даты ветвления и даты сборки. Например: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Веха | Предполагаемая дата |мягкая заморозка {branchHead}: |May 27, 2016 |заморозка {branchHead}: |June 10, 2016 |заморозка {branchHead} KBI: |June 24, 2016 |мягкая заморозка дерева `doc/` [1]: |June 24, 2016 |Ежеквартальная ветка Ports [2]: |July 1, 2016 |Ветка {branchStablex}: |July 8, 2016 |`doc/` tree tag [3]: |July 8, 2016 |Начало сборки BETA1: |July 8, 2016 |Разморозка {branchHead}: |July 9, 2016 |Сборка BETA2 начинается: |July 15, 2016 |Сборка BETA3 начинается [*]: |July 22, 2016 |Ветка `{branchRelengx}`: |July 29, 2016 |Сборка RC1 начинается: |July 29, 2016 |Разморозка {branchStablex}: |July 30, 2016 |Сборка RC2 начинается: |August 5, 2016 |Окончательные сборки пакетов Ports [4]: |August 6, 2016 |Метка релиза портов: |12 августа 2016 |Сборка RC3 начинается [*]: |12 августа 2016 |Сборка RELEASE начинается: |August 19, 2016 |Объявление о ВЫПУСКЕ: |September 2, 2016 |=== [NOTE] ==== Отметка "[*]" у элементов означает "по мере необходимости". ==== . Мягкая заморозка дерева `doc/` координируется командой {teamDoceng}. . Используемая квартальная ветка Ports определяется по дате запланированной окончательной сборки `RC`. Новая квартальная ветка создаётся в первый день квартала, поэтому этот показатель следует учитывать, принимая во внимание этапы цикла выпуска. Квартальная ветка создаётся командой {teamPortmgr}. . Для дерева исходного кода `doc/` tag делается командой {teamDoceng}. . Окончательная сборка пакета Ports выполняется командой {teamPortmgr} после финальной (или ожидаемой финальной) сборки `RC`. [NOTE] ==== Если выпуск создаётся из существующей ветки {branchStable}, дату заморозки KBI можно исключить, так как KBI уже считается замороженным в устоявшихся ветках {branchStable}. ==== -При написании графика цикла выпуска необходимо учитывать ряд факторов, особенно этапы, на которые целевая дата зависит от предопределенных этапов, от которых существует зависимость. Например, тег выпуска коллекции портов берется из активной квартальной ветки на момент последнего `RC`. Это частично определяет, какая квартальная ветка используется, когда может быть создан тег выпуска и какая версия дерева портов используется для финальной сборки `RELEASE`. +При написании графика цикла выпуска необходимо учитывать ряд факторов, особенно этапы, на которые целевая дата зависит от предопределённых этапов, от которых существует зависимость. Например, тег выпуска коллекции портов берется из активной квартальной ветки на момент последнего `RC`. Это частично определяет, какая квартальная ветка используется, когда может быть создан тег выпуска и какая версия дерева портов используется для финальной сборки `RELEASE`. После общего согласования расписания команда {teamRe} отправляет расписание разработчикам FreeBSD по электронной почте. -Вполне типично, что многие разработчики сообщают команде {teamRe} о различных работах в процессе выполнения. В некоторых случаях может быть запрошено продление для работы в процессе, а в других случаях может быть сделан запрос на "общее одобрение" для определенного подмножества дерева. +Вполне типично, что многие разработчики сообщают команде {teamRe} о различных работах в процессе выполнения. В некоторых случаях может быть запрошено продление для работы в процессе, а в других случаях может быть сделан запрос на "общее одобрение" для определённого подмножества дерева. При таких запросах важно убедиться, что обсуждаются сроки (даже если они приблизительные). Для общих одобрений следует четко указать продолжительность действия такого одобрения. Например, разработчик FreeBSD может запросить общее одобрение с начала периода мягкой заморозки кода до начала сборок `RC`. [NOTE] ==== -Для отслеживания общих одобрений команда {teamRe} использует внутренний репозиторий, в котором ведется журнал таких запросов. В нем указывается область, на которую распространяется общее одобрение, автор(ы), срок действия одобрения и причина его выдачи. Например, может быть предоставлено общее одобрение для [.filename]#release/doc/# всем членам {teamRe} до финального `RC` для обновления примечаний к выпуску и другой связанной с выпуском документации. +Для отслеживания общих одобрений команда {teamRe} использует внутренний репозиторий, в котором ведется журнал таких запросов. В нём указывается область, на которую распространяется общее одобрение, автор(ы), срок действия одобрения и причина его выдачи. Например, может быть предоставлено общее одобрение для [.filename]#release/doc/# всем членам {teamRe} до финального `RC` для обновления примечаний к выпуску и другой связанной с выпуском документации. ==== [NOTE] ==== Команда {teamRe} также использует этот репозиторий для отслеживания ожидающих одобрения запросов, полученных непосредственно перед началом различных сборок во время цикла выпуска, при этом Инженер по выпускам указывает срок отсечки с помощью электронного письма разработчикам FreeBSD. ==== В зависимости от рассматриваемого набора кода и общего влияния этого набора кода на FreeBSD в целом, такие запросы могут быть одобрены или отклонены командой {teamRe}. То же самое относится к расширениям для незавершённых работ. Например, незавершённая работа над новым драйвером устройства, который в остальном изолирован от остального дерева, может получить расширение. Однако новый планировщик может оказаться неосуществимым, особенно если такие значительные изменения отсутствуют в другой ветке. Расписание также добавляется на сайт проекта в репозитории `doc/`, в файле [.filename]#~/website/content/en/releases/{branchRevision}R/schedule.adoc#. Этот файл постоянно обновляется по мере прохождения цикла выпуска. [NOTE] ==== В большинстве случаев файл [.filename]#schedule.adoc# можно скопировать из предыдущего релиза и обновить соответствующим образом. ==== В дополнение к добавлению [.filename]#schedule.adoc# на веб-сайт, файл [.filename]#~/shared/releases.adoc# также обновляется, чтобы добавить ссылку на расписание на различные подстраницы, а также включить ссылку на расписание на главной странице веб-сайта проекта. Расписание также доступно по ссылке из файла [.filename]#~/website/content/en/releng/_index.adoc#. Примерно за месяц до запланированной "мягкой заморозки кода" команда {teamRe} отправляет напоминание разработчикам FreeBSD. [[releng-terms]] == Терминология выпуска релизов В этом разделе описана часть терминологии, используемой в остальной части данного документа. [[releng-terms-code-slush]] === Мягкая заморозка кода Хотя мягкая заморозка кода не является полной заморозкой дерева, команда {teamRe} просит отдавать приоритет исправлению ошибок в существующей кодовой базе перед добавлением новых функций. Мягкая заморозка кода не требует подтверждений коммитов в ветку. [[releng-terms-code-freeze]] === Заморозка кода Замораживание кода означает момент времени, когда все коммиты в ветку требуют явного одобрения от {teamRe}. Репозиторий FreeBSD Git содержит несколько хуков для выполнения проверок перед тем, как изменения будут зафиксированы в дереве. Один из этих хуков проверяет, требуются ли специальные разрешения для фиксации изменений в определённой ветке. Для обеспечения утверждения коммитов командой {teamRe}, команда Release Engineering должна утверждать любые изменения в ветке. В этом случае журнал коммитов должен содержать строку `Approved by: re (логин)`, где "логин" — это идентификатор утверждающего. [NOTE] ==== Во время заморозки кода участники проекта FreeBSD должны следовать link:https://wiki.freebsd.org/Releng/ChangeRequestGuidelines[Рекомендациям по запросам изменений]. ==== [[releng-terms-kbi-freeze]] === Замораживание KBI/KPI KBI/KPI стабильность подразумевает, что вызов функции в двух разных релизах программного обеспечения, реализующего эту функцию, приводит к одинаковому конечному состоянию. Вызывающая сторона, будь то процесс, поток или функция, ожидает, что функция будет работать определённым образом, в противном случае стабильность KBI/KPI на ветке нарушается. [[releng-website]] == Изменения на веб-сайте в течение цикла выпуска Этот раздел описывает изменения на веб-сайте, которые должны происходить по мере развития цикла выпуска. [NOTE] ==== Файлы, указанные в этом разделе, относятся к ветке `{branchHead}` репозитория `doc`. ==== [[releng-website-prerelease]] === Изменения на веб-сайте перед началом цикла выпуска Когда график цикла выпуска становится доступным, эти файлы необходимо обновить, чтобы включить различные функции на веб-сайте проекта FreeBSD: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#~/shared/releases.adoc# |Изменить `beta-upcoming` с `IGNORE` на `INCLUDE` |[.filename]#~/shared/releases.adoc# |Изменить `beta-testing` с `IGNORE` на `INCLUDE` |=== [[releng-website-beta-rc]] === Изменения на веб-сайте в период `BETA` или `RC` При переходе от `PRERELEASE` к `BETA` эти файлы необходимо обновить, чтобы включить блок "Help Test (Помогите протестировать)" на странице загрузки. Все файлы указаны относительно [.filename]#head/# в репозитории `doc`: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#~/shared/releases.adoc# |Обновите `betarel-vers` до `BETA__1__` |[.filename]#~/website/data/en/news/news.toml# |Добавьте запись, объявляющую о `BETA` |[.filename]#~/website/static/security/advisory-template.txt# |Добавьте новую `BETA`, `RC` или финальную `RELEASE` в шаблон |[.filename]#~/website/static/security/errata-template.txt# |Добавьте новую `BETA`, `RC` или финальную `RELEASE` в шаблон |=== После создания ветки {branchRelengx} необходимо добавить различные документы, связанные с выпуском, в репозиторий `doc/`. [NOTE] ==== Соответствующие документы, связанные с выпусками, находятся в репозитории [.filename]#doc# для FreeBSD 12.x и более поздних версий. ==== [[releng-ports-beta-rc]] === Изменения в портах во время `BETA`, `RC` и финального `RELEASE` Для каждой сборки в течение цикла выпуска файлы `MANIFEST`, содержащие `SHA256` для различных наборов дистрибутива, таких как `base.txz`, `kernel.txz` и других, добавляются в порт package:misc/freebsd-release-manifests[]. Это позволяет другим утилитам, кроме , таким как package:ports-mgmt/poudriere[], безопасно использовать эти наборы дистрибутива, предоставляя механизм для проверки контрольных сумм. [[releng-head]] == Выпуск релиза от {branchHead} Этот раздел описывает общие процедуры цикла выпуска FreeBSD из ветки {branchHead}. [[releng-head-builds-alpha]] === FreeBSD "`ALPHA`" сборки Начиная с цикла выпуска FreeBSD 10.0-RELEASE, было введено понятие сборок "`ALPHA`". В отличие от сборок `BETA` и `RC`, сборки `ALPHA` не включены в график выпуска FreeBSD. Идея сборок `ALPHA` заключается в предоставлении регулярных сборок FreeBSD до создания ветки {branchStable}. Снимки состояния `ALPHA` FreeBSD должны собираться примерно раз в неделю. Для первой сборки `ALPHA` значение `BRANCH` в [.filename]#sys/conf/newvers.sh# необходимо изменить с `CURRENT` на `ALPHA1`. Для последующих сборок `ALPHA` увеличивайте каждое значение `ALPHA__N__` на единицу. См. crossref:freebsd-releng[releng-building, Сборка установочных носителей FreeBSD] для получения информации о сборке образов `ALPHA`. [[releng-head-branching]] === Создание ветки {branchStablex} При создании ветки {branchStable} необходимо внести несколько изменений как в новой ветке {branchStable}, так и в ветке {branchHead}. Указанные файлы относятся к корню репозитория. Чтобы создать новую ветку {branchStablex} в Git: [NOTE] ==== Убедитесь, что вы находитесь в ветке {branchHead} ==== [source, shell, subs="attributes"] .... % git checkout -b {branchStablex} .... После создания ветки {branchStablex} внесите следующие изменения: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#UPDATING# |Обновите версию FreeBSD и удалите уведомление о `WITNESS` |[.filename]#contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h# a| [source,shell,subs="attributes"] .... #ifndef MALLOC_PRODUCTION #define MALLOC_PRODUCTION #endif .... |[.filename]#lib/clang/llvm.build.mk# |Раскомментируйте `-DNDEBUG` |[.filename]#sys/\*/conf/GENERIC*# |Удалите поддержку отладки |[.filename]#sys/*/conf/MINIMAL# |Удалите поддержку отладки |[.filename]#release/release.conf.sample# |Обновите `SRCBRANCH` |[.filename]#sys/*/conf/GENERIC-NODEBUG# |Удалите следующие параметры конфигурации ядра |[.filename]#sys/arm/conf/std.arm*# |Удалите отладочные опции |[.filename]#sys/conf/newvers.sh# |Обновите значение `BRANCH`, чтобы оно соответствовало `BETA1` |[.filename]#share/mk/src.opts.mk# |Переместите `REPRODUCIBLE_BUILD` из `\__DEFAULT_NO_OPTIONS` в `__DEFAULT_YES_OPTIONS` |[.filename]#share/mk/src.opts.mk# |Переместите `LLVM_ASSERTIONS` из `\__DEFAULT_YES_OPTIONS` в `__DEFAULT_NO_OPTIONS` |[.filename]#libexec/rc/rc.conf# |Установите `dumpdev` с `AUTO` на `NO` (это настраивается для тех, кто хочет включить его по умолчанию) |[.filename]#release/Makefile# |Удалите записи `debug.witness.trace` |=== Затем в ветке {branchHead}, которая теперь станет новой основной версией: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#UPDATING# |Обновите версию FreeBSD |[.filename]#sys/conf/newvers.sh# |Обновите значение `BRANCH`, чтобы оно соответствовало `CURRENT`, и увеличьте `REVISION` |[.filename]#Makefile.inc1# |Обновите `TARGET_TRIPLE` и `MACHINE_TRIPLE` |[.filename]#sys/sys/param.h# |Обновите `__FreeBSD_version` |[.filename]#gnu/usr.bin/cc/cc_tools/freebsd-native.h# |Обновите `FBSD_MAJOR` и `FBSD_CC_VER` |[.filename]#contrib/gcc/config.gcc# |Добавьте раздел `freebsdversion.h` |[.filename]#lib/clang/llvm.build.mk# |Обновите значение `OS_VERSION` |[.filename]#lib/clang/freebsd_cc_version.h# |Обновите `FREEBSD_CC_VERSION` |[.filename]#lib/clang/include/lld/Common/Version.inc# |Обновите `LLD_REVISION_STRING` |[.filename]#Makefile.libcompat# |Обновите `LIB32CPUFLAGS` |=== [[releng-stable]] == Выпуск релиза от {branchStable} Этот раздел описывает общие процедуры цикла выпуска FreeBSD из установленной ветки {branchStable}. [[releng-stable-slush]] === Мягкая заморозка кода ветки `stable` FreeBSD В рамках подготовки к заморозке кода в ветке `stable` необходимо обновить несколько файлов, чтобы отразить официальное начало цикла выпуска. Эти файлы находятся в корневом каталоге ветки stable: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#sys/conf/newvers.sh# |Обновите значение `BRANCH`, чтобы отразить `PRERELEASE` |[.filename]#Makefile.inc1# |Обновите `TARGET_TRIPLE` |[.filename]#lib/clang/llvm.build.mk# |Обновите `OS_VERSION` |[.filename]#Makefile.libcompat# |Обновите `LIB32CPUFLAGS` |=== [[releng-stable-builds-beta]] === Сборки FreeBSD `BETA` После периода мягкой заморозки следующая фаза цикла выпуска — это заморозка кода. На этом этапе все коммиты в стабильную ветку требуют явного одобрения от {teamRe}. Это контролируется {git-admin-email}, который управляет репозиторием. [NOTE] ==== Существует два общих исключения, когда не требуется подтверждение коммита во время цикла выпуска. Первое — любые изменения, которые необходимо закоммитить инженеру выпуска для продолжения ежедневной работы цикла выпуска. Второе — исправления безопасности, которые могут возникнуть во время цикла выпуска. ==== После вступления в силу заморозки кода следующая сборка из ветки помечается как `BETA1`. Это делается путём изменения значения `BRANCH` в файле [.filename]#sys/conf/newvers.sh# с `PRERELEASE` на `BETA1`. После этого начинается первая сборка `BETA`. Последующие сборки `BETA` не требуют обновления каких-либо файлов, кроме [.filename]#sys/conf/newvers.sh#, с увеличением номера сборки `BETA`. [[releng-stable-branching]] === Создание ветки {branchRelengx} -Когда первая сборка `RC` (Release Candidate) готова к началу, создается ветка {branchReleng}. Это многоэтапный процесс, который должен выполняться в определенном порядке, чтобы избежать аномалий, таких как пересечения значений `__FreeBSD_version`, например. Указанные ниже пути относятся к корню репозитория. Порядок коммитов и что нужно изменить: +Когда первая сборка `RC` (Release Candidate) готова к началу, создается ветка {branchReleng}. Это многоэтапный процесс, который должен выполняться в определённом порядке, чтобы избежать аномалий, таких как пересечения значений `__FreeBSD_version`, например. Указанные ниже пути относятся к корню репозитория. Порядок коммитов и что нужно изменить: [NOTE] ==== Убедитесь, что вы находитесь в ветке {branchStablex} ==== [source, shell, subs="attributes"] .... % git checkout -b {branchRelengx} .... [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#sys/conf/newvers.sh# |Измените `BETA__X__` на `RC1` |[.filename]#sys/sys/param.h# |Обновите `__FreeBSD_version` |[.filename]#sys/conf/kern.opts.mk# |Переместите `REPRODUCIBLE_BUILD` из `__DEFAULT_NO_OPTIONS` в `__DEFAULT_YES_OPTIONS` |[.filename]#etc/pkg/FreeBSD.conf# |Замените `latest` на `quarterly` в качестве расположения репозитория пакетов по умолчанию |[.filename]#release/pkg_repos/release-dvd.conf# |Замените `latest` на `quarterly` в качестве расположения репозитория пакетов по умолчанию |[.filename]#sys/conf/newvers.sh# |Обновите `BETA__X__` на `PRERELEASE` |[.filename]#sys/sys/param.h# |Обновите `__FreeBSD_version` |=== Затем {git-admin-email} добавляет новых утверждающих для ветки releng, как это было сделано для ветки stable. [source, shell, subs="attributes"] .... % git add . % git commit .... Теперь, когда существуют два новых значения `__FreeBSD_version`, также обновите файл [.filename]#~/documentation/content/en/books/porters-handbook/versions/chapter.adoc# в репозитории проекта документации. После завершения первой сборки `RC` и её тестирования ветку {branchStable} можно «разморозить» с помощью {git-admin-email}. После появления первой версии `RC` необходимо отправить письмо команде {teamBugmeister}, чтобы добавить новую версию FreeBSD `-RELEASE` в список `versions`, доступный в выпадающем меню трекера ошибок. [[releng-building]] == Создание установочных носителей FreeBSD Этот раздел описывает общие процедуры создания снимков разработки и выпусков FreeBSD. [[releng-build-scripts]] === Скрипты сборки релизов -До выхода FreeBSD 9.0-RELEASE файл [.filename]#src/release/Makefile# был обновлен для поддержки , а скрипт [.filename]#src/release/generate-release.sh# был добавлен в качестве обертки для автоматизации вызова целей. +До выхода FreeBSD 9.0-RELEASE файл [.filename]#src/release/Makefile# был обновлен для поддержки , а скрипт [.filename]#src/release/generate-release.sh# был добавлен в качестве обёртки для автоматизации вызова целей. До выхода FreeBSD 9.2-RELEASE был представлен [.filename]#src/release/release.sh#, который, основываясь на [.filename]#src/release/generate-release.sh#, включал поддержку указания конфигурационных файлов для переопределения различных опций и переменных окружения. Поддержка конфигурационных файлов обеспечила возможность кросс-сборки каждого архитектурного варианта для релиза путем указания отдельного конфигурационного файла для каждого вызова. В качестве краткого примера использования [.filename]#src/release/release.sh# для сборки одного релиза в [.filename]#/scratch#: [source, shell, subs="attributes"] .... # /bin/sh /usr/src/release/release.sh .... В качестве краткого примера использования [.filename]#src/release/release.sh# для сборки единого кросс-собранного выпуска с использованием другого целевого каталога, создайте пользовательский [.filename]#release.conf#, содержащий: [.programlisting, subs="attributes"] .... # release.sh configuration for powerpc/powerpc64 CHROOTDIR="/scratch-powerpc64" TARGET="powerpc" TARGET_ARCH="powerpc64" KERNEL="GENERIC64" .... Затем выполните [.filename]#src/release/release.sh# следующим образом: [source, shell, subs="attributes"] .... # /bin/sh /usr/src/release/release.sh -c $HOME/release.conf .... См. [.filename]#src/release/release.conf.sample# для получения дополнительных сведений и примеров использования. [[releng-build-release]] === Сборка релизов FreeBSD В течение цикла выпуска копии файлов [.filename]#CHECKSUM.SHA512# и [.filename]#CHECKSUM.SHA256# для каждой архитектуры сохраняются во внутреннем репозитории {teamRe}, а также включаются в различные рассылки с объявлениями. Каждый файл [.filename]#MANIFEST#, содержащий хеши [.filename]#base.txz#, [.filename]#kernel.txz# и других, также добавляется в пакет package:misc/freebsd-release-manifests[] в Коллекции портов. В подготовке к сборке выпуска необходимо обновить несколько файлов: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл для редактирования | Что изменить |[.filename]#sys/conf/newvers.sh# |Обновите значение `BRANCH` на `RELEASE` |[.filename]#UPDATING# |Добавьте предполагаемую дату объявления |[.filename]#lib/csu/common/crtbrand.S# |Замените `__FreeBSD_version` на значение из [.filename]#sys/sys/param.h# |=== После сборки окончательного `RELEASE`, ветка {branchRelengx} помечается как {tagReleasex}, используя ревизию, из которой был собран `RELEASE`. Аналогично созданию веток {branchStablex} и {branchRelengx}, это делается с помощью `git tag`. Из корня репозитория: [NOTE] ==== Убедитесь, что вы находитесь в ветке {branchRelengx} ==== [source, shell, subs="attributes"] .... % git tag {tagReleasex} .... [[releng-mirrors]] == Публикация установочных носителей FreeBSD на зеркалах проекта Этот раздел описывает процедуру публикации снимков разработки FreeBSD и выпусков на зеркала Проекта. [[releng-mirrors-staging]] === Подготовка образов установочных носителей FreeBSD Этап подготовки (staging) снимков и выпусков FreeBSD — это двухэтапный процесс: * Создание структуры каталогов, соответствующей иерархии на `ftp-master` + Если `EVERYTHINGISFINE` определено в конфигурационных файлах сборки, [.filename]#main.conf# в случае скриптов сборки, упомянутых выше, это происходит автоматически после завершения сборки, создавая структуру каталогов в [.filename]#${DESTDIR}/R/ftp-stage# с путями, соответствующими ожидаемым на `ftp-master`. Это эквивалентно выполнению следующего в каталоге: + [source, shell, subs="attributes"] .... # make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage .... + После сборки каждой архитектуры скрипт [.filename]#thermite.sh# выполнит синхронизацию [.filename]#${DESTDIR}/R/ftp-stage# с билда в каталоге [.filename]#/snap/ftp/snapshots# или [.filename]#/snap/ftp/releases# на хосте сборки, соответственно. * Копирование файлов в промежуточный каталог на `ftp-master` перед перемещением файлов в [.filename]#pub/# для начала распространения на зеркала Проекта + После завершения всех сборок каталог [.filename]#/snap/ftp/snapshots# (или [.filename]#/snap/ftp/releases# для релиза) опрашивается `ftp-master`-ом с использованием rsync для передачи в [.filename]#/archive/tmp/snapshots# или [.filename]#/archive/tmp/releases#, соответственно. + [NOTE] ==== На `ftp-master` в инфраструктуре проекта FreeBSD этот шаг требует доступа уровня `root`, так как он должен выполняться от имени пользователя `archive`. ==== [[releng-mirrors-publishing]] === Публикация установочных носителей FreeBSD -Как только образы размещены в [.filename]#/archive/tmp/#, они готовы к публикации путем размещения в [.filename]#/archive/pub/FreeBSD#. Для уменьшения времени распространения используются жесткие ссылки из [.filename]#/archive/tmp# в [.filename]#/archive/pub/FreeBSD#. +Как только образы размещены в [.filename]#/archive/tmp/#, они готовы к публикации путем размещения в [.filename]#/archive/pub/FreeBSD#. Для уменьшения времени распространения используются жёсткие ссылки из [.filename]#/archive/tmp# в [.filename]#/archive/pub/FreeBSD#. [NOTE] ==== Для эффективной работы и [.filename]#/archive/tmp#, и [.filename]#/archive/pub# должны находиться в одной логической файловой системе. ==== Однако есть оговорка: после этого необходимо использовать rsync для исправления символических ссылок в [.filename]#pub/FreeBSD/snapshots/ISO-IMAGES#, которые будут заменены на жёсткие ссылки, что увеличит время распространения. [NOTE] ==== Как и на этапе подготовки, это требует доступа уровня `root`, так как данный шаг должен быть выполнен от имени пользователя `archive`. ==== Как пользователь `archive`: [source, shell, subs="attributes"] .... % cd /archive/tmp/snapshots % pax -r -w -l . /archive/pub/FreeBSD/snapshots % /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/snapshots/ .... Замените _снимки_ на _релизы_ там, где это уместно. [[releng-wrapup]] == Завершение цикла выпуска Этот раздел описывает общие задачи после выпуска. [[releng-wrapup-en]] === Уведомления об исправлениях после выпуска По мере приближения цикла выпуска к завершению часто появляются несколько кандидатов в EN (Errata Notice — уведомления об ошибках) для устранения проблем, обнаруженных на поздних этапах цикла. После выпуска {teamRe} и {teamSecteam} пересматривают изменения, которые не были одобрены до финального выпуска, и, в зависимости от масштаба рассматриваемого изменения, могут выпустить EN. [NOTE] ==== Фактический процесс выпуска EN обрабатывается командой {teamSecteam}. ==== Для запроса уведомления об ошибке после завершения цикла выпуска разработчик должен заполнить https://www.freebsd.org/security/errata-template.txt[шаблон уведомления об ошибке], в частности разделы `Предыстория`, `Описание проблемы`, `Последствия` и, если применимо, `Обходное решение`. Заполненный шаблон уведомления об ошибке следует отправить по электронной почте вместе с патчем для ветки {branchReleng} или списком ревизий из ветки {branchStable}. Для запросов на уведомления об ошибках (Errata Notice), поступающих сразу после выпуска, запрос следует отправлять по электронной почте как в {teamRe}, так и в {teamSecteam}. После того как ветка {branchReleng} передана {teamSecteam}, как описано в crossref:freebsd-releng[releng-wrapup-handoff, Передача {teamSecteam}], запросы на уведомления об ошибках следует направлять в {teamSecteam}. [[releng-wrapup-handoff]] === Передача в {teamSecteam} Примерно через две недели после выпуска релиза инженер по релизам обновляет репозиторий Git, изменяя утверждающего с команды инженеров по релизам на офицера безопасности для ветки `{branchRelengx}`. [[releng-eol]] == Конец срока поддержки выпуска Этот раздел описывает файлы, связанные с веб-сайтом, которые необходимо обновить, когда выпуск достигает EoL (End-of-Life). [[releng-eol-website]] === Обновления веб-сайта для прекращения поддержки Когда выпуск достигает конца жизненного цикла, ссылки на этот выпуск должны быть удалены и/или обновлены на веб-сайте: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Файл | Что изменить |[.filename]#~/website/themes/beastie/layouts/index.html# |Удалите ссылки на `u-relXXX-announce` и `u-relXXX-announce`. |[.filename]#~/website/content/en/releases/_index.adoc# |Переместите переменные `u-relXXX-*` из списка поддерживаемых выпусков в список Устаревших выпусков. |[.filename]#~/website/content/en/releng/_index.adoc# |Обновите соответствующую ветку releng, чтобы отразить, что ветка больше не поддерживается. |[.filename]#~/website/content/en/security/_index.adoc# |Удалить ветку из списка поддерживаемых веток. |[.filename]#~/website/content/en/security/unsupported.adoc# |Добавить ветку в список неподдерживаемых веток. |[.filename]#~/website/content/en/where.adoc# |Удалите URL-адреса для выпуска. |[.filename]#~/website/themes/beastie/layouts/partials/sidenav.html# |Удалите ссылки на `u-relXXX-announce` и `u-relXXX-announce`. |[.filename]#~/website/static/security/advisory-template.txt# |Удалите ссылки на ветку release и releng. |[.filename]#~/website/static/security/errata-template.txt# |Удалите ссылки на ветку release и releng. |=== diff --git a/documentation/content/ru/articles/freebsd-releng/_index.po b/documentation/content/ru/articles/freebsd-releng/_index.po index f96a26c7ed..cd3d9818af 100644 --- a/documentation/content/ru/articles/freebsd-releng/_index.po +++ b/documentation/content/ru/articles/freebsd-releng/_index.po @@ -1,2190 +1,2190 @@ # 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: 2024-12-29 08:30-0500\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"PO-Revision-Date: 2025-12-11 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/articles/freebsd-releng/_index.adoc:1 #, no-wrap msgid "Describes the approach used by the FreeBSD release engineering team to make production quality releases of the FreeBSD Operating System. It describes the tools available for those interested in producing customized FreeBSD releases for corporate rollouts or commercial productization" msgstr "" "Описывает подход, используемый командой разработки релизов FreeBSD для " "создания релизов операционной системы FreeBSD производственного качества. В " -"нем описаны инструменты, доступные тем, кто заинтересован в создании " +"нём описаны инструменты, доступные тем, кто заинтересован в создании " "настраиваемых релизов FreeBSD для корпоративного внедрения или коммерческой " "продуктивизации" #. type: Title = #: documentation/content/en/articles/freebsd-releng/_index.adoc:1 #: documentation/content/en/articles/freebsd-releng/_index.adoc:16 #, no-wrap msgid "FreeBSD Release Engineering" msgstr "Подготовка релизов FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:63 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:65 msgid "" "This article describes the release engineering process of the FreeBSD " "Project." msgstr "В этой статье описывается процесс разработки релизов проекта FreeBSD." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:67 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:71 #, no-wrap msgid "Introduction to the FreeBSD Release Engineering Process" msgstr "Введение в процесс разработки релизов FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:75 msgid "" "Development of FreeBSD has a very specific workflow. In general, all " "changes to the FreeBSD base system are committed to the {branchHead} branch, " "which reflects the top of the source tree." msgstr "" "Разработка FreeBSD следует очень специфичному рабочему процессу. В общем " "случае все изменения в базовой системе FreeBSD вносятся в ветку {branchHead}" ", которая отражает вершину дерева исходного кода." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:78 msgid "" "After a reasonable testing period, changes can then be merged to the " "{branchStable} branches. The default minimum timeframe before merging to " "{branchStable} branches is three (3) days." msgstr "" "После достаточного периода тестирования изменения могут быть объединены в " "ветки {branchStable}. Минимальный срок по умолчанию перед объединением в " "ветки {branchStable} составляет три (3) дня." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:80 msgid "" "Although a general rule to wait a minimum of three days before merging from " "{branchHead}, there are a few special circumstances where an immediate merge " "may be necessary, such as a critical security fix, or a bug fix that " "directly inhibits the release build process." msgstr "" "Хотя общее правило предписывает выждать минимум три дня перед слиянием из " "{branchHead}, существуют особые обстоятельства, при которых может " "потребоваться немедленное слияние, например, критическое исправление " "безопасности или исправление ошибки, напрямую блокирующей процесс сборки " "выпуска." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:83 msgid "" "After several months, and the number of changes in the {branchStable} branch " "have grown significantly, it is time to release the next version of " "FreeBSD. These releases have been historically referred to as \"point\" " "releases." msgstr "" "Через несколько месяцев, когда количество изменений в ветке {branchStable} " "значительно увеличилось, наступает время выпуска следующей версии FreeBSD. " "Исторически такие выпуски называются релизами \"с точкой\"." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:86 msgid "" "In between releases from the {branchStable} branches, approximately every " "two (2) years, a release will be cut directly from {branchHead}. These " "releases have been historically referred to as \"dot-zero\" releases." msgstr "" "Между выпусками из ветвей {branchStable}, примерно каждые два (2) года, " "выпуск будет создаваться напрямую из {branchHead}. Исторически такие выпуски " "назывались выпуском «точка-ноль (dot-zero)»." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:88 msgid "" "This article will highlight the workflow and responsibilities of the " "{teamRe} for both \"dot-zero\" and \"point\"' releases." msgstr "" "Эта статья освещает рабочий процесс и обязанности команды {teamRe} как для " "выпуска \"точка-ноль\", так и для \"промежуточных\" выпусков." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:90 msgid "The following sections of this article describe:" msgstr "Следующие разделы этой статьи описывают:" #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:91 #, no-wrap msgid "crossref:freebsd-releng[releng-prep, General Information and Preparation]" msgstr "crossref:freebsd-releng[releng-prep, Общая информация и подготовка]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:93 msgid "General information and preparation before starting the release cycle." msgstr "Общая информация и подготовка перед началом цикла выпуска." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:94 #, no-wrap msgid "crossref:freebsd-releng[releng-website, Website Changes During the Release Cycle]" msgstr "" "crossref:freebsd-releng[releng-website, Изменения на веб-сайте в течение " "цикла выпуска]" #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:96 #: documentation/content/en/articles/freebsd-releng/_index.adoc:281 #, no-wrap msgid "Website Changes During the Release Cycle" msgstr "Изменения на веб-сайте в течение цикла выпуска" #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:97 #, no-wrap msgid "crossref:freebsd-releng[releng-terms, Release Engineering Terminology]" msgstr "crossref:freebsd-releng[releng-terms, Терминология выпуска релизов]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:99 msgid "" "Terminology and general information, such as the \"code slush\" and \"code " "freeze\", used throughout this document." msgstr "" "Терминология и общая информация, такие как \"мягкая заморозка кода (code " "slush)\" и \"заморозка кода (code freeze)\", используемые в этом документе." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:100 #, no-wrap msgid "crossref:freebsd-releng[releng-head, Release from {branchHead}]" msgstr "crossref:freebsd-releng[releng-head, Выпуск релиза от {branchHead}]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:102 msgid "The Release Engineering process for a \"dot-zero\" release." msgstr "Процесс Release Engineering для релиза \"точка-ноль\"." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:103 #, no-wrap msgid "crossref:freebsd-releng[releng-stable, Release from {branchStable}]" msgstr "crossref:freebsd-releng[releng-stable, Выпуск релиза от {branchStable}]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:105 msgid "The Release Engineering process for a \"point\" release." msgstr "Процесс Release Engineering для \"точечного\" выпуска." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:106 #, no-wrap msgid "crossref:freebsd-releng[releng-building, Building FreeBSD Installation Media]" msgstr "" "crossref:freebsd-releng[releng-building, Создание установочных носителей " "FreeBSD]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:108 msgid "" "Information related to the specific procedures to build installation medium." msgstr "" "Информация, относящаяся к конкретным процедурам создания установочного " "носителя." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:109 #, no-wrap msgid "crossref:freebsd-releng[releng-mirrors, Publishing FreeBSD Installation Media to Project Mirrors]" msgstr "" "crossref:freebsd-releng[releng-mirrors, Публикация установочных носителей " "FreeBSD на зеркалах проекта]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:111 msgid "Procedures to publish installation medium." msgstr "Процедуры публикации установочного носителя." #. type: Labeled list #: documentation/content/en/articles/freebsd-releng/_index.adoc:112 #, no-wrap msgid "crossref:freebsd-releng[releng-wrapup, Wrapping up the Release Cycle]" msgstr "crossref:freebsd-releng[releng-wrapup, Завершение цикла выпуска]" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:114 msgid "Wrapping up the release cycle." msgstr "Завершение цикла выпуска." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:116 #, no-wrap msgid "General Information and Preparation" msgstr "Общая информация и подготовка" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:121 msgid "" "Approximately two months before the start of the release cycle, the {teamRe} " "decides on a schedule for the release. The schedule includes the various " "milestone points of the release cycle, such as freeze dates, branch dates, " "and build dates. For example:" msgstr "" "Примерно за два месяца до начала цикла выпуска команда {teamRe} определяет " "график выпуска. График включает в себя различные этапы цикла выпуска, такие " "как даты заморозки, даты ветвления и даты сборки. Например:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:126 #, no-wrap msgid "Milestone" msgstr "Веха" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:128 #, no-wrap msgid "Anticipated Date" msgstr "Предполагаемая дата" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:129 #, no-wrap msgid "{branchHead} slush:" msgstr "мягкая заморозка {branchHead}:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:131 #, no-wrap msgid "May 27, 2016" msgstr "May 27, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:132 #, no-wrap msgid "{branchHead} freeze:" msgstr "заморозка {branchHead}:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:134 #, no-wrap msgid "June 10, 2016" msgstr "June 10, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:135 #, no-wrap msgid "{branchHead} KBI freeze:" msgstr "заморозка {branchHead} KBI:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:137 #: documentation/content/en/articles/freebsd-releng/_index.adoc:140 #, no-wrap msgid "June 24, 2016" msgstr "June 24, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:138 #, no-wrap msgid "`doc/` tree slush [1]:" msgstr "мягкая заморозка дерева `doc/` [1]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:141 #, no-wrap msgid "Ports quarterly branch [2]:" msgstr "Ежеквартальная ветка Ports [2]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:143 #, no-wrap msgid "July 1, 2016" msgstr "July 1, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:144 #, no-wrap msgid "{branchStablex} branch:" msgstr "Ветка {branchStablex}:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:146 #: documentation/content/en/articles/freebsd-releng/_index.adoc:149 #: documentation/content/en/articles/freebsd-releng/_index.adoc:152 #, no-wrap msgid "July 8, 2016" msgstr "July 8, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:147 #, no-wrap msgid "`doc/` tree tag [3]:" msgstr "`doc/` tree tag [3]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:150 #, no-wrap msgid "BETA1 build starts:" msgstr "Начало сборки BETA1:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:153 #, no-wrap msgid "{branchHead} thaw:" msgstr "Разморозка {branchHead}:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:155 #, no-wrap msgid "July 9, 2016" msgstr "July 9, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:156 #, no-wrap msgid "BETA2 build starts:" msgstr "Сборка BETA2 начинается:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:158 #, no-wrap msgid "July 15, 2016" msgstr "July 15, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:159 #, no-wrap msgid "BETA3 build starts [*]:" msgstr "Сборка BETA3 начинается [*]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:161 #, no-wrap msgid "July 22, 2016" msgstr "July 22, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:162 #, no-wrap msgid "{branchRelengx} branch:" msgstr "Ветка `{branchRelengx}`:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:164 #: documentation/content/en/articles/freebsd-releng/_index.adoc:167 #, no-wrap msgid "July 29, 2016" msgstr "July 29, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:165 #, no-wrap msgid "RC1 build starts:" msgstr "Сборка RC1 начинается:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:168 #, no-wrap msgid "{branchStablex} thaw:" msgstr "Разморозка {branchStablex}:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:170 #, no-wrap msgid "July 30, 2016" msgstr "July 30, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:171 #, no-wrap msgid "RC2 build starts:" msgstr "Сборка RC2 начинается:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:173 #, no-wrap msgid "August 5, 2016" msgstr "August 5, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:174 #, no-wrap msgid "Final Ports package builds [4]:" msgstr "Окончательные сборки пакетов Ports [4]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:176 #, no-wrap msgid "August 6, 2016" msgstr "August 6, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:177 #, no-wrap msgid "Ports release tag:" msgstr "Метка релиза портов:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:179 #: documentation/content/en/articles/freebsd-releng/_index.adoc:182 #, no-wrap msgid "August 12, 2016" msgstr "12 августа 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:180 #, no-wrap msgid "RC3 build starts [*]:" msgstr "Сборка RC3 начинается [*]:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:183 #, no-wrap msgid "RELEASE build starts:" msgstr "Сборка RELEASE начинается:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:185 #, no-wrap msgid "August 19, 2016" msgstr "August 19, 2016" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:186 #, no-wrap msgid "RELEASE announcement:" msgstr "Объявление о ВЫПУСКЕ:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:187 #, no-wrap msgid "September 2, 2016" msgstr "September 2, 2016" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:192 msgid "Items marked with \"[*]\" are \"as needed\"." msgstr "Отметка \"[*]\" у элементов означает \"по мере необходимости\"." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:195 msgid "The `doc/` tree slush is coordinated by the {teamDoceng}." msgstr "Мягкая заморозка дерева `doc/` координируется командой {teamDoceng}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:196 msgid "" "The Ports quarterly branch used is determined by when the final `RC` build " "is planned. A new quarterly branch is created on the first day of the " "quarter, so this metric should be used when taking the release cycle " "milestones into account. The quarterly branch is created by the " "{teamPortmgr}." msgstr "" "Используемая квартальная ветка Ports определяется по дате запланированной " "окончательной сборки `RC`. Новая квартальная ветка создаётся в первый день " "квартала, поэтому этот показатель следует учитывать, принимая во внимание " "этапы цикла выпуска. Квартальная ветка создаётся командой {teamPortmgr}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:197 msgid "The `doc/` tree is tagged by the {teamDoceng}." msgstr "Для дерева исходного кода `doc/` tag делается командой {teamDoceng}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:198 msgid "" "The final Ports package build is done by the {teamPortmgr} after the final " "(or what is expected to be final) `RC` build." msgstr "" "Окончательная сборка пакета Ports выполняется командой {teamPortmgr} после " "финальной (или ожидаемой финальной) сборки `RC`." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:202 msgid "" "If the release is being created from an existing {branchStable} branch, the " "KBI freeze date can be excluded, since the KBI is already considered frozen " "on established {branchStable} branches." msgstr "" "Если выпуск создаётся из существующей ветки {branchStable}, дату заморозки " "KBI можно исключить, так как KBI уже считается замороженным в устоявшихся " "ветках {branchStable}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:207 msgid "" "When writing the release cycle schedule, a number of things need to be taken " "into consideration, in particular milestones where the target date depends " "on predefined milestones upon which there is a dependency. For example, the " "Ports Collection release tag originates from the active quarterly branch at " "the time of the last `RC`. This in part defines which quarterly branch is " "used, when the release tag can happen, and what revision of the ports tree " "is used for the final `RELEASE` build." msgstr "" "При написании графика цикла выпуска необходимо учитывать ряд факторов, " -"особенно этапы, на которые целевая дата зависит от предопределенных этапов, " +"особенно этапы, на которые целевая дата зависит от предопределённых этапов, " "от которых существует зависимость. Например, тег выпуска коллекции портов " "берется из активной квартальной ветки на момент последнего `RC`. Это " "частично определяет, какая квартальная ветка используется, когда может быть " "создан тег выпуска и какая версия дерева портов используется для финальной " "сборки `RELEASE`." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:209 msgid "" "After general agreement on the schedule, the {teamRe} emails the schedule to " "the FreeBSD Developers." msgstr "" "После общего согласования расписания команда {teamRe} отправляет расписание " "разработчикам FreeBSD по электронной почте." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:212 msgid "" "It is somewhat typical that many developers will inform the {teamRe} about " "various works-in-progress. In some cases, an extension for the in-progress " "work will be requested, and in other cases, a request for \"blanket " "approval\" to a particular subset of the tree will be made." msgstr "" "Вполне типично, что многие разработчики сообщают команде {teamRe} о " "различных работах в процессе выполнения. В некоторых случаях может быть " "запрошено продление для работы в процессе, а в других случаях может быть " -"сделан запрос на \"общее одобрение\" для определенного подмножества дерева." +"сделан запрос на \"общее одобрение\" для определённого подмножества дерева." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:216 msgid "" "When such requests are made, it is important to make sure timelines (even if " "estimated) are discussed. For blanket approvals, the length of time for the " "blanket approval should be made clear. For example, a FreeBSD developer may " "request blanket approvals from the start of the code slush until the start " "of the `RC` builds." msgstr "" "При таких запросах важно убедиться, что обсуждаются сроки (даже если они " "приблизительные). Для общих одобрений следует четко указать " "продолжительность действия такого одобрения. Например, разработчик FreeBSD " "может запросить общее одобрение с начала периода мягкой заморозки кода до " "начала сборок `RC`." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:221 msgid "" "To keep track of blanket approvals, the {teamRe} uses an internal repository " "to keep a running log of such requests, which defines the area upon which a " "blanket approval was granted, the author(s), when the blanket approval " "expires, and the reason the approval was granted. One example of this is " "granting blanket approval to [.filename]#release/doc/# to all {teamRe} " "members until the final `RC` to update the release notes and other release-" "related documentation." msgstr "" "Для отслеживания общих одобрений команда {teamRe} использует внутренний " -"репозиторий, в котором ведется журнал таких запросов. В нем указывается " +"репозиторий, в котором ведется журнал таких запросов. В нём указывается " "область, на которую распространяется общее одобрение, автор(ы), срок " "действия одобрения и причина его выдачи. Например, может быть предоставлено " "общее одобрение для [.filename]#release/doc/# всем членам {teamRe} до " "финального `RC` для обновления примечаний к выпуску и другой связанной с " "выпуском документации." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:226 msgid "" "The {teamRe} also uses this repository to track pending approval requests " "that are received just prior to starting various builds during the release " "cycle, which the Release Engineer specifies the cutoff period with an email " "to the FreeBSD developers." msgstr "" "Команда {teamRe} также использует этот репозиторий для отслеживания " "ожидающих одобрения запросов, полученных непосредственно перед началом " "различных сборок во время цикла выпуска, при этом Инженер по выпускам " "указывает срок отсечки с помощью электронного письма разработчикам FreeBSD." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:229 msgid "" "Depending on the underlying set of code in question, and the overall impact " "the set of code has on FreeBSD as a whole, such requests may be approved or " "denied by the {teamRe}." msgstr "" "В зависимости от рассматриваемого набора кода и общего влияния этого набора " "кода на FreeBSD в целом, такие запросы могут быть одобрены или отклонены " "командой {teamRe}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:233 msgid "" "The same applies to work-in-progress extensions. For example, in-progress " "work for a new device driver that is otherwise isolated from the rest of the " "tree may be granted an extension. A new scheduler, however, may not be " "feasible, especially if such dramatic changes do not exist in another branch." msgstr "" "То же самое относится к расширениям для незавершённых работ. Например, " "незавершённая работа над новым драйвером устройства, который в остальном " "изолирован от остального дерева, может получить расширение. Однако новый " "планировщик может оказаться неосуществимым, особенно если такие значительные " "изменения отсутствуют в другой ветке." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:235 msgid "" "The schedule is also added to the Project website, in the `doc/` repository, " "in [.filename]#~/website/content/en/releases/{branchRevision}R/schedule." "adoc#. This file is continuously updated as the release cycle progresses." msgstr "" "Расписание также добавляется на сайт проекта в репозитории `doc/`, в файле [." "filename]#~/website/content/en/releases/{branchRevision}R/schedule.adoc#. " "Этот файл постоянно обновляется по мере прохождения цикла выпуска." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:239 msgid "" "In most cases, the [.filename]#schedule.adoc# can be copied from a prior " "release and updated accordingly." msgstr "" "В большинстве случаев файл [.filename]#schedule.adoc# можно скопировать из " "предыдущего релиза и обновить соответствующим образом." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:242 msgid "" "In addition to adding [.filename]#schedule.adoc# to the website, [." "filename]#~/shared/releases.adoc# is also updated to add the link to the " "schedule to various subpages, as well as enabling the link to the schedule " "on the Project website index page." msgstr "" "В дополнение к добавлению [.filename]#schedule.adoc# на веб-сайт, файл [." "filename]#~/shared/releases.adoc# также обновляется, чтобы добавить ссылку " "на расписание на различные подстраницы, а также включить ссылку на " "расписание на главной странице веб-сайта проекта." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:244 msgid "" "The schedule is also linked from [.filename]#~/website/content/en/releng/" "_index.adoc#." msgstr "" "Расписание также доступно по ссылке из файла [.filename]#~/website/content/" "en/releng/_index.adoc#." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:246 msgid "" "Approximately one month prior to the scheduled \"code slush\", the {teamRe} " "sends a reminder email to the FreeBSD Developers." msgstr "" "Примерно за месяц до запланированной \"мягкой заморозки кода\" команда " "{teamRe} отправляет напоминание разработчикам FreeBSD." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:248 #, no-wrap msgid "Release Engineering Terminology" msgstr "Терминология выпуска релизов" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:251 msgid "" "This section describes some of the terminology used throughout the rest of " "this document." msgstr "" "В этом разделе описана часть терминологии, используемой в остальной части " "данного документа." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:253 #, no-wrap msgid "The Code Slush" msgstr "Мягкая заморозка кода" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:256 msgid "" "Although the code slush is not a hard freeze on the tree, the {teamRe} " "requests that bugs in the existing code base take priority over new features." msgstr "" "Хотя мягкая заморозка кода не является полной заморозкой дерева, команда " "{teamRe} просит отдавать приоритет исправлению ошибок в существующей кодовой " "базе перед добавлением новых функций." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:258 msgid "The code slush does not enforce commit approvals to the branch." msgstr "Мягкая заморозка кода не требует подтверждений коммитов в ветку." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:260 #, no-wrap msgid "The Code Freeze" msgstr "Заморозка кода" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:263 msgid "" "The code freeze marks the point in time where all commits to the branch " "require explicit approval from the {teamRe}." msgstr "" "Замораживание кода означает момент времени, когда все коммиты в ветку " "требуют явного одобрения от {teamRe}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:266 msgid "" "The FreeBSD Git repository contains several hooks to perform sanity checks " "before any commit is actually committed to the tree. One of these hooks " "will evaluate if committing to a particular branch requires specific " "approval." msgstr "" "Репозиторий FreeBSD Git содержит несколько хуков для выполнения проверок " "перед тем, как изменения будут зафиксированы в дереве. Один из этих хуков " "проверяет, требуются ли специальные разрешения для фиксации изменений в " "определённой ветке." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:268 msgid "" "To enforce commit approvals by the {teamRe}, the Release Engineering Team " "must approve any changes to the branch, in which case the commit log must " "include an `Approved by: re (login)` line, where \"login\" is the login ID " "of the approver." msgstr "" "Для обеспечения утверждения коммитов командой {teamRe}, команда Release " "Engineering должна утверждать любые изменения в ветке. В этом случае журнал " "коммитов должен содержать строку `Approved by: re (логин)`, где \"логин\" — " "это идентификатор утверждающего." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:272 msgid "" "During the code freeze, FreeBSD committers are urged to follow the link:" "https://wiki.freebsd.org/Releng/ChangeRequestGuidelines[Change Request " "Guidelines]." msgstr "" "Во время заморозки кода участники проекта FreeBSD должны следовать " "link:https://wiki.freebsd.org/Releng/ChangeRequestGuidelines[Рекомендациям " "по запросам изменений]." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:275 #, no-wrap msgid "The KBI/KPI Freeze" msgstr "Замораживание KBI/KPI" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:279 msgid "" "KBI/KPI stability implies that the caller of a function across two different " "releases of software that implement the function results in the same end " "state. The caller, whether it is a process, thread, or function, expects " "the function to operate in a certain way, otherwise the KBI/KPI stability on " "the branch is broken." msgstr "" "KBI/KPI стабильность подразумевает, что вызов функции в двух разных релизах " "программного обеспечения, реализующего эту функцию, приводит к одинаковому " "конечному состоянию. Вызывающая сторона, будь то процесс, поток или функция, " "ожидает, что функция будет работать определённым образом, в противном случае " "стабильность KBI/KPI на ветке нарушается." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:284 msgid "" "This section describes the changes to the website that should occur as the " "release cycle progresses." msgstr "" "Этот раздел описывает изменения на веб-сайте, которые должны происходить по " "мере развития цикла выпуска." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:288 msgid "" "The files specified throughout this section are relative to the `{branchHead}" "` branch of the `doc` repository." msgstr "" "Файлы, указанные в этом разделе, относятся к ветке `{branchHead}` " "репозитория `doc`." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:291 #, no-wrap msgid "Website Changes Before the Release Cycle Begins" msgstr "Изменения на веб-сайте перед началом цикла выпуска" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:294 msgid "" "When the release cycle schedule is available, these files need to be updated " "to enable different functionalities on the FreeBSD Project website:" msgstr "" "Когда график цикла выпуска становится доступным, эти файлы необходимо " "обновить, чтобы включить различные функции на веб-сайте проекта FreeBSD:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:299 #: documentation/content/en/articles/freebsd-releng/_index.adoc:318 #: documentation/content/en/articles/freebsd-releng/_index.adoc:389 #: documentation/content/en/articles/freebsd-releng/_index.adoc:444 #: documentation/content/en/articles/freebsd-releng/_index.adoc:492 #: documentation/content/en/articles/freebsd-releng/_index.adoc:548 #: documentation/content/en/articles/freebsd-releng/_index.adoc:638 #, no-wrap msgid "File to Edit" msgstr "Файл для редактирования" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:301 #: documentation/content/en/articles/freebsd-releng/_index.adoc:320 #: documentation/content/en/articles/freebsd-releng/_index.adoc:391 #: documentation/content/en/articles/freebsd-releng/_index.adoc:446 #: documentation/content/en/articles/freebsd-releng/_index.adoc:494 #: documentation/content/en/articles/freebsd-releng/_index.adoc:550 #: documentation/content/en/articles/freebsd-releng/_index.adoc:640 #: documentation/content/en/articles/freebsd-releng/_index.adoc:768 #, no-wrap msgid "What to Change" msgstr "Что изменить" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:302 #: documentation/content/en/articles/freebsd-releng/_index.adoc:305 #: documentation/content/en/articles/freebsd-releng/_index.adoc:321 #, no-wrap msgid "[.filename]#~/shared/releases.adoc#" msgstr "[.filename]#~/shared/releases.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:304 #, no-wrap msgid "Change `beta-upcoming` from `IGNORE` to `INCLUDE`" msgstr "Изменить `beta-upcoming` с `IGNORE` на `INCLUDE`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:307 #, no-wrap msgid "Change `beta-testing` from `IGNORE` to `INCLUDE`" msgstr "Изменить `beta-testing` с `IGNORE` на `INCLUDE`" #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:310 #, no-wrap msgid "Website Changes During `BETA` or `RC`" msgstr "Изменения на веб-сайте в период `BETA` или `RC`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:313 msgid "" "When transitioning from `PRERELEASE` to `BETA`, these files need to be " "updated to enable the \"Help Test\" block on the download page. All files " "are relative to [.filename]#head/# in the `doc` repository:" msgstr "" "При переходе от `PRERELEASE` к `BETA` эти файлы необходимо обновить, чтобы " "включить блок \"Help Test (Помогите протестировать)\" на странице загрузки. " "Все файлы указаны относительно [.filename]#head/# в репозитории `doc`:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:323 #, no-wrap msgid "Update `betarel-vers` to `BETA__1__`" msgstr "Обновите `betarel-vers` до `BETA__1__`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:324 #, no-wrap msgid "[.filename]#~/website/data/en/news/news.toml#" msgstr "[.filename]#~/website/data/en/news/news.toml#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:326 #, no-wrap msgid "Add an entry announcing the `BETA`" msgstr "Добавьте запись, объявляющую о `BETA`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:327 #: documentation/content/en/articles/freebsd-releng/_index.adoc:790 #, no-wrap msgid "[.filename]#~/website/static/security/advisory-template.txt#" msgstr "[.filename]#~/website/static/security/advisory-template.txt#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:329 #: documentation/content/en/articles/freebsd-releng/_index.adoc:331 #, no-wrap msgid "Add the new `BETA`, `RC`, or final `RELEASE` to the template" msgstr "Добавьте новую `BETA`, `RC` или финальную `RELEASE` в шаблон" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:330 #: documentation/content/en/articles/freebsd-releng/_index.adoc:793 #, no-wrap msgid "[.filename]#~/website/static/security/errata-template.txt#" msgstr "[.filename]#~/website/static/security/errata-template.txt#" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:334 msgid "" "Once the {branchRelengx} branch is created, the various release-related " "documents need to be added to the `doc/` repository." msgstr "" "После создания ветки {branchRelengx} необходимо добавить различные " "документы, связанные с выпуском, в репозиторий `doc/`." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:338 msgid "" "The relevant release-related documents exist in the [.filename]#doc# " "repository for FreeBSD 12.x and later." msgstr "" "Соответствующие документы, связанные с выпусками, находятся в репозитории [." "filename]#doc# для FreeBSD 12.x и более поздних версий." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:341 #, no-wrap msgid "Ports Changes During `BETA`, `RC`, and the Final `RELEASE`" msgstr "Изменения в портах во время `BETA`, `RC` и финального `RELEASE`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:345 msgid "" "For each build during the release cycle, the `MANIFEST` files containing the " "`SHA256` of the various distribution sets, such as `base.txz`, `kernel.txz`, " "and so on, are added to the package:misc/freebsd-release-manifests[] port. " "This allows utilities other than , such as package:ports-mgmt/poudriere[], " "to safely use these distribution sets by providing a mechanism through which " "the checksums can be verified." msgstr "" "Для каждой сборки в течение цикла выпуска файлы `MANIFEST`, содержащие " "`SHA256` для различных наборов дистрибутива, таких как `base.txz`, `kernel." "txz` и других, добавляются в порт package:misc/freebsd-release-manifests[]. " "Это позволяет другим утилитам, кроме , таким как package:ports-mgmt/" "poudriere[], безопасно использовать эти наборы дистрибутива, предоставляя " "механизм для проверки контрольных сумм." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:347 #, no-wrap msgid "Release from {branchHead}" msgstr "Выпуск релиза от {branchHead}" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:350 msgid "" "This section describes the general procedures of the FreeBSD release cycle " "from the {branchHead} branch." msgstr "" "Этот раздел описывает общие процедуры цикла выпуска FreeBSD из ветки " "{branchHead}." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:352 #, no-wrap msgid "FreeBSD \"`ALPHA`\" Builds" msgstr "FreeBSD \"`ALPHA`\" сборки" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:356 msgid "" "Starting with the FreeBSD 10.0-RELEASE cycle, the notion of \"`ALPHA`\" " "builds was introduced. Unlike the `BETA` and `RC` builds, `ALPHA` builds " "are not included in the FreeBSD Release schedule." msgstr "" "Начиная с цикла выпуска FreeBSD 10.0-RELEASE, было введено понятие сборок \"" "`ALPHA`\". В отличие от сборок `BETA` и `RC`, сборки `ALPHA` не включены в " "график выпуска FreeBSD." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:358 msgid "" "The idea behind `ALPHA` builds is to provide regular FreeBSD-provided builds " "before the creation of the {branchStable} branch." msgstr "" "Идея сборок `ALPHA` заключается в предоставлении регулярных сборок FreeBSD " "до создания ветки {branchStable}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:360 msgid "FreeBSD `ALPHA` snapshots should be built approximately once a week." msgstr "" "Снимки состояния `ALPHA` FreeBSD должны собираться примерно раз в неделю." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:363 msgid "" "For the first `ALPHA` build, the `BRANCH` value in [.filename]#sys/conf/" "newvers.sh# needs to be changed from `CURRENT` to `ALPHA1`. For subsequent " "`ALPHA` builds, increment each `ALPHA__N__` value by one." msgstr "" "Для первой сборки `ALPHA` значение `BRANCH` в [.filename]#sys/conf/newvers." "sh# необходимо изменить с `CURRENT` на `ALPHA1`. Для последующих сборок " "`ALPHA` увеличивайте каждое значение `ALPHA__N__` на единицу." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:365 msgid "" "See crossref:freebsd-releng[releng-building, Building FreeBSD Installation " "Media] for information on building the `ALPHA` images." msgstr "" "См. crossref:freebsd-releng[releng-building, Сборка установочных носителей " "FreeBSD] для получения информации о сборке образов `ALPHA`." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:367 #, no-wrap msgid "Creating the {branchStablex} Branch" msgstr "Создание ветки {branchStablex}" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:372 msgid "" "When creating the {branchStable} branch, several changes are required in " "both the new {branchStable} branch and the {branchHead} branch. The files " "listed are relative to the repository root. To create the new " "{branchStablex} branch in Git:" msgstr "" "При создании ветки {branchStable} необходимо внести несколько изменений как " "в новой ветке {branchStable}, так и в ветке {branchHead}. Указанные файлы " "относятся к корню репозитория. Чтобы создать новую ветку {branchStablex} в " "Git:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:376 msgid "Make sure that you are in the {branchHead} branch" msgstr "Убедитесь, что вы находитесь в ветке {branchHead}" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:381 #, no-wrap msgid "% git checkout -b {branchStablex}\n" msgstr "% git checkout -b {branchStablex}\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:384 msgid "" "Once the {branchStablex} branch has been created, make the following edits:" msgstr "После создания ветки {branchStablex} внесите следующие изменения:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:392 #: documentation/content/en/articles/freebsd-releng/_index.adoc:447 #: documentation/content/en/articles/freebsd-releng/_index.adoc:644 #, no-wrap msgid "[.filename]#UPDATING#" msgstr "[.filename]#UPDATING#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:394 #, no-wrap msgid "Update the FreeBSD version, and remove the notice about `WITNESS`" msgstr "Обновите версию FreeBSD и удалите уведомление о `WITNESS`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:395 #, no-wrap msgid "[.filename]#contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h#" msgstr "[.filename]#contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:404 #, no-wrap msgid "" "[source,shell,subs=\"attributes\"]\n" "....\n" "#ifndef MALLOC_PRODUCTION\n" "#define MALLOC_PRODUCTION\n" "#endif\n" "...." msgstr "" "[source,shell,subs=\"attributes\"]\n" "....\n" "#ifndef MALLOC_PRODUCTION\n" "#define MALLOC_PRODUCTION\n" "#endif\n" "...." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:405 #: documentation/content/en/articles/freebsd-releng/_index.adoc:465 #: documentation/content/en/articles/freebsd-releng/_index.adoc:501 #, no-wrap msgid "[.filename]#lib/clang/llvm.build.mk#" msgstr "[.filename]#lib/clang/llvm.build.mk#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:407 #, no-wrap msgid "Uncomment `-DNDEBUG`" msgstr "Раскомментируйте `-DNDEBUG`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:408 #, no-wrap msgid "[.filename]#sys/\\*/conf/GENERIC*#" msgstr "[.filename]#sys/\\*/conf/GENERIC*#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:410 #: documentation/content/en/articles/freebsd-releng/_index.adoc:413 #, no-wrap msgid "Remove debugging support" msgstr "Удалите поддержку отладки" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:411 #, no-wrap msgid "[.filename]#sys/*/conf/MINIMAL#" msgstr "[.filename]#sys/*/conf/MINIMAL#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:414 #, no-wrap msgid "[.filename]#release/release.conf.sample#" msgstr "[.filename]#release/release.conf.sample#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:416 #, no-wrap msgid "Update `SRCBRANCH`" msgstr "Обновите `SRCBRANCH`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:417 #, no-wrap msgid "[.filename]#sys/*/conf/GENERIC-NODEBUG#" msgstr "[.filename]#sys/*/conf/GENERIC-NODEBUG#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:419 #, no-wrap msgid "Remove these kernel configurations" msgstr "Удалите следующие параметры конфигурации ядра" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:420 #, no-wrap msgid "[.filename]#sys/arm/conf/std.arm*#" msgstr "[.filename]#sys/arm/conf/std.arm*#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:422 #, no-wrap msgid "Remove debugging options" msgstr "Удалите отладочные опции" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:423 #: documentation/content/en/articles/freebsd-releng/_index.adoc:450 #: documentation/content/en/articles/freebsd-releng/_index.adoc:495 #: documentation/content/en/articles/freebsd-releng/_index.adoc:551 #: documentation/content/en/articles/freebsd-releng/_index.adoc:566 #: documentation/content/en/articles/freebsd-releng/_index.adoc:641 #, no-wrap msgid "[.filename]#sys/conf/newvers.sh#" msgstr "[.filename]#sys/conf/newvers.sh#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:425 #, no-wrap msgid "Update the `BRANCH` value to reflect `BETA1`" msgstr "Обновите значение `BRANCH`, чтобы оно соответствовало `BETA1`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:426 #: documentation/content/en/articles/freebsd-releng/_index.adoc:429 #, no-wrap msgid "[.filename]#share/mk/src.opts.mk#" msgstr "[.filename]#share/mk/src.opts.mk#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:428 #, no-wrap msgid "Move `REPRODUCIBLE_BUILD` from `\\__DEFAULT_NO_OPTIONS` to `__DEFAULT_YES_OPTIONS`" msgstr "" "Переместите `REPRODUCIBLE_BUILD` из `\\__DEFAULT_NO_OPTIONS` в " "`__DEFAULT_YES_OPTIONS`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:431 #, no-wrap msgid "Move `LLVM_ASSERTIONS` from `\\__DEFAULT_YES_OPTIONS` to `__DEFAULT_NO_OPTIONS`" msgstr "" "Переместите `LLVM_ASSERTIONS` из `\\__DEFAULT_YES_OPTIONS` в " "`__DEFAULT_NO_OPTIONS`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:432 #, no-wrap msgid "[.filename]#libexec/rc/rc.conf#" msgstr "[.filename]#libexec/rc/rc.conf#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:434 #, no-wrap msgid "Set `dumpdev` from `AUTO` to `NO` (it is configurable via for those that want it enabled by default)" msgstr "" "Установите `dumpdev` с `AUTO` на `NO` (это настраивается для тех, кто хочет " "включить его по умолчанию)" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:435 #, no-wrap msgid "[.filename]#release/Makefile#" msgstr "[.filename]#release/Makefile#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:436 #, no-wrap msgid "Remove the `debug.witness.trace` entries" msgstr "Удалите записи `debug.witness.trace`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:439 msgid "" "Then in the {branchHead} branch, which will now become a new major version:" msgstr "" "Затем в ветке {branchHead}, которая теперь станет новой основной версией:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:449 #, no-wrap msgid "Update the FreeBSD version" msgstr "Обновите версию FreeBSD" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:452 #, no-wrap msgid "Update the `BRANCH` value to reflect `CURRENT`, and increment `REVISION`" msgstr "" "Обновите значение `BRANCH`, чтобы оно соответствовало `CURRENT`, и увеличьте " "`REVISION`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:453 #: documentation/content/en/articles/freebsd-releng/_index.adoc:498 #, no-wrap msgid "[.filename]#Makefile.inc1#" msgstr "[.filename]#Makefile.inc1#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:455 #, no-wrap msgid "Update `TARGET_TRIPLE` and `MACHINE_TRIPLE`" msgstr "Обновите `TARGET_TRIPLE` и `MACHINE_TRIPLE`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:456 #: documentation/content/en/articles/freebsd-releng/_index.adoc:554 #: documentation/content/en/articles/freebsd-releng/_index.adoc:569 #, no-wrap msgid "[.filename]#sys/sys/param.h#" msgstr "[.filename]#sys/sys/param.h#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:458 #: documentation/content/en/articles/freebsd-releng/_index.adoc:556 #: documentation/content/en/articles/freebsd-releng/_index.adoc:570 #, no-wrap msgid "Update `__FreeBSD_version`" msgstr "Обновите `__FreeBSD_version`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:459 #, no-wrap msgid "[.filename]#gnu/usr.bin/cc/cc_tools/freebsd-native.h#" msgstr "[.filename]#gnu/usr.bin/cc/cc_tools/freebsd-native.h#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:461 #, no-wrap msgid "Update `FBSD_MAJOR` and `FBSD_CC_VER`" msgstr "Обновите `FBSD_MAJOR` и `FBSD_CC_VER`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:462 #, no-wrap msgid "[.filename]#contrib/gcc/config.gcc#" msgstr "[.filename]#contrib/gcc/config.gcc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:464 #, no-wrap msgid "Append the `freebsdversion.h` section" msgstr "Добавьте раздел `freebsdversion.h`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:467 #, no-wrap msgid "Update the value of `OS_VERSION`" msgstr "Обновите значение `OS_VERSION`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:468 #, no-wrap msgid "[.filename]#lib/clang/freebsd_cc_version.h#" msgstr "[.filename]#lib/clang/freebsd_cc_version.h#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:470 #, no-wrap msgid "Update `FREEBSD_CC_VERSION`" msgstr "Обновите `FREEBSD_CC_VERSION`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:471 #, no-wrap msgid "[.filename]#lib/clang/include/lld/Common/Version.inc#" msgstr "[.filename]#lib/clang/include/lld/Common/Version.inc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:473 #, no-wrap msgid "Update `LLD_REVISION_STRING`" msgstr "Обновите `LLD_REVISION_STRING`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:474 #: documentation/content/en/articles/freebsd-releng/_index.adoc:504 #, no-wrap msgid "[.filename]#Makefile.libcompat#" msgstr "[.filename]#Makefile.libcompat#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:475 #: documentation/content/en/articles/freebsd-releng/_index.adoc:505 #, no-wrap msgid "Update `LIB32CPUFLAGS`" msgstr "Обновите `LIB32CPUFLAGS`" #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:478 #, no-wrap msgid "Release from {branchStable}" msgstr "Выпуск релиза от {branchStable}" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:481 msgid "" "This section describes the general procedures of the FreeBSD release cycle " "from an extablished {branchStable} branch." msgstr "" "Этот раздел описывает общие процедуры цикла выпуска FreeBSD из установленной " "ветки {branchStable}." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:483 #, no-wrap msgid "FreeBSD `stable` Branch Code Slush" msgstr "Мягкая заморозка кода ветки `stable` FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:487 msgid "" "In preparation for the code freeze on a `stable` branch, several files need " "to be updated to reflect the release cycle is officially in progress. These " "files are all relative to the top-most level of the stable branch:" msgstr "" "В рамках подготовки к заморозке кода в ветке `stable` необходимо обновить " "несколько файлов, чтобы отразить официальное начало цикла выпуска. Эти файлы " "находятся в корневом каталоге ветки stable:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:497 #, no-wrap msgid "Update the `BRANCH` value to reflect `PRERELEASE`" msgstr "Обновите значение `BRANCH`, чтобы отразить `PRERELEASE`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:500 #, no-wrap msgid "Update `TARGET_TRIPLE`" msgstr "Обновите `TARGET_TRIPLE`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:503 #, no-wrap msgid "Update `OS_VERSION`" msgstr "Обновите `OS_VERSION`" #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:508 #, no-wrap msgid "FreeBSD `BETA` Builds" msgstr "Сборки FreeBSD `BETA`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:513 msgid "" "Following the code slush, the next phase of the release cycle is the code " "freeze. This is the point at which all commits to the stable branch require " "explicit approval from the {teamRe}. This is enforced by {git-admin-email} " "who handles the repository." msgstr "" "После периода мягкой заморозки следующая фаза цикла выпуска — это заморозка " "кода. На этом этапе все коммиты в стабильную ветку требуют явного одобрения " "от {teamRe}. Это контролируется {git-admin-email}, который управляет " "репозиторием." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:518 msgid "" "There are two general exceptions to requiring commit approval during the " "release cycle. The first is any change that needs to be committed by the " "Release Engineer to proceed with the day-to-day workflow of the release " "cycle, the other is security fixes that may occur during the release cycle." msgstr "" "Существует два общих исключения, когда не требуется подтверждение коммита во " "время цикла выпуска. Первое — любые изменения, которые необходимо " "закоммитить инженеру выпуска для продолжения ежедневной работы цикла " "выпуска. Второе — исправления безопасности, которые могут возникнуть во " "время цикла выпуска." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:522 msgid "" "Once the code freeze is in effect, the next build from the branch is labeled " "`BETA1`. This is done by updating the `BRANCH` value in [.filename]#sys/" "conf/newvers.sh# from `PRERELEASE` to `BETA1`." msgstr "" "После вступления в силу заморозки кода следующая сборка из ветки помечается " "как `BETA1`. Это делается путём изменения значения `BRANCH` в файле [." "filename]#sys/conf/newvers.sh# с `PRERELEASE` на `BETA1`." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:525 msgid "" "Once this is done, the first set of `BETA` builds are started. Subsequent " "`BETA` builds do not require updates to any files other than [.filename]#sys/" "conf/newvers.sh#, incrementing the `BETA` build number." msgstr "" "После этого начинается первая сборка `BETA`. Последующие сборки `BETA` не " "требуют обновления каких-либо файлов, кроме [.filename]#sys/conf/newvers.sh#" ", с увеличением номера сборки `BETA`." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:527 #, no-wrap msgid "Creating the {branchRelengx} Branch" msgstr "Создание ветки {branchRelengx}" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:533 msgid "" "When the first `RC` (Release Candidate) build is ready to begin, the " "{branchReleng} branch is created. This is a multi-step process that must be " "done in a specific order, to avoid anomalies such as overlaps with " "`__FreeBSD_version` values, for example. The paths listed below are " "relative to the repository root. The order of commits and what to change " "are:" msgstr "" "Когда первая сборка `RC` (Release Candidate) готова к началу, создается " "ветка {branchReleng}. Это многоэтапный процесс, который должен выполняться в " -"определенном порядке, чтобы избежать аномалий, таких как пересечения " +"определённом порядке, чтобы избежать аномалий, таких как пересечения " "значений `__FreeBSD_version`, например. Указанные ниже пути относятся к " "корню репозитория. Порядок коммитов и что нужно изменить:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:537 msgid "Make sure that you are in the {branchStablex} branch" msgstr "Убедитесь, что вы находитесь в ветке {branchStablex}" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:542 #, no-wrap msgid "% git checkout -b {branchRelengx}\n" msgstr "% git checkout -b {branchRelengx}\n" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:553 #, no-wrap msgid "Change `BETA__X__` to `RC1`" msgstr "Измените `BETA__X__` на `RC1`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:557 #, no-wrap msgid "[.filename]#sys/conf/kern.opts.mk#" msgstr "[.filename]#sys/conf/kern.opts.mk#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:559 #, no-wrap msgid "Move `REPRODUCIBLE_BUILD` from `__DEFAULT_NO_OPTIONS` to `__DEFAULT_YES_OPTIONS`" msgstr "" "Переместите `REPRODUCIBLE_BUILD` из `__DEFAULT_NO_OPTIONS` в " "`__DEFAULT_YES_OPTIONS`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:560 #, no-wrap msgid "[.filename]#etc/pkg/FreeBSD.conf#" msgstr "[.filename]#etc/pkg/FreeBSD.conf#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:562 #: documentation/content/en/articles/freebsd-releng/_index.adoc:565 #, no-wrap msgid "Replace `latest` with `quarterly` as the default package repository location" msgstr "" "Замените `latest` на `quarterly` в качестве расположения репозитория пакетов " "по умолчанию" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:563 #, no-wrap msgid "[.filename]#release/pkg_repos/release-dvd.conf#" msgstr "[.filename]#release/pkg_repos/release-dvd.conf#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:568 #, no-wrap msgid "Update `BETA__X__` with `PRERELEASE`" msgstr "Обновите `BETA__X__` на `PRERELEASE`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:573 msgid "" "Then, {git-admin-email} adds new approvers for the releng branch as did for " "the stable branch." msgstr "" "Затем {git-admin-email} добавляет новых утверждающих для ветки releng, как " "это было сделано для ветки stable." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:578 #, no-wrap msgid "" "% git add .\n" "% git commit\n" msgstr "" "% git add .\n" "% git commit\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:581 msgid "" "Now that two new `__FreeBSD_version` values exist, also update [.filename]#~/" "documentation/content/en/books/porters-handbook/versions/chapter.adoc# in " "the Documentation Project repository." msgstr "" "Теперь, когда существуют два новых значения `__FreeBSD_version`, также " "обновите файл [.filename]#~/documentation/content/en/books/porters-handbook/" "versions/chapter.adoc# в репозитории проекта документации." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:583 msgid "" "After the first `RC` build has completed and tested, the {branchStable} " "branch can be \"thawed\" by {git-admin-email}." msgstr "" "После завершения первой сборки `RC` и её тестирования ветку {branchStable} " "можно «разморозить» с помощью {git-admin-email}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:585 msgid "" "Following the availability of the first `RC`, {teamBugmeister} should be " "emailed to add the new FreeBSD `-RELEASE` to the `versions` available in the " "drop-down menu shown in the bug tracker." msgstr "" "После появления первой версии `RC` необходимо отправить письмо команде " "{teamBugmeister}, чтобы добавить новую версию FreeBSD `-RELEASE` в список " "`versions`, доступный в выпадающем меню трекера ошибок." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:587 #, no-wrap msgid "Building FreeBSD Installation Media" msgstr "Создание установочных носителей FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:590 msgid "" "This section describes the general procedures producing FreeBSD development " "snapshots and releases." msgstr "" "Этот раздел описывает общие процедуры создания снимков разработки и выпусков " "FreeBSD." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:592 #, no-wrap msgid "Release Build Scripts" msgstr "Скрипты сборки релизов" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:595 msgid "" "Prior to FreeBSD 9.0-RELEASE, [.filename]#src/release/Makefile# was updated " "to support , and the [.filename]#src/release/generate-release.sh# script was " "introduced as a wrapper to automate invoking the targets." msgstr "" "До выхода FreeBSD 9.0-RELEASE файл [.filename]#src/release/Makefile# был " "обновлен для поддержки , а скрипт [.filename]#src/release/generate-release." -"sh# был добавлен в качестве обертки для автоматизации вызова целей." +"sh# был добавлен в качестве обёртки для автоматизации вызова целей." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:598 msgid "" "Prior to FreeBSD 9.2-RELEASE, [.filename]#src/release/release.sh# was " "introduced, which heavily based on [.filename]#src/release/generate-release." "sh# included support to specify configuration files to override various " "options and environment variables. Support for configuration files provided " "support for cross building each architecture for a release by specifying a " "separate configuration file for each invocation." msgstr "" "До выхода FreeBSD 9.2-RELEASE был представлен [.filename]#src/release/release" ".sh#, который, основываясь на [.filename]#src/release/generate-release.sh#, " "включал поддержку указания конфигурационных файлов для переопределения " "различных опций и переменных окружения. Поддержка конфигурационных файлов " "обеспечила возможность кросс-сборки каждого архитектурного варианта для " "релиза путем указания отдельного конфигурационного файла для каждого вызова." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:600 msgid "" "As a brief example of using [.filename]#src/release/release.sh# to build a " "single release in [.filename]#/scratch#:" msgstr "" "В качестве краткого примера использования [.filename]#src/release/release.sh#" " для сборки одного релиза в [.filename]#/scratch#:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:604 #, no-wrap msgid "# /bin/sh /usr/src/release/release.sh\n" msgstr "# /bin/sh /usr/src/release/release.sh\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:607 msgid "" "As a brief example of using [.filename]#src/release/release.sh# to build a " "single, cross-built release using a different target directory, create a " "custom [.filename]#release.conf# containing:" msgstr "" "В качестве краткого примера использования [.filename]#src/release/release.sh#" " для сборки единого кросс-собранного выпуска с использованием другого " "целевого каталога, создайте пользовательский [.filename]#release.conf#, " "содержащий:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:615 #, no-wrap msgid "" "# release.sh configuration for powerpc/powerpc64\n" "CHROOTDIR=\"/scratch-powerpc64\"\n" "TARGET=\"powerpc\"\n" "TARGET_ARCH=\"powerpc64\"\n" "KERNEL=\"GENERIC64\"\n" msgstr "" "# release.sh configuration for powerpc/powerpc64\n" "CHROOTDIR=\"/scratch-powerpc64\"\n" "TARGET=\"powerpc\"\n" "TARGET_ARCH=\"powerpc64\"\n" "KERNEL=\"GENERIC64\"\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:618 msgid "Then invoke [.filename]#src/release/release.sh# as:" msgstr "Затем выполните [.filename]#src/release/release.sh# следующим образом:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:622 #, no-wrap msgid "# /bin/sh /usr/src/release/release.sh -c $HOME/release.conf\n" msgstr "# /bin/sh /usr/src/release/release.sh -c $HOME/release.conf\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:625 msgid "" "See and [.filename]#src/release/release.conf.sample# for more details and " "example usage." msgstr "" "См. [.filename]#src/release/release.conf.sample# для получения " "дополнительных сведений и примеров использования." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:627 #, no-wrap msgid "Building FreeBSD Releases" msgstr "Сборка релизов FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:631 msgid "" "During the release cycle, a copy of [.filename]#CHECKSUM.SHA512# and [." "filename]#CHECKSUM.SHA256# for each architecture are stored in the {teamRe} " "internal repository in addition to being included in the various " "announcement emails. Each [.filename]#MANIFEST# containing the hashes of [." "filename]#base.txz#, [.filename]#kernel.txz#, etc. are added to package:misc/" "freebsd-release-manifests[] in the Ports Collection, as well." msgstr "" "В течение цикла выпуска копии файлов [.filename]#CHECKSUM.SHA512# и [." "filename]#CHECKSUM.SHA256# для каждой архитектуры сохраняются во внутреннем " "репозитории {teamRe}, а также включаются в различные рассылки с " "объявлениями. Каждый файл [.filename]#MANIFEST#, содержащий хеши [." "filename]#base.txz#, [.filename]#kernel.txz# и других, также добавляется в " "пакет package:misc/freebsd-release-manifests[] в Коллекции портов." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:633 msgid "In preparation for the release build, several files need to be updated:" msgstr "В подготовке к сборке выпуска необходимо обновить несколько файлов:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:643 #, no-wrap msgid "Update the `BRANCH` value to `RELEASE`" msgstr "Обновите значение `BRANCH` на `RELEASE`" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:646 #, no-wrap msgid "Add the anticipated announcement date" msgstr "Добавьте предполагаемую дату объявления" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:647 #, no-wrap msgid "[.filename]#lib/csu/common/crtbrand.S#" msgstr "[.filename]#lib/csu/common/crtbrand.S#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:648 #, no-wrap msgid "Replace `__FreeBSD_version` with the value in [.filename]#sys/sys/param.h#" msgstr "" "Замените `__FreeBSD_version` на значение из [.filename]#sys/sys/param.h#" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:653 msgid "" "After building the final `RELEASE`, the {branchRelengx} branch is tagged as " "{tagReleasex} using the revision from which the `RELEASE` was built. " "Similar to creating the {branchStablex} and {branchRelengx} branches, this " "is done with `git tag`. From the repository root:" msgstr "" "После сборки окончательного `RELEASE`, ветка {branchRelengx} помечается как " "{tagReleasex}, используя ревизию, из которой был собран `RELEASE`. " "Аналогично созданию веток {branchStablex} и {branchRelengx}, это делается с " "помощью `git tag`. Из корня репозитория:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:657 msgid "Make sure that you are in the {branchRelengx} branch" msgstr "Убедитесь, что вы находитесь в ветке {branchRelengx}" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:662 #, no-wrap msgid "% git tag {tagReleasex}\n" msgstr "% git tag {tagReleasex}\n" #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:665 #, no-wrap msgid "Publishing FreeBSD Installation Media to Project Mirrors" msgstr "Публикация установочных носителей FreeBSD на зеркалах проекта" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:668 msgid "" "This section describes the procedure to publish FreeBSD development " "snapshots and releases to the Project mirrors." msgstr "" "Этот раздел описывает процедуру публикации снимков разработки FreeBSD и " "выпусков на зеркала Проекта." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:670 #, no-wrap msgid "Staging FreeBSD Installation Media Images" msgstr "Подготовка образов установочных носителей FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:673 msgid "Staging FreeBSD snapshots and releases is a two part process:" msgstr "" "Этап подготовки (staging) снимков и выпусков FreeBSD — это двухэтапный " "процесс:" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:675 msgid "Creating the directory structure to match the hierarchy on `ftp-master`" msgstr "Создание структуры каталогов, соответствующей иерархии на `ftp-master`" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:678 msgid "" "If `EVERYTHINGISFINE` is defined in the build configuration files, [." "filename]#main.conf# in the case of the build scripts referenced above, this " "happens automatically in the after the build is complete, creating the " "directory structure in [.filename]#${DESTDIR}/R/ftp-stage# with a path " "structure matching what is expected on `ftp-master`. This is equivalent to " "running the following in the directly:" msgstr "" "Если `EVERYTHINGISFINE` определено в конфигурационных файлах сборки, [." "filename]#main.conf# в случае скриптов сборки, упомянутых выше, это " "происходит автоматически после завершения сборки, создавая структуру " "каталогов в [.filename]#${DESTDIR}/R/ftp-stage# с путями, соответствующими " "ожидаемым на `ftp-master`. Это эквивалентно выполнению следующего в каталоге:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:682 #, no-wrap msgid "# make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage\n" msgstr "" "# make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:685 msgid "" "After each architecture is built, [.filename]#thermite.sh# will rsync the [." "filename]#${DESTDIR}/R/ftp-stage# from the build to [.filename]#/snap/ftp/" "snapshots# or [.filename]#/snap/ftp/releases# on the build host, " "respectively." msgstr "" "После сборки каждой архитектуры скрипт [.filename]#thermite.sh# выполнит " "синхронизацию [.filename]#${DESTDIR}/R/ftp-stage# с билда в каталоге [." "filename]#/snap/ftp/snapshots# или [.filename]#/snap/ftp/releases# на хосте " "сборки, соответственно." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:686 msgid "" "Copying the files to a staging directory on `ftp-master` before moving the " "files into [.filename]#pub/# to begin propagation to the Project mirrors" msgstr "" "Копирование файлов в промежуточный каталог на `ftp-master` перед " "перемещением файлов в [.filename]#pub/# для начала распространения на " "зеркала Проекта" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:688 msgid "" "Once all builds have finished, [.filename]#/snap/ftp/snapshots#, or [." "filename]#/snap/ftp/releases# for a release, is polled by `ftp-master` using " "rsync to [.filename]#/archive/tmp/snapshots# or [.filename]#/archive/tmp/" "releases#, respectively." msgstr "" "После завершения всех сборок каталог [.filename]#/snap/ftp/snapshots# (или [." "filename]#/snap/ftp/releases# для релиза) опрашивается `ftp-master`-ом с " "использованием rsync для передачи в [.filename]#/archive/tmp/snapshots# или [" ".filename]#/archive/tmp/releases#, соответственно." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:692 msgid "" "On `ftp-master` in the FreeBSD Project infrastructure, this step requires " "`root` level access, as this step must be executed as the `archive` user." msgstr "" "На `ftp-master` в инфраструктуре проекта FreeBSD этот шаг требует доступа " "уровня `root`, так как он должен выполняться от имени пользователя `archive`." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:695 #, no-wrap msgid "Publishing FreeBSD Installation Media" msgstr "Публикация установочных носителей FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:699 msgid "" "Once the images are staged in [.filename]#/archive/tmp/#, they are ready to " "be made public by putting them in [.filename]#/archive/pub/FreeBSD#. To " "reduce propagation time, is used to create hard links from [.filename]#/" "archive/tmp# to [.filename]#/archive/pub/FreeBSD#." msgstr "" "Как только образы размещены в [.filename]#/archive/tmp/#, они готовы к " "публикации путем размещения в [.filename]#/archive/pub/FreeBSD#. Для " -"уменьшения времени распространения используются жесткие ссылки из [." +"уменьшения времени распространения используются жёсткие ссылки из [." "filename]#/archive/tmp# в [.filename]#/archive/pub/FreeBSD#." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:703 msgid "" "For this to be effective, both [.filename]#/archive/tmp# and [.filename]#/" "archive/pub# must reside on the same logical filesystem." msgstr "" "Для эффективной работы и [.filename]#/archive/tmp#, и [.filename]#/archive/" "pub# должны находиться в одной логической файловой системе." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:706 msgid "" "There is a caveat, however, where rsync must be used after to correct the " "symbolic links in [.filename]#pub/FreeBSD/snapshots/ISO-IMAGES# which will " "replace with a hard link, increasing the propagation time." msgstr "" "Однако есть оговорка: после этого необходимо использовать rsync для " "исправления символических ссылок в [.filename]#pub/FreeBSD/snapshots/ISO-" "IMAGES#, которые будут заменены на жёсткие ссылки, что увеличит время " "распространения." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:710 msgid "" "As with the staging steps, this requires `root` level access, as this step " "must be executed as the `archive` user." msgstr "" "Как и на этапе подготовки, это требует доступа уровня `root`, так как данный " "шаг должен быть выполнен от имени пользователя `archive`." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:713 msgid "As the `archive` user:" msgstr "Как пользователь `archive`:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:719 #, no-wrap msgid "" "% cd /archive/tmp/snapshots\n" "% pax -r -w -l . /archive/pub/FreeBSD/snapshots\n" "% /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/snapshots/\n" msgstr "" "% cd /archive/tmp/snapshots\n" "% pax -r -w -l . /archive/pub/FreeBSD/snapshots\n" "% /usr/local/bin/rsync -avH /archive/tmp/snapshots/* /archive/pub/FreeBSD/" "snapshots/\n" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:722 msgid "Replace _snapshots_ with _releases_ as appropriate." msgstr "Замените _снимки_ на _релизы_ там, где это уместно." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:724 #, no-wrap msgid "Wrapping up the Release Cycle" msgstr "Завершение цикла выпуска" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:727 msgid "This section describes general post-release tasks." msgstr "Этот раздел описывает общие задачи после выпуска." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:729 #, no-wrap msgid "Post-Release Errata Notices" msgstr "Уведомления об исправлениях после выпуска" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:733 msgid "" "As the release cycle approaches conclusion, it is common to have several EN " "(Errata Notice) candidates to address issues that were discovered late in " "the cycle. Following the release, the {teamRe} and the {teamSecteam} " "revisit changes that were not approved prior to the final release, and " "depending on the scope of the change in question, may issue an EN." msgstr "" "По мере приближения цикла выпуска к завершению часто появляются несколько " "кандидатов в EN (Errata Notice — уведомления об ошибках) для устранения " "проблем, обнаруженных на поздних этапах цикла. После выпуска {teamRe} и " "{teamSecteam} пересматривают изменения, которые не были одобрены до " "финального выпуска, и, в зависимости от масштаба рассматриваемого изменения, " "могут выпустить EN." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-releng/_index.adoc:737 msgid "The actual process of issuing ENs is handled by the {teamSecteam}." msgstr "Фактический процесс выпуска EN обрабатывается командой {teamSecteam}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:740 msgid "" "To request an Errata Notice after a release cycle has completed, a developer " "should fill out the https://www.freebsd.org/security/errata-template." "txt[Errata Notice template], in particular the `Background`, `Problem " "Description`, `Impact`, and if applicable, `Workaround` sections." msgstr "" "Для запроса уведомления об ошибке после завершения цикла выпуска разработчик " "должен заполнить https://www.freebsd.org/security/errata-template.txt[шаблон " "уведомления об ошибке], в частности разделы `Предыстория`, `Описание " "проблемы`, `Последствия` и, если применимо, `Обходное решение`." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:742 msgid "" "The completed Errata Notice template should be emailed together with either " "a patch against the {branchReleng} branch or a list of revisions from the " "{branchStable} branch." msgstr "" "Заполненный шаблон уведомления об ошибке следует отправить по электронной " "почте вместе с патчем для ветки {branchReleng} или списком ревизий из ветки " "{branchStable}." #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:746 msgid "" "For Errata Notice requests immediately following the release, the request " "should be emailed to both the {teamRe} and the {teamSecteam}. Once the " "{branchReleng} branch has been handed over to the {teamSecteam} as described " "in crossref:freebsd-releng[releng-wrapup-handoff, Handoff to the " "{teamSecteam}], Errata Notice requests should be sent to the {teamSecteam}." msgstr "" "Для запросов на уведомления об ошибках (Errata Notice), поступающих сразу " "после выпуска, запрос следует отправлять по электронной почте как в {teamRe}" ", так и в {teamSecteam}. После того как ветка {branchReleng} передана " "{teamSecteam}, как описано в crossref:freebsd-releng[releng-wrapup-handoff, " "Передача {teamSecteam}], запросы на уведомления об ошибках следует " "направлять в {teamSecteam}." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:748 #, no-wrap msgid "Handoff to the {teamSecteam}" msgstr "Передача в {teamSecteam}" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:751 msgid "" "Roughly two weeks following the release, the Release Engineer updates the " "Git repository changing the approver from the Release engineering team to " "the security officer for the {branchRelengx} branch." msgstr "" "Примерно через две недели после выпуска релиза инженер по релизам обновляет " "репозиторий Git, изменяя утверждающего с команды инженеров по релизам на " "офицера безопасности для ветки `{branchRelengx}`." #. type: Title == #: documentation/content/en/articles/freebsd-releng/_index.adoc:753 #, no-wrap msgid "Release End-of-Life" msgstr "Конец срока поддержки выпуска" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:756 msgid "" "This section describes the website-related files to update when a release " "reaches EoL (End-of-Life)." msgstr "" "Этот раздел описывает файлы, связанные с веб-сайтом, которые необходимо " "обновить, когда выпуск достигает EoL (End-of-Life)." #. type: Title === #: documentation/content/en/articles/freebsd-releng/_index.adoc:758 #, no-wrap msgid "Website Updates for End-of-Life" msgstr "Обновления веб-сайта для прекращения поддержки" #. type: Plain text #: documentation/content/en/articles/freebsd-releng/_index.adoc:761 msgid "" "When a release reaches End-of-Life, references to that release should be " "removed and/or updated on the website:" msgstr "" "Когда выпуск достигает конца жизненного цикла, ссылки на этот выпуск должны " "быть удалены и/или обновлены на веб-сайте:" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:766 #, no-wrap msgid "File" msgstr "Файл" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:769 #, no-wrap msgid "[.filename]#~/website/themes/beastie/layouts/index.html#" msgstr "[.filename]#~/website/themes/beastie/layouts/index.html#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:771 #: documentation/content/en/articles/freebsd-releng/_index.adoc:789 #, no-wrap msgid "Remove `u-relXXX-announce` and `u-relXXX-announce` references." msgstr "Удалите ссылки на `u-relXXX-announce` и `u-relXXX-announce`." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:772 #, no-wrap msgid "[.filename]#~/website/content/en/releases/_index.adoc#" msgstr "[.filename]#~/website/content/en/releases/_index.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:774 #, no-wrap msgid "Move the `u-relXXX-*` variables from the supported release list to the Legacy Releases list." msgstr "" "Переместите переменные `u-relXXX-*` из списка поддерживаемых выпусков в " "список Устаревших выпусков." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:775 #, no-wrap msgid "[.filename]#~/website/content/en/releng/_index.adoc#" msgstr "[.filename]#~/website/content/en/releng/_index.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:777 #, no-wrap msgid "Update the appropriate releng branch to reflect the branch is no longer supported." msgstr "" "Обновите соответствующую ветку releng, чтобы отразить, что ветка больше не " "поддерживается." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:778 #, no-wrap msgid "[.filename]#~/website/content/en/security/_index.adoc#" msgstr "[.filename]#~/website/content/en/security/_index.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:780 #, no-wrap msgid "Remove the branch from the supported branch list." msgstr "Удалить ветку из списка поддерживаемых веток." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:781 #, no-wrap msgid "[.filename]#~/website/content/en/security/unsupported.adoc#" msgstr "[.filename]#~/website/content/en/security/unsupported.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:783 #, no-wrap msgid "Add the branch to the unsupported branch list." msgstr "Добавить ветку в список неподдерживаемых веток." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:784 #, no-wrap msgid "[.filename]#~/website/content/en/where.adoc#" msgstr "[.filename]#~/website/content/en/where.adoc#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:786 #, no-wrap msgid "Remove the URLs for the release." msgstr "Удалите URL-адреса для выпуска." #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:787 #, no-wrap msgid "[.filename]#~/website/themes/beastie/layouts/partials/sidenav.html#" msgstr "[.filename]#~/website/themes/beastie/layouts/partials/sidenav.html#" #. type: Table #: documentation/content/en/articles/freebsd-releng/_index.adoc:792 #: documentation/content/en/articles/freebsd-releng/_index.adoc:794 #, no-wrap msgid "Remove references to the release and releng branch." msgstr "Удалите ссылки на ветку release и releng." diff --git a/documentation/content/ru/articles/freebsd-src-lsp/_index.po b/documentation/content/ru/articles/freebsd-src-lsp/_index.po index 828f3488fd..745baf69cf 100644 --- a/documentation/content/ru/articles/freebsd-src-lsp/_index.po +++ b/documentation/content/ru/articles/freebsd-src-lsp/_index.po @@ -1,689 +1,689 @@ # SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2024-01-17 20:35-0300\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"PO-Revision-Date: 2026-03-09 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/articles/freebsd-src-lsp/_index.adoc:1 #, no-wrap msgid "Use Language Servers for development in the FreeBSD src tree to get precise go-to-definition and completion results." msgstr "" "Используйте языковые серверы для разработки в дереве исходного кода FreeBSD, " "чтобы получать точные результаты при переходах к определениям функций и " "переменных и при автодополнениях." #. type: Title = #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:1 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:13 #, no-wrap msgid "Use Language Servers for Development in the FreeBSD Src Tree" msgstr "" "Использование разработчиками языковых серверов в дереве исходного кода " "FreeBSD" #. type: Title == #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:47 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:50 msgid "" "This guide is about setting up a FreeBSD src tree with language servers " "performing source code indexing. The guide describes the steps for Vim/" "NeoVim and VSCode. If you use a different text editor you can use this guide " "as a reference and search the equivalent commands for your preferred editor." msgstr "" "Это руководство посвящено настройке дерева исходных кодов FreeBSD с " "использованием языковых серверов для индексации исходного кода. В " "руководстве описаны шаги для Vim/NeoVim и VSCode. Если вы используете другой " "текстовый редактор, вы можете использовать это руководство в качестве " "справочника и найти эквивалентные команды для вашего любимого редактора." #. type: Title == #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:52 #, no-wrap msgid "Requirements" msgstr "Требования" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:55 msgid "" "In order to follow this guide we need to install certain requirements. We " "need a Language server, `ccls` or `clangd`, and optionally a compilation " "database." msgstr "" "Для следования этому руководству необходимо установить определённые " "требования. Нам понадобится языковой сервер, `ccls` или `clangd`, а также, " "опционально, база данных компиляции." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:57 msgid "" "The installation of the Language server can be performed via `pkg` or via " "ports. If we chose `clangd` we need to install `llvm`." msgstr "" "Установка языкового сервера может быть выполнена через `pkg` или через " "порты. Если мы выберем `clangd`, нам нужно установить `llvm`." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:59 msgid "Using `pkg` to install `ccls`:" msgstr "Использование `pkg` для установки `ccls`:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:63 #, no-wrap msgid "# pkg install ccls\n" msgstr "# pkg install ccls\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:66 msgid "" "If we want to use `clangd` we need to install `llvm` (The example command " "uses `llvm15` but choose the version you desire):" msgstr "" "Если мы хотим использовать `clangd`, нам необходимо установить `llvm` (в " "примере команды используется `llvm15`, но вы можете выбрать нужную версию):" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:70 #, no-wrap msgid "# pkg install llvm15\n" msgstr "# pkg install llvm15\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:73 msgid "" "To install via ports choose a favorite combination of tools from each " "category below:" msgstr "" "Для установки через порты выберите предпочтительную комбинацию инструментов " "из каждой категории ниже:" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:75 msgid "Language server implementations" msgstr "Реализации языковых серверов" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:76 msgid "package:devel/ccls[]" msgstr "package:devel/ccls[]" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:77 msgid "" "package:devel/llvm12[] (Other versions are okay, but newer is better. " "Replace `clangd12` with clangdN in case other versions are used.)" msgstr "" "package:devel/llvm12[] (Другие версии также подходят, но чем новее, тем " "лучше. Замените `clangd12` на clangdN в случае использования других версий.)" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:78 msgid "Editors" msgstr "Редакторы" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:79 msgid "package:editors/vim[]" msgstr "package:editors/vim[]" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:80 msgid "package:editors/neovim[]" msgstr "package:editors/neovim[]" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:81 msgid "package:editors/vscode[]" msgstr "package:editors/vscode[]" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:82 msgid "Compilation database generator" msgstr "Генератор базы данных компиляции" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:83 msgid "package:devel/python[] (For llvm's scan-build-py implementation)" msgstr "package:devel/python[] (Для реализации scan-build-py из llvm)" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:84 msgid "package:devel/py-pip[] (For rizsotto's scan-build implementation)" msgstr "package:devel/py-pip[] (Для реализации scan-build от rizsotto)" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:85 msgid "package:devel/bear[]" msgstr "package:devel/bear[]" #. type: Title == #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:87 #, no-wrap msgid "Editor settings" msgstr "Настройки редактора" #. type: Title === #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:90 #, no-wrap msgid "Vim/Neovim" msgstr "Vim/Neovim" #. type: Title ==== #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:92 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:178 #, no-wrap msgid "LSP client plugins" msgstr "Плагины клиента LSP" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:96 msgid "" "The built-in plugin manager is used for both editors in this example. The " "LSP client plugin used is link:https://github.com/prabirshrestha/vim-" "lsp[prabirshrestha/vim-lsp]." msgstr "" "Встроенный менеджер плагинов используется для обоих редакторов в этом " "примере. Плагин LSP-клиента, который используется, — это link:https://github." "com/prabirshrestha/vim-lsp[prabirshrestha/vim-lsp]." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:98 msgid "To set up the LSP client plugin for Neovim:" msgstr "Для настройки клиентского плагина LSP для Neovim:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:103 #, no-wrap msgid "" "# mkdir -p ~/.config/nvim/pack/lsp/start\n" "# git clone https://github.com/prabirshrestha/vim-lsp ~/.config/nvim/pack/lsp/start/vim-lsp\n" msgstr "" "# mkdir -p ~/.config/nvim/pack/lsp/start\n" "# git clone https://github.com/prabirshrestha/vim-lsp ~/.config/nvim/pack/" "lsp/start/vim-lsp\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:106 msgid "and for Vim:" msgstr "и для Vim:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:111 #, no-wrap msgid "" "# mkdir -p ~/.vim/pack/lsp/start\n" "# git clone https://github.com/prabirshrestha/vim-lsp ~/.vim/pack/lsp/start/vim-lsp\n" msgstr "" "# mkdir -p ~/.vim/pack/lsp/start\n" "# git clone https://github.com/prabirshrestha/vim-lsp ~/.vim/pack/lsp/start/" "vim-lsp\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:114 msgid "" "To enable the LSP client plugin in the editor, add the following snippet " "into [.filepath]#~/.config/nvim/init.vim# when using Neovim, or [." "filepath]#~/.vim/vimrc# when using Vim:" msgstr "" "Чтобы включить плагин LSP-клиента в редакторе, добавьте следующий фрагмент в " "[.filepath]#~/.config/nvim/init.vim# при использовании Neovim или в [." "filepath]#~/.vim/vimrc# при использовании Vim:" #. type: Block title #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:115 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:203 #, no-wrap msgid "For ccls" msgstr "Для ccls" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:127 #, no-wrap msgid "" "au User lsp_setup call lsp#register_server({\n" " \\ 'name': 'ccls',\n" " \\ 'cmd': {server_info->['ccls']},\n" " \\ 'allowlist': ['c', 'cpp', 'objc'],\n" " \\ 'initialization_options': {\n" " \\ 'cache': {\n" " \\ 'hierarchicalPath': v:true\n" " \\ }\n" " \\ }})\n" msgstr "" "au User lsp_setup call lsp#register_server({\n" " \\ 'name': 'ccls',\n" " \\ 'cmd': {server_info->['ccls']},\n" " \\ 'allowlist': ['c', 'cpp', 'objc'],\n" " \\ 'initialization_options': {\n" " \\ 'cache': {\n" " \\ 'hierarchicalPath': v:true\n" " \\ }\n" " \\ }})\n" #. type: Block title #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:129 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:188 #, no-wrap msgid "For clangd" msgstr "Для clangd" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:138 #, no-wrap msgid "" "au User lsp_setup call lsp#register_server({\n" " \\ 'name': 'clangd',\n" " \\ 'cmd': {server_info->['clangd15', '--background-index', '--header-insertion=never']},\n" " \\ 'allowlist': ['c', 'cpp', 'objc'],\n" " \\ 'initialization_options': {},\n" " \\ })\n" msgstr "" "au User lsp_setup call lsp#register_server({\n" " \\ 'name': 'clangd',\n" " \\ 'cmd': {server_info->['clangd15', '--background-index', '--header-" "insertion=never']},\n" " \\ 'allowlist': ['c', 'cpp', 'objc'],\n" " \\ 'initialization_options': {},\n" " \\ })\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:141 msgid "" "Depending on the version that you installed for `clangd` you might need to " "update the `server-info` to point to the correct binary." msgstr "" "В зависимости от установленной версии `clangd` может потребоваться обновить " "`server-info`, чтобы указать на правильный бинарный файл." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:144 msgid "" "Please refer to link:https://github.com/prabirshrestha/vim-lsp/blob/master/" "README.md#registering-servers[] to learn about setting up key bindings and " "code completion. The official site of clangd is link:https://clangd.llvm." "org[], and the repository link of ccls is link:https://github.com/MaskRay/" "ccls/[]." msgstr "" "Обратитесь к link:https://github.com/prabirshrestha/vim-lsp/blob/master/" "README.md#registering-servers[], чтобы узнать о настройке сочетаний клавиш и " "автодополнения кода. Официальный сайт clangd находится по ссылке " "link:https://clangd.llvm.org[], а репозиторий ccls — link:https://github.com/" "MaskRay/ccls/[]." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:147 msgid "" "Below are the reference settings of keybindings and code completions. Put " "the following snippet into [.filepath]#~/.config/nvim/init.vim#, or [." "filepath]#~/.vim/vimrc# for Vim users to use it:" msgstr "" "Ниже приведены эталонные настройки сочетаний клавиш и автодополнения кода. " "Поместите следующий фрагмент в [.filepath]#~/.config/nvim/init.vim# или [." "filepath]#~/.vim/vimrc# для пользователей Vim, чтобы использовать его:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:154 #, no-wrap msgid "" "function! s:on_lsp_buffer_enabled() abort\n" " setlocal omnifunc=lsp#complete\n" " setlocal completeopt-=preview\n" " setlocal keywordprg=:LspHover\n" msgstr "" "function! s:on_lsp_buffer_enabled() abort\n" " setlocal omnifunc=lsp#complete\n" " setlocal completeopt-=preview\n" " setlocal keywordprg=:LspHover\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:168 #, no-wrap msgid "" " nmap (lsp-definition)\n" " nmap ] (lsp-peek-definition)\n" " nmap (lsp-peek-definition)\n" " nmap gr (lsp-references)\n" " nmap (lsp-next-reference)\n" " nmap (lsp-previous-reference)\n" " nmap gI (lsp-implementation)\n" " nmap go (lsp-document-symbol)\n" " nmap gS (lsp-workspace-symbol)\n" " nmap ga (lsp-code-action)\n" " nmap gR (lsp-rename)\n" " nmap gm (lsp-signature-help)\n" "endfunction\n" msgstr "" " nmap (lsp-definition)\n" " nmap ] (lsp-peek-definition)\n" " nmap (lsp-peek-definition)\n" " nmap gr (lsp-references)\n" " nmap (lsp-next-reference)\n" " nmap (lsp-previous-reference)\n" " nmap gI (lsp-implementation)\n" " nmap go (lsp-document-symbol)\n" " nmap gS (lsp-workspace-symbol)\n" " nmap ga (lsp-code-action)\n" " nmap gR (lsp-rename)\n" " nmap gm (lsp-signature-help)\n" "endfunction\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:173 #, no-wrap msgid "" "augroup lsp_install\n" " au!\n" " autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()\n" "augroup END\n" msgstr "" "augroup lsp_install\n" " au!\n" " autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()\n" "augroup END\n" #. type: Title === #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:176 #, no-wrap msgid "VSCode" msgstr "VSCode" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:183 msgid "" "LSP client plugins are required to launch the language server daemon. Press " "`Ctrl+Shift+X` to show the extension online search panel. Enter `llvm-vs-" "code-extensions.vscode-clangd` when running clangd, or `ccls-project.ccls` " "when running ccls." msgstr "" "Для работы демона языкового сервера необходимы клиентские плагины LSP. " "Нажмите `Ctrl+Shift+X`, чтобы открыть панель поиска расширений в сети. " "Введите `llvm-vs-code-extensions.vscode-clangd` при использовании clangd или " "`ccls-project.ccls` при использовании ccls." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:187 msgid "" "Then, press `Ctrl+Shift+P` to show the editor commands palette. Enter " "`Preferences: Open Settings (JSON)` into the palette and hit `Enter` to open " "[.filepath]#settings.json#. Depending on the language server " "implementations, put one of the following JSON key/value pairs in [." "filepath]#settings.json#:" msgstr "" "Затем нажмите `Ctrl+Shift+P`, чтобы открыть палитру команд редактора. " "Введите `Preferences: Open Settings (JSON)` в палитру и нажмите `Enter`, " "чтобы открыть [.filepath]#settings.json#. В зависимости от реализации " "языкового сервера, добавьте одну из следующих пар ключ/значение JSON в [." "filepath]#settings.json#:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:201 #, no-wrap msgid "" "[\n" " /* Begin of your existing configurations */\n" " ...\n" " /* End of your existing configurations */\n" " \"clangd.arguments\": [\n" " \"--background-index\",\n" " \"--header-insertion=never\"\n" " ],\n" " \"clangd.path\": \"clangd12\"\n" "]\n" msgstr "" "[\n" " /* Begin of your existing configurations */\n" " ...\n" " /* End of your existing configurations */\n" " \"clangd.arguments\": [\n" " \"--background-index\",\n" " \"--header-insertion=never\"\n" " ],\n" " \"clangd.path\": \"clangd12\"\n" "]\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:212 #, no-wrap msgid "" "[\n" " /* Begin of your existing configurations */\n" " ...\n" " /* End of your existing configurations */\n" " \"ccls.cache.hierarchicalPath\": true\n" "]\n" msgstr "" "[\n" " /* Begin of your existing configurations */\n" " ...\n" " /* End of your existing configurations */\n" " \"ccls.cache.hierarchicalPath\": true\n" "]\n" #. type: Title == #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:215 #, no-wrap msgid "Compilation database" msgstr "База данных компиляции" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:221 msgid "" "A Compilation database contains an array of compile command objects. Each " "object specifies a way of compiling a source file. The compilation database " "file is usually [.filename]#compile_commands.json#. The database is used by " "language server implementations for indexing purpose." msgstr "" "База данных компиляции содержит массив объектов команд компиляции. Каждый " "объект определяет способ компиляции исходного файла. Файл базы данных " "компиляции обычно называется [.filename]#compile_commands.json#. База данных " "используется реализациями языковых серверов для целей индексирования." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:223 msgid "" "Please refer to link:https://clang.llvm.org/docs/JSONCompilationDatabase." "html#format[] for details on the format of the compilation database file." msgstr "" "Пожалуйста, обратитесь к link:https://clang.llvm.org/docs/" "JSONCompilationDatabase.html#format[] для получения подробностей о формате " "файла базы данных компиляции." #. type: Title === #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:225 #, no-wrap msgid "Generators" msgstr "Генераторы" #. type: Title ==== #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:228 #, no-wrap msgid "Using scan-build-py" msgstr "Использование scan-build-py" #. type: Title ===== #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:230 #, no-wrap msgid "Installation" msgstr "Установка" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:234 msgid "" "`intercept-build` tool from scan-build-py is used to generate compilation " "database." msgstr "" "Инструмент `intercept-build` из scan-build-py используется для создания базы " "данных компиляции." #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:237 msgid "" "Install package:devel/python[] to get python interpreter first. To get " "`intercept-build` from LLVM:" msgstr "" "Установите пакет package:devel/python[], чтобы получить интерпретатор " "python. Для получения `intercept-build` из LLVM:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:241 #, no-wrap msgid "# git clone https://github.com/llvm/llvm-project /path/to/llvm-project\n" msgstr "" "# git clone https://github.com/llvm/llvm-project /path/to/llvm-project\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:244 msgid "" "where [.filename]#/path/to/llvm-project/# is your desired path for the " "repository. Make an alias in the shell configuration file for convenience:" msgstr "" "где [.filename]#/path/to/llvm-project/# — это желаемый путь для репозитория. " "Для удобства создайте алиас в файле конфигурации оболочки:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:248 #, no-wrap msgid "alias intercept-build='/path/to/llvm-project/clang/tools/scan-build-py/bin/intercept-build'\n" msgstr "" "alias intercept-build='/path/to/llvm-project/clang/tools/scan-build-py/bin/" "intercept-build'\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:254 msgid "" "link:https://github.com/rizsotto/scan-build[rizsotto/scan-build] can be used " "instead of LLVM's scan-build-py. The LLVM's scan-build-py was rizsotto/scan-" "build merged into the LLVM tree. This implementation can be installed by " "`pip install --user scan-build`. The `intercept-build` script is in [." "filename]#~/.local/bin# by default." msgstr "" "link:https://github.com/rizsotto/scan-build[rizsotto/scan-build] можно " "использовать вместо LLVM's scan-build-py. LLVM's scan-build-py был объединён " "в дерево LLVM из rizsotto/scan-build. Эту реализацию можно установить с " "помощью `pip install --user scan-build`. Скрипт `intercept-build` по " "умолчанию находится в [.filename]#~/.local/bin#." #. type: Title ===== #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:255 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:271 #, no-wrap msgid "Usage" msgstr "Использование" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:258 msgid "" "In the top-level directory of the FreeBSD src tree, generate the compilation " "database with `intercept-build`:" msgstr "" "В корневом каталоге исходного кода FreeBSD создайте базу данных компиляции с " "помощью `intercept-build`:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:262 #, no-wrap msgid "# intercept-build --append make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" msgstr "" "# intercept-build --append make buildworld buildkernel -j`sysctl -n hw.ncpu`" "\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:267 msgid "" "The `--append` flag tells the `intercept-build` to read an existing " "compilation database (if a compilation database exists) and append the " "results to the database. Entries with duplicated command keys are merged. " "The generated compilation database by default is saved in the current " "working directory as [.filename]#compile_commands.json#." msgstr "" "Флаг `--append` указывает `intercept-build` прочитать существующую базу " "данных компиляции (если она существует) и добавить результаты в базу данных. " "Записи с дублирующимися ключами команд объединяются. Сгенерированная база " "данных компиляции по умолчанию сохраняется в текущем рабочем каталоге как [." "filename]#compile_commands.json#." #. type: Title ==== #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:269 #, no-wrap msgid "Using devel/bear" msgstr "Использование devel/bear" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:274 msgid "" "In the top-level directory of the FreeBSD src tree, to generate compilation " "database with `bear`:" msgstr "" "В корневом каталоге исходного кода FreeBSD, чтобы создать базу данных " "компиляции с помощью `bear`:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:278 #, no-wrap msgid "# bear --append -- make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" msgstr "# bear --append -- make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:283 msgid "" "The `--append` flag tells `bear` to read an existing compilation database if " "it is present, and append the results to the database. Entries with " "duplicated command keys are merged. The generated compilation database by " "default is saved in the current working directory as [." "filename]#compile_commands.json#." msgstr "" "Флаг `--append` указывает `bear` прочитать существующую базу данных " "компиляции, если она есть, и добавить результаты в неё. Записи с " "дублирующимися ключами команд объединяются. Сгенерированная база данных " "компиляции по умолчанию сохраняется в текущем рабочем каталоге как [." "filename]#compile_commands.json#." #. type: Title == #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:285 #, no-wrap msgid "Final" msgstr "Последние шаги" #. type: Plain text #: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:289 msgid "" "Once the compilation database is generated, open any source files in the " "FreeBSD src tree and LSP server daemon will be launched as well in " "background. Opening source files in the src tree for the first time takes " "significantly longer time before the LSP server is able to give a complete " "result, due to initial background indexing by the LSP server compiling all " "the listed entries in the compilation database. The language server daemon " "however does not index the source files not appearing in the compilation " "database, thus no complete results are shown on source files not being " "compiled during the `make`." msgstr "" "После создания базы данных компиляции откройте любой исходный файл в дереве " "исходного кода FreeBSD, и серверный демон LSP также запустится в фоновом " "режиме. Первое открытие исходных файлов в дереве src занимает значительно " "больше времени, прежде чем сервер LSP сможет предоставить полный результат, " "из-за первоначального фонового индексирования сервером LSP, который " "компилирует все перечисленные записи в базе данных компиляции. Однако демон " "языкового сервера не индексирует исходные файлы, отсутствующие в базе данных " "компиляции, поэтому полные результаты не отображаются для исходных файлов, " "которые не компилировались во время выполнения `make`." diff --git a/documentation/content/ru/articles/freebsd-status-report-process/_index.adoc b/documentation/content/ru/articles/freebsd-status-report-process/_index.adoc index 4f6c8a2f55..dd489627da 100644 --- a/documentation/content/ru/articles/freebsd-status-report-process/_index.adoc +++ b/documentation/content/ru/articles/freebsd-status-report-process/_index.adoc @@ -1,233 +1,233 @@ --- authors: - author: 'The FreeBSD Documentation Project' copyright: '2023-2025 The FreeBSD Documentation Project' description: 'Инструкции для авторов и редакторов отчётов о состоянии' title: 'Процесс составления отчёта о состоянии FreeBSD' trademarks: ["freebsd", "git", "github", "general"] --- = Процесс составления отчёта о состоянии FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: ''' toc::[] Отчёты о состоянии FreeBSD публикуются ежеквартально и предоставляют широкой общественности обзор происходящего в проекте. Они часто дополняются специальными отчётами с встреч разработчиков. Поскольку это одна из самых заметных форм коммуникации, они очень важны. На протяжении этого документа, а также в других материалах, связанных с отчётами о состоянии FreeBSD, выражение _отчёт о состоянии_ используется как для обозначения документа, публикуемого ежеквартально, так и для отдельных записей, содержащихся в нём. == Инструкции для авторов Этот раздел содержит рекомендации по написанию записей в отчётах о состоянии. Также приведены инструкции по отправке ваших записей. _Не беспокойтесь, если вы не являетесь носителем английского языка. Команда mailto:status@FreeBSD.org[status team] проверит ваши записи на орфографию и грамматику и исправит их за вас._ === Представьте свою работу _Не предполагайте, что человек, читающий отчёт, знает о вашем проекте._ Отчёты о состоянии имеют широкое распространение. Они часто становятся одними из главных новостей на веб-сайте FreeBSD и являются одним из первых материалов, которые прочитают люди, желающие узнать немного о том, что такое FreeBSD. Рассмотрим следующий пример: .... abc(4) support was added, including frobnicator compatibility. .... Читающий это, если он знаком с руководствами UNIX, поймет, что `abc(4)` — это какое-то устройство. Но почему это должно волновать читателя? Что это за устройство? Сравните с этой версией: .... A new driver, abc(4), was added to the tree, bringing support for Yoyodyne's range of Frobnicator network interfaces. .... Теперь читатель знает, что `abc` — это драйвер сетевого интерфейса. Даже если они не используют продукты Yoyodyne, вы сообщили, что поддержка сетевых устройств в FreeBSD улучшается. === Покажите важность вашей работы _Отчёты о состоянии нужны не только для того, чтобы сообщать всем о выполненных задачах, но и для объяснения причин их выполнения._ -Продолжим предыдущий пример. Почему интересно, что мы теперь поддерживаем карты Yoyodyne Frobnicator? Они широко распространены? Они используются в каком-то конкретном популярном устройстве? Они применяются в определённой нише, где FreeBSD имеет (или хотела бы иметь) присутствие? Это самые быстрые сетевые карты на планете? В отчётах о состоянии часто встречаются такие фразы: +Продолжим предыдущий пример. Почему интересно, что мы теперь поддерживаем карты Yoyodyne Frobnicator? Они широко распространены? Они используются в каком-то конкретном популярном устройстве? Они применяются в определённой нише, где присутствует (или хотела бы присутствовать) FreeBSD? Это самые быстрые сетевые карты на планете? В отчётах о состоянии работ часто встречаются такие фразы: .... We imported Cyberdyne Systems T800 into the tree. .... И затем они останавливаются. Возможно, читатель — ярый поклонник Cyberdyne и знает, какие захватывающие новые функции предлагает T800. Это маловероятно. Гораздо вероятнее, что они смутно слышали о том, что вы импортировали (особенно в дерево портов: помните, что там есть ещё более 35 000 других элементов...). Перечислите некоторые новые функции или исправления ошибок. Объясните, почему хорошо, что у нас появилась новая версия. === Расскажите нам что-то новое _Не используйте повторно одни и те же пункты отчёта о состоянии._ Имейте в виду, что отчёты о состоянии — это не просто отчёты о состоянии проекта, это отчёты об изменении состояния проекта. Если проект продолжается, уделите пару предложений его представлению, но затем сосредоточьтесь в отчёте на новой работе. Какой прогресс был достигнут с момента последнего отчёта? Что осталось сделать? Когда он, вероятно, будет завершен (или, если "завершение" не совсем применимо, когда он будет готов для более широкого использования, тестирования, развертывания в производстве и так далее)? === Спонсорство _Не забывайте о ваших спонсорах._ Если вы или ваш проект получили спонсорскую поддержку, стипендию от кого-либо или вы уже работали подрядчиком или сотрудником компании, пожалуйста, укажите это. Спонсоры всегда ценят, когда их благодарят за финансирование, но также им выгодно показать, что они активно поддерживают Проект таким образом. И последнее, но не менее важное: это помогает FreeBSD узнать больше о своих важных потребителях. === Открытые вопросы _Если требуется помощь, укажите это явно!_ -Нужна ли помощь с чем-то? Есть ли задачи, которые могут выполнить другие люди? Существует два способа использования раздела открытых пунктов в отчёте о состоянии: для запроса помощи или для быстрого обзора объёма оставшейся работы. Если над проектом уже работает достаточное количество людей или он находится в таком состоянии, что добавление новых участников не ускорит его, то лучше использовать второй вариант. Укажите крупные рабочие задачи, которые находятся в процессе выполнения, и, возможно, обозначьте, кто над каждой из них работает. +Нужна ли помощь с чем-то? Есть ли задачи, которые могут выполнить другие люди? Имеются два способа использования раздела открытых вопросов в отчёте о состоянии работ: для запроса помощи или для быстрого обзора объёма оставшейся работы. Если над проектом уже работает достаточное количество людей или он находится в таком состоянии, что добавление новых участников не ускорит его, то лучше использовать второй вариант. Укажите крупные рабочие задачи, которые находятся в процессе выполнения, и, возможно, обозначьте, кто над каждой из них работает. Перечислите задачи с достаточной детализацией, чтобы люди могли понять, смогут ли они их выполнить, и предложите им связаться с вами. === Представьте ваш отчёт Доступны следующие методы для отправки ваших отчётов: * отправить ссылку link:https://reviews.freebsd.org/[Phabricator review] и добавить группу _status_ в список рецензентов. Вы должны разместить свои отчёты в соответствующем подкаталоге `doc/website/content/en/status/` (создайте его, если он отсутствует); * отправить запрос на включение изменений (pull request) в репозиторий документации через link:https://github.com/freebsd/freebsd-doc[его зеркало на GitHub]. Вы должны размещать свои отчёты в соответствующем подкаталоге `doc/website/content/en/status` (создайте его, если он отсутствует); * отправить письмо на адрес status-submissions@FreeBSD.org, приложив ваш отчёт. Доступен link:https://www.FreeBSD.org/status/report-sample.adoc[шаблон отчёта в формате AsciiDoc]. == Инструкции для редакторов Этот раздел описывает, как работает процесс проверки и публикации. [.informaltable] [cols="1,1", frame="none"] |=== |Главная веб-страница отчётов о статусе |link:https://www.FreeBSD.org/status/[https://www.FreeBSD.org/status/] |Отчёты о статусе архивированного репозитория GitHub (использовались для отчётов с 2017Q4 по 2022Q4): |link:https://www.github.com/freebsd/freebsd-quarterly[https://github.com/freebsd/freebsd-quarterly] |Основной адрес электронной почты команды статуса |link:mailto:status@FreeBSD.org[status@FreeBSD.org] |Адрес электронной почты для отправки отчётов |link:mailto:status-submissions@FreeBSD.org[status-submissions@FreeBSD.org] |Список рассылки для получения запросов на отчёты о состоянии |link:https://lists.freebsd.org/subscription/freebsd-status-calls[freebsd-status-calls@FreeBSD.org] |Страница команды статуса в Phabricator |link:https://reviews.freebsd.org/project/profile/88/[https://reviews.freebsd.org/project/88/] |=== === Сроки -Отчёты всегда принимаются командой статуса, но основной процесс сбора происходит в последний месяц каждого квартала, то есть в марте, июне, сентябре и декабре. Месяцы январь, апрель, июль и октябрь посвящены сбору отчётов, представленных в предыдущем квартале. Отчёты за завершившийся квартал еще принимаются в первые 14 дней месяца, но не позже. Публикация статусных отчётов происходит в те же месяцы, как только отчёты будут готовы. +Отчёты всегда принимаются командой статуса, но основной процесс сбора происходит в последний месяц каждого квартала, то есть в марте, июне, сентябре и декабре. Месяцы январь, апрель, июль и октябрь посвящены сбору отчётов, представленных в предыдущем квартале. Отчёты за завершившийся квартал ещё принимаются в первые 14 дней месяца, но не позже. Публикация статусных отчётов происходит в те же месяцы, как только отчёты будут готовы. -Запросы отчётов о состоянии бдут отправляться с напоминанием о последнем дне для отправки отчёта. +Запросы отчётов о состоянии работ будут отправляться с напоминанием о последнем дне для отправки отчёта. -Проверка представленных отчётов людьми, не входящими в команду статуса, должна быть в основном завершена к середине января/апреля/июля/октября (срок заморозки отчётов для сторонней проверки). То есть, за исключением опечаток или других незначительных правок, команда статуса должна быть готова собирать представленные материалы в полный отчет начиная с 15-го числа. +Проверка представленных отчётов людьми, не входящими в команду статуса, должна быть в основном завершена к середине января/апреля/июля/октября (срок заморозки отчётов для сторонней проверки). То есть, за исключением опечаток или других незначительных правок, команда статуса должна быть готова собирать представленные материалы в полный отчёт начиная с 15-го числа. [cols="1,2,2,2,2"] |=== ||Первый квартал|Второй квартал|Третий квартал|Четвертый квартал |Первый запрос отчётов |1 марта |1 июня |1 сентября |1 декабря |Напоминание за 1 месяц |15 марта |15 июня |15 сентября |15 декабря |Напоминание за 2 недели |31 марта |30 июня |30 сентября |31 декабря |Окончательный срок отправки и заморозка проверки другими участниками |14 апреля |14 июля |14 октября |14 января |=== === Запрос отчётов Запросы отчётов о состоянии отправляются следующим получателям: * link:https://lists.freebsd.org/subscription/freebsd-status-calls[почтовая рассылка freebsd-status-calls@FreeBSD.org]; * всем авторам последних отчётов о состоянии (у них могут быть обновления или дополнительные улучшения); * и, в зависимости от времени года, ** Различные организаторы конференций: *** link:mailto:secretary@asiabsdcon.org[AsiaBSDCon] в марте (первый квартал); *** link:mailto:info@bsdcan.org[BSDCan] в мае (второй квартал); ** Различные участники конференции: *** ЕвроBSDcon в сентябре - октябре (третий-четвертый квартал); организация ЕвроBSDcon не заинтересована в написании отчётов для FreeBSD — по крайней мере, не была заинтересована в октябре 2019 года: причина в том, что конференция не ориентирована конкретно на FreeBSD. Следовательно, отчёты об этом мероприятии следует запрашивать у участников сообщества FreeBSD, которые присутствовали на нём. ** Google Summer of Code: link:mailto:soc-students@FreeBSD.org[студенты] и их link:mailto:soc-mentors@FreeBSD.org[наставники]. Самый простой способ отправки запросов на отчёты о состоянии — использовать скрипт link:https://cgit.freebsd.org/doc/tree/tools/sendcalls/sendcalls[[.filename]#sendcalls# на Perl] из каталога [.filename]#tools/sendcalls# git репозитория документации. Скрипт автоматически отправляет запросы всем указанным получателям. Его также можно использовать через задание cron, например: .... 0 0 1,15,24 3,6,9,12 * cd ~/doc/tools/sendcalls && git pull && ./sendcalls -s 'Lorenzo Salvadore' .... [IMPORTANT] ==== -Если вы отвечаете за рассылку запросов отчётов о состоянии и используете задание cron, пожалуйста, запускайте его на freefall и подписывайте своим именем, чтобы в случае возникновения проблем можно было определить, кто настроил задание cron. Также, в качестве дополнительной меры предосторожности, обновите приведённый выше пример, указав свое имя. +Если вы отвечаете за рассылку запросов отчётов о состоянии работ и используете задание cron, пожалуйста, запускайте его на freefall и подписывайте своим именем, чтобы в случае возникновения проблем можно было определить, кто настроил это задание cron. Также, в качестве дополнительной меры предосторожности, обновите приведённый выше пример, указав своё имя. ==== Также может быть полезно объявить сбор отчётов на форумах, как это link:https://forums.freebsd.org/threads/call-for-freebsd-2014q4-october-december-status-reports.49812/[делалось ранее]. === Построение отчёта Отправленные отчёты проверяются и объединяются в соответствующем подкаталоге [.filename]#doc/website/content/en/status/# по мере поступления. Пока отчёты обновляются, люди вне команды статуса также могут просматривать отдельные записи и предлагать исправления. Обычно последним шагом в процессе проверки содержания является написание введения в файле с названием [.filename]#intro.adoc#: хорошее введение можно написать только после того, как собраны все отчёты. По возможности, полезно попросить разных людей написать введение, чтобы добавить разнообразия: разные люди привнесут разные точки зрения и помогут сохранить его свежим. После того как все отчёты и введение готовы, необходимо создать файл [.filename]#_index.adoc#: это файл, в котором отчёты распределяются по различным категориям и сортируются. === Публикация отчёта Когда все файлы отчёта о состоянии готовы, пришло время опубликовать его. Сначала редактируется файл [.filename]#doc/website/content/en/status/_index.adoc#: обновляется следующая дата отчёта и добавляется ссылка на новый отчёт. Затем изменения отправляются в репозиторий, и команда статуса проверяет, что всё работает как ожидалось. Затем запись новости для главной страницы сайта добавляется в [.filename]#doc/website/data/ru/news/news.toml#. Вот пример записи новостей: .... [[news]] date = "2021-01-16" title = "October-December 2020 Status Report" description = "The October to December 2020 Status Report is now available with 42 entries." .... После создания HTML-версии отчёта и её публикации в сети используется man:w3m[1] для преобразования веб-сайта в простой текст, например: .... % w3m -cols 80 -dump https://www.FreeBSD.org/status/report-2021-01-2021-03/ > /tmp/report-2021-01-2021-03.txt .... man:w3m[1] имеет полную поддержку Юникода. Опция `-dump` просто выводит текстовое представление HTML-кода, из которого затем можно удалить несколько элементов, а `-cols` гарантирует, что всё будет перенесено на 80 колонок. Ссылка на сформированный отчёт добавляется между введением и первой записью. Переключив способ доставки (отчёт должен быть в тексте письма, а не в приложении) и убедившись, что его кодировка в UTF-8, вы получаете окончательно готовый к отправке отчёт. Отправляются два письма, оба с темой в формате `FreeBSD Status Report - Quarter `: * одно для link:https://lists.freebsd.org/subscription/freebsd-announce[freebsd-announce@FreeBSD.org]; [IMPORTANT] ==== -Это письмо должно быть одобрено, поэтому если вы отвечаете за отправку этого письма, убедитесь, что кто-то сделает это одобрение (напишите link:mailto:postmaster@FreeBSD.org[постмастеру], если одобрение займёт много времени). +Это письмо должно быть одобрено, поэтому, если вы отвечаете за отправку этого письма, убедитесь, что кто-то сделает это одобрение (напишите link:mailto:postmaster@FreeBSD.org[постмастеру], если одобрение займёт много времени). ==== * одно на link:https://lists.freebsd.org/subscription/freebsd-hackers[freebsd-hackers@FreeBSD.org], которому добавьте link:https://lists.freebsd.org/subscription/freebsd-current[freebsd-current@FreeBSD.org] и link:https://lists.freebsd.org/subscription/freebsd-stable[freebsd-stable@FreeBSD.org] в копию (CC) и `developers@FreeBSD.org` в скрытую копию (BCC). diff --git a/documentation/content/ru/articles/freebsd-status-report-process/_index.po b/documentation/content/ru/articles/freebsd-status-report-process/_index.po index b722ddd95b..f2165d1827 100644 --- a/documentation/content/ru/articles/freebsd-status-report-process/_index.po +++ b/documentation/content/ru/articles/freebsd-status-report-process/_index.po @@ -1,1006 +1,1007 @@ # 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-02-22 15:58+0000\n" -"PO-Revision-Date: 2026-02-25 04:45+0000\n" +"PO-Revision-Date: 2026-03-02 03:11+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/articles/freebsd-status-report-process/_index.adoc:1 #, no-wrap msgid "Instructions for both writers and editors of status reports" msgstr "Инструкции для авторов и редакторов отчётов о состоянии" #. type: Title = #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:1 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:10 #, no-wrap msgid "FreeBSD Status Report Process" msgstr "Процесс составления отчёта о состоянии FreeBSD" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:21 msgid "'''" msgstr "'''" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:26 msgid "" "FreeBSD status reports are published quarterly and provide the general " "public with a view of what is going on in the Project, and they are often " "augmented by special reports from Developer Summits. As they are one of our " "most visible forms of communication, they are very important." msgstr "" "Отчёты о состоянии FreeBSD публикуются ежеквартально и предоставляют широкой " "общественности обзор происходящего в проекте. Они часто дополняются " "специальными отчётами с встреч разработчиков. Поскольку это одна из самых " "заметных форм коммуникации, они очень важны." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:28 msgid "" "Throughout this document and in other places related to FreeBSD status " "reports as well, the expression _status report_ is used both to indicate the " "document published on a quarterly basis and the single entries that are in " "it." msgstr "" "На протяжении этого документа, а также в других материалах, связанных с " "отчётами о состоянии FreeBSD, выражение _отчёт о состоянии_ используется как " "для обозначения документа, публикуемого ежеквартально, так и для отдельных " "записей, содержащихся в нём." #. type: Title == #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:29 #, no-wrap msgid "Instructions for writers" msgstr "Инструкции для авторов" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:33 msgid "" "This section provides some advice on writing status report entries. " "Instructions on how to submit your entries are also given." msgstr "" "Этот раздел содержит рекомендации по написанию записей в отчётах о " "состоянии. Также приведены инструкции по отправке ваших записей." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:36 msgid "" "_Do not worry if you are not a native English speaker. The mailto:" "status@FreeBSD.org[status team] will check your entries for spelling and " "grammar, and fix it for you._" msgstr "" "_Не беспокойтесь, если вы не являетесь носителем английского языка. Команда " "mailto:status@FreeBSD.org[status team] проверит ваши записи на орфографию и " "грамматику и исправит их за вас._" #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:37 #, no-wrap msgid "Introduce Your Work" msgstr "Представьте свою работу" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:40 msgid "" "_Do not assume that the person reading the report knows about your project._" msgstr "" "_Не предполагайте, что человек, читающий отчёт, знает о вашем проекте._" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:44 msgid "" "The status reports have a wide distribution. They are often one of the top " "news items on the FreeBSD web site and are one of the first things that " "people will read if they want to know a bit about what FreeBSD is. Consider " "this example:" msgstr "" "Отчёты о состоянии имеют широкое распространение. Они часто становятся " "одними из главных новостей на веб-сайте FreeBSD и являются одним из первых " "материалов, которые прочитают люди, желающие узнать немного о том, что такое " "FreeBSD. Рассмотрим следующий пример:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:47 #, no-wrap msgid "abc(4) support was added, including frobnicator compatibility.\n" msgstr "abc(4) support was added, including frobnicator compatibility.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:53 msgid "" "Someone reading this, if they are familiar with UNIX man pages, will know " "that `abc(4)` is some kind of device. But why should the reader care? What " "kind of device is it? Compare with this version:" msgstr "" "Читающий это, если он знаком с руководствами UNIX, поймет, что `abc(4)` — " "это какое-то устройство. Но почему это должно волновать читателя? Что это за " "устройство? Сравните с этой версией:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:57 #, no-wrap msgid "" "A new driver, abc(4), was added to the tree, bringing support for\n" "Yoyodyne's range of Frobnicator network interfaces.\n" msgstr "" "A new driver, abc(4), was added to the tree, bringing support for\n" "Yoyodyne's range of Frobnicator network interfaces.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:61 msgid "" "Now the reader knows that `abc` is a network interface driver. Even if they " "do not use any Yoyodyne products, you have communicated that FreeBSD's " "support for network devices is improving." msgstr "" "Теперь читатель знает, что `abc` — это драйвер сетевого интерфейса. Даже " "если они не используют продукты Yoyodyne, вы сообщили, что поддержка сетевых " "устройств в FreeBSD улучшается." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:62 #, no-wrap msgid "Show the Importance of Your Work" msgstr "Покажите важность вашей работы" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:65 msgid "" "_Status reports are not just about telling everyone that things were done, " "they also need to explain why they were done._" msgstr "" "_Отчёты о состоянии нужны не только для того, чтобы сообщать всем о " "выполненных задачах, но и для объяснения причин их выполнения._" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:73 msgid "" "Carry on with the previous example. Why is it interesting that we now " "support Yoyodyne Frobnicator cards? Are they widespread? Are they used in a " "specific popular device? Are they used in a particular niche where FreeBSD " "has (or would like to have) a presence? Are they the fastest network cards " "on the planet? Status reports often say things like this:" msgstr "" "Продолжим предыдущий пример. Почему интересно, что мы теперь поддерживаем " "карты Yoyodyne Frobnicator? Они широко распространены? Они используются в " "каком-то конкретном популярном устройстве? Они применяются в определённой " -"нише, где FreeBSD имеет (или хотела бы иметь) присутствие? Это самые быстрые " -"сетевые карты на планете? В отчётах о состоянии часто встречаются такие " -"фразы:" +"нише, где присутствует (или хотела бы присутствовать) FreeBSD? Это самые " +"быстрые сетевые карты на планете? В отчётах о состоянии работ часто " +"встречаются такие фразы:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:76 #, no-wrap msgid "We imported Cyberdyne Systems T800 into the tree.\n" msgstr "We imported Cyberdyne Systems T800 into the tree.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:84 msgid "" "And then they stop. Maybe the reader is an avid Cyberdyne fan and knows " "what exciting new features the T800 brings. This is unlikely. It is far " "more likely that they have vaguely heard of whatever you have imported " "(especially into the ports tree: remember that there are over 35,000 other " "things there too...). List some of the new features, or bug fixes. Tell " "them why it is a good thing that we have the new version." msgstr "" "И затем они останавливаются. Возможно, читатель — ярый поклонник Cyberdyne и " "знает, какие захватывающие новые функции предлагает T800. Это маловероятно. " "Гораздо вероятнее, что они смутно слышали о том, что вы импортировали " "(особенно в дерево портов: помните, что там есть ещё более 35 000 других " "элементов...). Перечислите некоторые новые функции или исправления ошибок. " "Объясните, почему хорошо, что у нас появилась новая версия." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:85 #, no-wrap msgid "Tell Us Something New" msgstr "Расскажите нам что-то новое" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:88 msgid "_Do not recycle the same status report items._" msgstr "_Не используйте повторно одни и те же пункты отчёта о состоянии._" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:94 msgid "" "Bear in mind that status reports are not just reports on the status of the " "project, they are reports on the change of status of the project. If there " "is an ongoing project, spend a couple of sentences introducing it, but then " "spend the rest of the report talking about the new work. What progress has " "been made since the last report? What is left to do? When is it likely to be " "finished (or, if \"finished\" does not really apply, when is it likely to be " "ready for wider use, for testing, for deployment in production, and so on)?" msgstr "" "Имейте в виду, что отчёты о состоянии — это не просто отчёты о состоянии " "проекта, это отчёты об изменении состояния проекта. Если проект " "продолжается, уделите пару предложений его представлению, но затем " "сосредоточьтесь в отчёте на новой работе. Какой прогресс был достигнут с " "момента последнего отчёта? Что осталось сделать? Когда он, вероятно, будет " "завершен (или, если \"завершение\" не совсем применимо, когда он будет готов " "для более широкого использования, тестирования, развертывания в производстве " "и так далее)?" #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:95 #, no-wrap msgid "Sponsorship" msgstr "Спонсорство" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:98 msgid "_Do not forget about your sponsors._" msgstr "_Не забывайте о ваших спонсорах._" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:102 msgid "" "If you or your project has received sponsorship, a scholarship from somebody " "or you have been already working as a contractor or an employee for a " "company, please include it. Sponsors always certainly appreciate if you " "thank them for their funding, but it is also beneficial for them to show " "that they are actively supporting the Project this way. Last, but not " "least, this helps FreeBSD to learn more about its important consumers." msgstr "" "Если вы или ваш проект получили спонсорскую поддержку, стипендию от кого-" "либо или вы уже работали подрядчиком или сотрудником компании, пожалуйста, " "укажите это. Спонсоры всегда ценят, когда их благодарят за финансирование, " "но также им выгодно показать, что они активно поддерживают Проект таким " "образом. И последнее, но не менее важное: это помогает FreeBSD узнать больше " "о своих важных потребителях." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:103 #, no-wrap msgid "Open Items" msgstr "Открытые вопросы" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:106 msgid "_If help is needed, make this explicit!_" msgstr "_Если требуется помощь, укажите это явно!_" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:112 msgid "" "Is there any help needed with something? Are there tasks other people can " "do? There are two ways in which you can use the open items part of the " "status report: to solicit help, or to give a quick overview of the amount of " "work left. If there are already enough people working on the project, or it " "is in a state where adding more people would not speed it up, then the " "latter is better. Give some big work items that are in progress, and maybe " "indicate who is focussing on each one." msgstr "" "Нужна ли помощь с чем-то? Есть ли задачи, которые могут выполнить другие " -"люди? Существует два способа использования раздела открытых пунктов в отчёте " -"о состоянии: для запроса помощи или для быстрого обзора объёма оставшейся " -"работы. Если над проектом уже работает достаточное количество людей или он " -"находится в таком состоянии, что добавление новых участников не ускорит его, " -"то лучше использовать второй вариант. Укажите крупные рабочие задачи, " -"которые находятся в процессе выполнения, и, возможно, обозначьте, кто над " -"каждой из них работает." +"люди? Имеются два способа использования раздела открытых вопросов в отчёте о " +"состоянии работ: для запроса помощи или для быстрого обзора объёма " +"оставшейся работы. Если над проектом уже работает достаточное количество " +"людей или он находится в таком состоянии, что добавление новых участников не " +"ускорит его, то лучше использовать второй вариант. Укажите крупные рабочие " +"задачи, которые находятся в процессе выполнения, и, возможно, обозначьте, " +"кто над каждой из них работает." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:114 msgid "" "List tasks, with enough detail that people know if they are likely to be " "able to do them, and invite people to get in contact." msgstr "" "Перечислите задачи с достаточной детализацией, чтобы люди могли понять, " "смогут ли они их выполнить, и предложите им связаться с вами." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:115 #, no-wrap msgid "Submit your report" msgstr "Представьте ваш отчёт" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:118 msgid "The following methods are available to submit your reports:" msgstr "Доступны следующие методы для отправки ваших отчётов:" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:121 msgid "" "submit a link:https://reviews.freebsd.org/[Phabricator review] and add the " "group _status_ to the reviewers list. You should put your reports in the " "appropriate subdirectory of `doc/website/content/en/status/` (create it if " "it is missing);" msgstr "" "отправить ссылку link:https://reviews.freebsd.org/[Phabricator review] и " "добавить группу _status_ в список рецензентов. Вы должны разместить свои " "отчёты в соответствующем подкаталоге `doc/website/content/en/status/` " "(создайте его, если он отсутствует);" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:124 msgid "" "submit a pull request to the doc repository through link:https://github.com/" "freebsd/freebsd-doc[its GitHub mirror] . You should put your reports in the " "appropriate subdirectory of `doc/website/content/en/status` (create it if it " "is missing);" msgstr "" "отправить запрос на включение изменений (pull request) в репозиторий " "документации через link:https://github.com/freebsd/freebsd-doc[его зеркало " "на GitHub]. Вы должны размещать свои отчёты в соответствующем подкаталоге " "`doc/website/content/en/status` (создайте его, если он отсутствует);" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:126 msgid "send an email to status-submissions@FreeBSD.org including your report." msgstr "" "отправить письмо на адрес status-submissions@FreeBSD.org, приложив ваш отчёт." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:128 msgid "" "An link:https://www.FreeBSD.org/status/report-sample.adoc[AsciiDoc sample " "report template] is available." msgstr "" "Доступен link:https://www.FreeBSD.org/status/report-sample.adoc[шаблон " "отчёта в формате AsciiDoc]." #. type: Title == #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:129 #, no-wrap msgid "Instructions for editors" msgstr "Инструкции для редакторов" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:132 msgid "This section describes how the reviewing and publication process works." msgstr "Этот раздел описывает, как работает процесс проверки и публикации." #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:138 #, no-wrap msgid "Status reports main webpage" msgstr "Главная веб-страница отчётов о статусе" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:140 #, no-wrap msgid "link:https://www.FreeBSD.org/status/[https://www.FreeBSD.org/status/]" msgstr "link:https://www.FreeBSD.org/status/[https://www.FreeBSD.org/status/]" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:141 #, no-wrap msgid "Status reports archived GitHub repository (was used for reports from 2017Q4 to 2022Q4):" msgstr "Отчёты о статусе архивированного репозитория GitHub (использовались для отчётов с 2017Q4 по 2022Q4):" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:143 #, no-wrap msgid "link:https://www.github.com/freebsd/freebsd-quarterly[https://github.com/freebsd/freebsd-quarterly]" msgstr "link:https://www.github.com/freebsd/freebsd-quarterly[https://github.com/freebsd/freebsd-quarterly]" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:144 #, no-wrap msgid "Main status team email address" msgstr "Основной адрес электронной почты команды статуса" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:146 #, no-wrap msgid "link:mailto:status@FreeBSD.org[status@FreeBSD.org]" msgstr "link:mailto:status@FreeBSD.org[status@FreeBSD.org]" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:147 #, no-wrap msgid "Email address for reports submission" msgstr "Адрес электронной почты для отправки отчётов" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:149 #, no-wrap msgid "link:mailto:status-submissions@FreeBSD.org[status-submissions@FreeBSD.org]" msgstr "link:mailto:status-submissions@FreeBSD.org[status-submissions@FreeBSD.org]" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:150 #, no-wrap msgid "Mailing list for receiving calls for status reports" msgstr "Список рассылки для получения запросов на отчёты о состоянии" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:152 #, no-wrap msgid "link:https://lists.freebsd.org/subscription/freebsd-status-calls[freebsd-status-calls@FreeBSD.org]" msgstr "link:https://lists.freebsd.org/subscription/freebsd-status-calls[freebsd-status-calls@FreeBSD.org]" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:153 #, no-wrap msgid "Phabricator status team main page" msgstr "Страница команды статуса в Phabricator" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:154 #, no-wrap msgid "link:https://reviews.freebsd.org/project/profile/88/[https://reviews.freebsd.org/project/88/]" msgstr "link:https://reviews.freebsd.org/project/profile/88/[https://reviews.freebsd.org/project/88/]" #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:156 #, no-wrap msgid "Timeline" msgstr "Сроки" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:162 msgid "" "Reports are always accepted by the status team, but the main collection " "process happens the last month of each quarter, hence in March, June, " "September and December. The months of January, April, July and October are " "dedicated to putting together the reports submitted during the precedent " "quarter. Reports for the finished quarter are still accepted within the " "first 14 days of the month, but not later. Status reports publication is " "done during the same months as soon as the report are ready." msgstr "" "Отчёты всегда принимаются командой статуса, но основной процесс сбора " "происходит в последний месяц каждого квартала, то есть в марте, июне, " "сентябре и декабре. Месяцы январь, апрель, июль и октябрь посвящены сбору " "отчётов, представленных в предыдущем квартале. Отчёты за завершившийся " -"квартал еще принимаются в первые 14 дней месяца, но не позже. Публикация " +"квартал ещё принимаются в первые 14 дней месяца, но не позже. Публикация " "статусных отчётов происходит в те же месяцы, как только отчёты будут готовы." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:164 msgid "Explicit calls for status reports will be sent with deadline reminders." msgstr "" -"Запросы отчётов о состоянии бдут отправляться с напоминанием о последнем дне " -"для отправки отчёта." +"Запросы отчётов о состоянии работ будут отправляться с напоминанием о " +"последнем дне для отправки отчёта." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:167 msgid "" "Reviewing of submitted reports by people not part of the status team should " "be essentially complete by mid-January/April/July/October (third-party " "review slush). That is, barring typos or other light copyediting, the " "status team should be able to assemble the submissions starting on the 15th." msgstr "" "Проверка представленных отчётов людьми, не входящими в команду статуса, " "должна быть в основном завершена к середине января/апреля/июля/октября (срок " "заморозки отчётов для сторонней проверки). То есть, за исключением опечаток " "или других незначительных правок, команда статуса должна быть готова " -"собирать представленные материалы в полный отчет начиная с 15-го числа." +"собирать представленные материалы в полный отчёт начиная с 15-го числа." #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:170 #, no-wrap msgid "First quarter" msgstr "Первый квартал" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:170 #, no-wrap msgid "Second quarter" msgstr "Второй квартал" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:170 #, no-wrap msgid "Third quarter" msgstr "Третий квартал" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:172 #, no-wrap msgid "Fourth quarter" msgstr "Четвертый квартал" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:173 #, no-wrap msgid "First call for reports" msgstr "Первый запрос отчётов" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:174 #, no-wrap msgid "March 1st" msgstr "1 марта" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:175 #, no-wrap msgid "June 1st" msgstr "1 июня" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:176 #, no-wrap msgid "September 1st" msgstr "1 сентября" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:178 #, no-wrap msgid "December 1st" msgstr "1 декабря" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:179 #, no-wrap msgid "1 month left reminder" msgstr "Напоминание за 1 месяц" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:180 #, no-wrap msgid "March 15th" msgstr "15 марта" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:181 #, no-wrap msgid "June 15th" msgstr "15 июня" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:182 #, no-wrap msgid "September 15th" msgstr "15 сентября" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:184 #, no-wrap msgid "December 15th" msgstr "15 декабря" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:185 #, no-wrap msgid "2 weeks left reminder" msgstr "Напоминание за 2 недели" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:186 #, no-wrap msgid "March 31st" msgstr "31 марта" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:187 #, no-wrap msgid "June 30th" msgstr "30 июня" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:188 #, no-wrap msgid "September 30th" msgstr "30 сентября" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:190 #, no-wrap msgid "December 31st" msgstr "31 декабря" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:191 #, no-wrap msgid "Submissions deadline and third-party review slush" msgstr "Окончательный срок отправки и заморозка проверки другими участниками" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:192 #, no-wrap msgid "April 14th" msgstr "14 апреля" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:193 #, no-wrap msgid "July 14th" msgstr "14 июля" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:194 #, no-wrap msgid "October 14th" msgstr "14 октября" #. type: Table #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:195 #, no-wrap msgid "January 14th" msgstr "14 января" #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:197 #, no-wrap msgid "Call for reports" msgstr "Запрос отчётов" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:200 msgid "Calls for status reports are sent to the following recipients:" msgstr "Запросы отчётов о состоянии отправляются следующим получателям:" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:202 msgid "" "the link:https://lists.freebsd.org/subscription/freebsd-status-calls[freebsd-" "status-calls@FreeBSD.org mailing list];" msgstr "" "link:https://lists.freebsd.org/subscription/freebsd-status-calls[почтовая " "рассылка freebsd-status-calls@FreeBSD.org];" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:203 msgid "" "to all submitters of last status reports (they may have updates or further " "improvements);" msgstr "" "всем авторам последних отчётов о состоянии (у них могут быть обновления или " "дополнительные улучшения);" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:204 msgid "and, depending on the season," msgstr "и, в зависимости от времени года," #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:205 msgid "Various conference organizers:" msgstr "Различные организаторы конференций:" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:206 msgid "" "link:mailto:secretary@asiabsdcon.org[AsiaBSDCon] in March (First Quarter);" msgstr "" "link:mailto:secretary@asiabsdcon.org[AsiaBSDCon] в марте (первый квартал);" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:207 msgid "link:mailto:info@bsdcan.org[BSDCan] in May (Second Quarter);" msgstr "link:mailto:info@bsdcan.org[BSDCan] в мае (второй квартал);" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:208 msgid "Various conference attendees:" msgstr "Различные участники конференции:" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:211 msgid "" "EuroBSDcon in September - October (Third-Fourth Quarter); EuroBSDcon as an " "organization is not interested in writing reports for FreeBSD - at least it " "was not in October 2019: its reason is that the conference is not FreeBSD " "specific. Hence, reports about this event should be asked of members of the " "FreeBSD community that attended it." msgstr "" "ЕвроBSDcon в сентябре - октябре (третий-четвертый квартал); организация " "ЕвроBSDcon не заинтересована в написании отчётов для FreeBSD — по крайней " "мере, не была заинтересована в октябре 2019 года: причина в том, что " "конференция не ориентирована конкретно на FreeBSD. Следовательно, отчёты об " "этом мероприятии следует запрашивать у участников сообщества FreeBSD, " "которые присутствовали на нём." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:212 msgid "" "Google Summer of Code link:mailto:soc-students@FreeBSD.org[students] and " "their link:mailto:soc-mentors@FreeBSD.org[mentors]." msgstr "" "Google Summer of Code: link:mailto:soc-students@FreeBSD.org[студенты] и их " "link:mailto:soc-mentors@FreeBSD.org[наставники]." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:216 msgid "" "The easiest way to send calls for status reports is to use the link:https://" "cgit.freebsd.org/doc/tree/tools/sendcalls/sendcalls[[.filename]#sendcalls# " "perl script] in the [.filename]#tools/sendcalls# directory of the doc git " "repository. The script automatically sends calls to all intended " "recipients. It can also be used through a cron job, for example:" msgstr "" "Самый простой способ отправки запросов на отчёты о состоянии — использовать " "скрипт link:https://cgit.freebsd.org/doc/tree/tools/sendcalls/sendcalls[[." "filename]#sendcalls# на Perl] из каталога [.filename]#tools/sendcalls# git " "репозитория документации. Скрипт автоматически отправляет запросы всем " "указанным получателям. Его также можно использовать через задание cron, " "например:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:219 #, no-wrap msgid "0 0 1,15,24 3,6,9,12 * cd ~/doc/tools/sendcalls && git pull && ./sendcalls -s 'Lorenzo Salvadore'\n" msgstr "0 0 1,15,24 3,6,9,12 * cd ~/doc/tools/sendcalls && git pull && ./sendcalls -s 'Lorenzo Salvadore'\n" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:225 msgid "" "If you are in charge of sending calls for status reports and you are indeed " "using a cron job, please run it on freefall and sign it with your name so " "that it is possible to infer who has configured the cronjob, in case " "something goes wrong. Also please update the example above with your name, " "as an additional safety measure." msgstr "" -"Если вы отвечаете за рассылку запросов отчётов о состоянии и используете " -"задание cron, пожалуйста, запускайте его на freefall и подписывайте своим " -"именем, чтобы в случае возникновения проблем можно было определить, кто " -"настроил задание cron. Также, в качестве дополнительной меры " -"предосторожности, обновите приведённый выше пример, указав свое имя." +"Если вы отвечаете за рассылку запросов отчётов о состоянии работ и " +"используете задание cron, пожалуйста, запускайте его на freefall и " +"подписывайте своим именем, чтобы в случае возникновения проблем можно было " +"определить, кто настроил это задание cron. Также, в качестве дополнительной " +"меры предосторожности, обновите приведённый выше пример, указав своё имя." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:228 msgid "" "It may also be worth making a call for reports on the forums as link:https://" "forums.freebsd.org/threads/call-for-freebsd-2014q4-october-december-status-" "reports.49812/[was done in the past]." msgstr "" "Также может быть полезно объявить сбор отчётов на форумах, как это link:" "https://forums.freebsd.org/threads/call-for-freebsd-2014q4-october-december-" "status-reports.49812/[делалось ранее]." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:229 #, no-wrap msgid "Building the report" msgstr "Построение отчёта" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:233 msgid "" "Submitted reports are reviewed and merged in the proper subdirectory of [." "filename]#doc/website/content/en/status/# as they come in. While the " "reports are being updated, people outside the status team may also review " "the individual entries and propose fixes." msgstr "" "Отправленные отчёты проверяются и объединяются в соответствующем подкаталоге " "[.filename]#doc/website/content/en/status/# по мере поступления. Пока отчёты " "обновляются, люди вне команды статуса также могут просматривать отдельные " "записи и предлагать исправления." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:236 msgid "" "Usually the last step in the content review process is writing the " "introduction in a file named [.filename]#intro.adoc#: a good introduction " "can only be written once all the reports have been collected. If possible, " "it is a good idea to ask different people to write the introduction to add " "variety: different people will bring different viewpoints and help keep it " "fresh." msgstr "" "Обычно последним шагом в процессе проверки содержания является написание " "введения в файле с названием [.filename]#intro.adoc#: хорошее введение можно " "написать только после того, как собраны все отчёты. По возможности, полезно " "попросить разных людей написать введение, чтобы добавить разнообразия: " "разные люди привнесут разные точки зрения и помогут сохранить его свежим." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:238 msgid "" "Once all the reports and the introduction are ready, the [.filename]#_index." "adoc# file needs to be created: this is the file in which the reports are " "distributed into the various categories and sorted." msgstr "" "После того как все отчёты и введение готовы, необходимо создать файл [." "filename]#_index.adoc#: это файл, в котором отчёты распределяются по " "различным категориям и сортируются." #. type: Title === #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:239 #, no-wrap msgid "Publishing the report" msgstr "Публикация отчёта" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:242 msgid "" "When all the files of the status report are ready, it is time to publish it." msgstr "" "Когда все файлы отчёта о состоянии готовы, пришло время опубликовать его." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:245 msgid "" "First [.filename]#doc/website/content/en/status/_index.adoc# is edited: the " "next due date is updated and a link to the new report is added. The change " "is then pushed on the repository and the status team checks that everythings " "works as expected." msgstr "" "Сначала редактируется файл [.filename]#doc/website/content/en/status/_index." "adoc#: обновляется следующая дата отчёта и добавляется ссылка на новый " "отчёт. Затем изменения отправляются в репозиторий, и команда статуса " "проверяет, что всё работает как ожидалось." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:247 msgid "" "Then the news entry for the main website page is added to [.filename]#doc/" "website/data/en/news/news.toml#." msgstr "" "Затем запись новости для главной страницы сайта добавляется в [." "filename]#doc/website/data/ru/news/news.toml#." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:249 msgid "Here is a sample for the news entry:" msgstr "Вот пример записи новостей:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:254 #, no-wrap msgid "" "[[news]]\n" "date = \"2021-01-16\"\n" "title = \"October-December 2020 Status Report\"\n" "description = \"The October to December 2020 Status Report is now available with 42 entries.\"\n" msgstr "" "[[news]]\n" "date = \"2021-01-16\"\n" "title = \"October-December 2020 Status Report\"\n" "description = \"The October to December 2020 Status Report is now available with 42 entries.\"\n" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:257 msgid "" "Once the HTML version of the report has been built and is online, man:w3m[1] " "is used to dump the website as plain-text, e.g:" msgstr "" "После создания HTML-версии отчёта и её публикации в сети используется man:" "w3m[1] для преобразования веб-сайта в простой текст, например:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:259 #, no-wrap msgid "% w3m -cols 80 -dump https://www.FreeBSD.org/status/report-2021-01-2021-03/ > /tmp/report-2021-01-2021-03.txt\n" msgstr "% w3m -cols 80 -dump https://www.FreeBSD.org/status/report-2021-01-2021-03/ > /tmp/report-2021-01-2021-03.txt\n" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:262 msgid "" "man:w3m[1] has full proper unicode support. `-dump` simply outputs text " "rendering of the HTML code that can then have a few elements snipped, while " "`-cols` ensures that everything is wrapped to 80 columns." msgstr "" "man:w3m[1] имеет полную поддержку Юникода. Опция `-dump` просто выводит " "текстовое представление HTML-кода, из которого затем можно удалить несколько " "элементов, а `-cols` гарантирует, что всё будет перенесено на 80 колонок." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:264 msgid "" "A link to the rendered report is added between the introduction and the " "first entry." msgstr "" "Ссылка на сформированный отчёт добавляется между введением и первой записью." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:266 msgid "" "The report is finally ready to be sent, toggling disposition (the report " "should be inlined), and ensuring it is encoded as UTF-8." msgstr "" "Переключив способ доставки (отчёт должен быть в тексте письма, а не в " "приложении) и убедившись, что его кодировка в UTF-8, вы получаете " "окончательно готовый к отправке отчёт." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:268 msgid "" "Two emails are sent, both with subject in the format `FreeBSD Status Report " "- Quarter `:" msgstr "" "Отправляются два письма, оба с темой в формате `FreeBSD Status Report - " " Quarter `:" #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:270 msgid "" "one to link:https://lists.freebsd.org/subscription/freebsd-announce[freebsd-" "announce@FreeBSD.org];" msgstr "" "одно для link:https://lists.freebsd.org/subscription/freebsd-" "announce[freebsd-announce@FreeBSD.org];" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:274 msgid "" "This one must be approved, so if you are in charge of sending this email, " "ensure that someone does it (mail link:mailto:postmaster@FreeBSD." "org[postmaster] if it is taking long)." msgstr "" -"Это письмо должно быть одобрено, поэтому если вы отвечаете за отправку этого " -"письма, убедитесь, что кто-то сделает это одобрение (напишите link:mailto:" -"postmaster@FreeBSD.org[постмастеру], если одобрение займёт много времени)." +"Это письмо должно быть одобрено, поэтому, если вы отвечаете за отправку " +"этого письма, убедитесь, что кто-то сделает это одобрение (напишите " +"link:mailto:postmaster@FreeBSD.org[постмастеру], если одобрение займёт много " +"времени)." #. type: Plain text #: documentation/content/en/articles/freebsd-status-report-process/_index.adoc:276 msgid "" "one to link:https://lists.freebsd.org/subscription/freebsd-hackers[freebsd-" "hackers@FreeBSD.org], which also has link:https://lists.freebsd.org/" "subscription/freebsd-current[freebsd-current@FreeBSD.org] and link:https://" "lists.freebsd.org/subscription/freebsd-stable[freebsd-stable@FreeBSD.org] in " "CC and `developers@FreeBSD.org` in BCC." msgstr "" "одно на link:https://lists.freebsd.org/subscription/freebsd-hackers[freebsd-" "hackers@FreeBSD.org], которому добавьте link:https://lists.freebsd.org/" "subscription/freebsd-current[freebsd-current@FreeBSD.org] и link:https://" "lists.freebsd.org/subscription/freebsd-stable[freebsd-stable@FreeBSD.org] в " "копию (CC) и `developers@FreeBSD.org` в скрытую копию (BCC)." #~ msgid "" #~ "All report submissions can have the deadline extended by link:mailto:" #~ "status-submissions@FreeBSD.org[emailing the status team] up until the " #~ "extended deadline, which is 8 days after the end of the quarter. Entries " #~ "from the link:https://www.freebsd.org/administration/#t-portmgr[ports " #~ "management team] default to the extended headline, because of the overlap " #~ "between status reports and quarterly ports branches." #~ msgstr "" #~ "Все отправленные отчёты могут быть продлены по ссылке link:mailto:status-" #~ "submissions@FreeBSD.org[электронной почте команды статуса] вплоть до " #~ "продлённого срока, который составляет 8 дней после окончания квартала. " #~ "Записи от link:https://www.freebsd.org/administration/#t-portmgr[команды " #~ "управления портами] по умолчанию используют продлённый заголовок из-за " #~ "пересечения отчётов о статусе и квартальных веток портов." #, no-wrap #~ msgid "Last reminder" #~ msgstr "Последнее напоминание" #, no-wrap #~ msgid "March 24th" #~ msgstr "24 марта" #, no-wrap #~ msgid "June 24th" #~ msgstr "24 июня" #, no-wrap #~ msgid "September 24th" #~ msgstr "24 сентября" #, no-wrap #~ msgid "December 24th" #~ msgstr "24 декабря" #, no-wrap #~ msgid "Standard deadline" #~ msgstr "Стандартный срок выполнения" #, no-wrap #~ msgid "Extended deadline" #~ msgstr "Расширенный срок выполнения" #, no-wrap #~ msgid "April 8th" #~ msgstr "8 апреля" #, no-wrap #~ msgid "July 8th" #~ msgstr "8 июля" #, no-wrap #~ msgid "October 8th" #~ msgstr "8 октября" #, no-wrap #~ msgid "January 8th" #~ msgstr "8 января" diff --git a/documentation/content/ru/articles/freebsd-update-server/_index.adoc b/documentation/content/ru/articles/freebsd-update-server/_index.adoc index 5535fbf64c..5d51473796 100644 --- a/documentation/content/ru/articles/freebsd-update-server/_index.adoc +++ b/documentation/content/ru/articles/freebsd-update-server/_index.adoc @@ -1,610 +1,610 @@ --- authors: - author: 'Jason Helfman' email: jgh@FreeBSD.org copyright: '2009-2011, 2013 Jason Helfman' description: 'Создание собственного сервера freebsd-update позволяет системному администратору выполнять быстрые обновления для множества машин из локального зеркала' tags: ["FreeBSD", "Update", "Server", "internal"] title: 'Создайте свой собственный сервер обновлений FreeBSD' trademarks: ["freebsd", "amd", "intel", "general"] --- = Создайте свой собственный сервер обновлений FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/freebsd-update-server/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [WARNING] ==== -Инструкции в этой статье относятся к более старой версии FreeBSD и могут не работать корректно в последних версиях ОС. В связи с появлением pkgbase, утилита freebsd-update планируется к удалению из FreeBSD в будущем. Когда это произойдет, статья будет либо обновлена с учетом новых процедур, либо полностью удалена. +Инструкции в этой статье относятся к более старой версии FreeBSD и могут не работать корректно в последних версиях ОС. В связи с появлением pkgbase, утилита freebsd-update планируется к удалению из FreeBSD в будущем. Когда это произойдет, статья будет либо обновлена с учётом новых процедур, либо полностью удалена. ==== [.abstract-title] Аннотация В этой статье описывается создание внутреннего сервера обновлений FreeBSD. https://github.com/freebsd/freebsd-update-build/[freebsd-update-server] написан `{cperciva}`, почетным руководителем безопасности FreeBSD. Для пользователей, которым удобно обновлять свои системы через официальный сервер обновлений, создание собственного сервера обновлений FreeBSD может помочь расширить его функциональность, поддерживая вручную модифицированные выпуски FreeBSD или предоставляя локальное зеркало, которое позволит ускорить обновления для множества машин. ''' toc::[] [[acknowledgments]] == Благодарности Эта статья была впоследствии опубликована в онлайн издании https://people.freebsd.org/~jgh/files/fus/BSD_03_2010_EN.pdf[BSD Magazine]. [[introduction]] == Введение -Опытные пользователи или администраторы часто отвечают за несколько машин или окружений. Они понимают сложные требования и вызовы, связанные с поддержанием такой инфраструктуры. Запуск сервера обновлений FreeBSD упрощает развертывание исправлений безопасности и программного обеспечения на выбранных тестовых машинах перед их внедрением в рабочую среду. Это также означает, что множество систем могут быть обновлены из локальной сети, а не через потенциально медленное интернет-соединение. В этой статье описаны шаги, необходимые для создания внутреннего сервера обновлений FreeBSD. +Опытные пользователи или администраторы часто отвечают за несколько машин или окружений. Они понимают сложные требования и вызовы, связанные с поддержанием такой инфраструктуры. Запуск сервера обновлений FreeBSD упрощает развёртывание исправлений безопасности и программного обеспечения на выбранных тестовых машинах перед их внедрением в рабочую среду. Это также означает, что множество систем могут быть обновлены из локальной сети, а не через потенциально медленное интернет-соединение. В этой статье описаны шаги, необходимые для создания внутреннего сервера обновлений FreeBSD. [[prerequisites]] == Предварительные требования Для создания внутреннего сервера обновлений FreeBSD необходимо выполнить некоторые требования. * Работающая система FreeBSD. + [NOTE] ==== Минимальное требование для обновлений — сборка на версии FreeBSD, которая не меньше целевой версии для распространения. ==== * Пользовательская учётная запись с как минимум 4 ГБ свободного места. Это позволит создавать обновления для версий 7.1 и 7.2, но точные требования к месту могут меняться от версии к версии. -* Учетная запись man:ssh[1] на удаленной машине для загрузки распределенных обновлений. +* Учётная запись man:ssh[1] на удаленной машине для загрузки распределенных обновлений. * Веб-сервер, например extref:{handbook}network-servers[Apache, network-apache], с более чем половиной пространства, необходимого для сборки. Например, тестовые сборки для версий 7.1 и 7.2 занимают в общей сложности 4 ГБ, а пространство веб-сервера, необходимое для распространения этих обновлений, составляет 2.6 ГБ. * Базовые знания написания скриптов для оболочки Bourne shell, man:sh[1]. [[Configuration]] == Конфигурация: установка и настройка Загрузите программное обеспечение https://github.com/freebsd/freebsd-update-build/[freebsd-update-server], установив пакеты package:devel/git[] и package:security/ca_root_nss[], и выполните: [source, shell] .... % git clone https://github.com/freebsd/freebsd-update-build.git freebsd-update-server .... Обновите соответствующим образом файл [.filename]#scripts/build.conf#. Он используется во всех операциях сборки. Вот стандартный [.filename]#build.conf#, который следует изменить в соответствии с вашим окружением. [.programlisting] .... # Main configuration file for FreeBSD Update builds. The # release-specific configuration data is lower down in # the scripts tree. # Location from which to fetch releases export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases <.> # Host platform export HOSTPLATFORM=`uname -m` # Host name to use inside jails export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net <.> # Location of SSH key export SSHKEY=/root/.ssh/id_dsa <.> # SSH account into which files are uploaded MASTERACCT=builder@wadham.daemonology.net <.> # Directory into which files are uploaded MASTERDIR=update-master.freebsd.org <.> .... Учтите возможные варианты следующих настроек: <.> Это место, откуда загружаются образы ISO (с помощью подпрограммы `fetchiso()` из файла [.filename]#scripts/build.subr#). Настроенное расположение не ограничивается URI FTP. Должны работать любые схемы URI, поддерживаемые стандартной утилитой man:fetch[1]. Пользовательские изменения кода `fetchiso()` можно установить, скопировав скрипт [.filename]#build.subr# по умолчанию в область, специфичную для соответствующего релиза и архитектуры, по пути [.filename]#scripts/РЕЛИЗ/АРХИТЕКТУРА/build.subr#, и применив локальные изменения. <.> Имя хоста для сборки. Эта информация будет отображаться на обновлённых системах при выполнении команды: + [source, shell] .... % uname -v .... + <.> Ключ SSH для загрузки файлов на сервер обновлений. Пару ключей можно создать, выполнив команду `ssh-keygen -t dsa`. Этот параметр необязателен; стандартная аутентификация по паролю будет использоваться в качестве резервного метода, если `SSHKEY` не определён. Более подробную информацию о SSH и соответствующих шагах по созданию и использованию ключей можно найти на man:ssh-keygen[1]. -<.> Учетная запись для загрузки файлов на сервер обновлений. +<.> Учётная запись для загрузки файлов на сервер обновлений. <.> Каталог на сервере обновлений, в который загружаются файлы. В стандартном файле [.filename]#build.conf#, поставляемом с исходниками freebsd-update-server, задана сборка релизов FreeBSD для архитектуры i386. В качестве примера настройки сервера обновлений для других архитектур ниже приведены шаги с необходимыми изменениями конфигурации для amd64: [.procedure] ==== . Создайте среду сборки для amd64: + [source, shell] .... % mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64 .... . Установите файл [.filename]#build.conf# в только что созданный каталог сборки. Параметры конфигурации сборки для FreeBSD 7.2-RELEASE на amd64 должны быть примерно такими: + [.programlisting] .... # SHA256 hash of RELEASE disc1.iso image. export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5 <.> # Components of the world, source, and kernels export WORLDPARTS="base catpages dict doc games info manpages proflibs lib32" export SOURCEPARTS="base bin contrib crypto etc games gnu include krb5 \ lib libexec release rescue sbin secure share sys tools \ ubin usbin cddl" export KERNELPARTS="generic" # EOL date export EOL=1275289200 <.> .... + <.> Хеш-ключ man:sha256[1] для желаемого выпуска опубликован в соответствующем link:https://www.FreeBSD.org/releases/[анонсе выпуска]. <.> Для получения номера "End of Life" для файла [.filename]#build.conf# обратитесь к "Estimated EOL" на сайте link:https://www.FreeBSD.org/security/security/[FreeBSD Security Website]. Значение `EOL` можно вывести из даты, указанной на веб-сайте, используя утилиту man:date[1], например: + [source, shell] .... % date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s' .... ==== [[build]] == Сборка кода обновления Первым шагом является запуск [.filename]#scripts/make.sh#. Это приведёт к сборке некоторых бинарных файлов, созданию каталогов и генерации RSA-ключа подписи, используемого для подтверждения сборок. На этом этапе потребуется ввести парольную фразу для окончательного создания ключа подписи. [source, shell] .... # sh scripts/make.sh cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps findstamps.c: In function 'usage': findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit' cc -O2 -fno-strict-aliasing -pipe unstamp.c -o unstamp install findstamps ../bin install unstamp ../bin rm -f findstamps unstamp Generating RSA private key, 4096 bit long modulus ................................................................................++ ...................++ e is 65537 (0x10001) Public key fingerprint: 27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e Encrypting signing key for root enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: .... [NOTE] ==== Сохраните сгенерированный отпечаток ключа. Это значение требуется в [.filename]#/etc/freebsd-update.conf# для бинарных обновлений. ==== На этом этапе мы готовы к подготовке сборки. [source, shell] .... # cd /usr/local/freebsd-update-server # sh scripts/init.sh amd64 7.2-RELEASE .... Ниже приведён пример _первоначальной_ сборки. [source, shell] .... # sh scripts/init.sh amd64 7.2-RELEASE Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE /usr/local/freebsd-update-server/work/7.2-RELE100 of 588 MB 359 kBps 00m00s Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE Files built but not released: Files released but not built: Files which differ by more than contents: Files which differ between release and build: kernel|generic|/GENERIC/hptrr.ko kernel|generic|/GENERIC/kernel src|sys|/sys/conf/newvers.sh world|base|/boot/loader world|base|/boot/pxeboot world|base|/etc/mail/freebsd.cf world|base|/etc/mail/freebsd.submit.cf world|base|/etc/mail/sendmail.cf world|base|/etc/mail/submit.cf world|base|/lib/libcrypto.so.5 world|base|/usr/bin/ntpq world|base|/usr/lib/libalias.a world|base|/usr/lib/libalias_cuseeme.a world|base|/usr/lib/libalias_dummy.a world|base|/usr/lib/libalias_ftp.a ... .... Затем выполняется сборка world с применением патчей world. Более подробное объяснение можно найти в [.filename]#scripts/build.subr#. [WARNING] ==== В течение этого второго цикла сборки демон протокола сетевого времени, man:ntpd[8], отключен. По словам `{cperciva}`, почётного офицера безопасности FreeBSD, "код сборки https://github.com/freebsd/freebsd-update-build/[freebsd-update-server] должен идентифицировать временные метки, хранящиеся в файлах, чтобы их можно было игнорировать при сравнении сборок для определения того, какие файлы нуждаются в обновлении. Этот поиск временных меток работает путем выполнения двух сборок с интервалом в 400 дней и сравнения результатов." ==== [source, shell] .... Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE Files found which include build stamps: kernel|generic|/GENERIC/hptrr.ko kernel|generic|/GENERIC/kernel world|base|/boot/loader world|base|/boot/pxeboot world|base|/etc/mail/freebsd.cf world|base|/etc/mail/freebsd.submit.cf world|base|/etc/mail/sendmail.cf world|base|/etc/mail/submit.cf world|base|/lib/libcrypto.so.5 world|base|/usr/bin/ntpq world|base|/usr/include/osreldate.h world|base|/usr/lib/libalias.a world|base|/usr/lib/libalias_cuseeme.a world|base|/usr/lib/libalias_dummy.a world|base|/usr/lib/libalias_ftp.a ... .... Наконец, сборка завершена. [source, shell] .... Values of build stamps, excluding library archive headers: v1.2 (Aug 25 2009 00:40:36) v1.2 (Aug 25 2009 00:38:22) @()FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009 FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009 root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC 7.2-RELEASE Mon Aug 24 23:55:25 UTC 2009 Mon Aug 24 23:55:25 UTC 2009 built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009 built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009 built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009 built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009 Mon Aug 24 23:46:47 UTC 2009 ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1) * Copyright (c) 1992-2009 The FreeBSD Project. Mon Aug 24 23:46:47 UTC 2009 Mon Aug 24 23:55:40 UTC 2009 Aug 25 2009 ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1) ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1) ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1) Tue Aug 25 00:21:21 UTC 2009 Tue Aug 25 00:21:21 UTC 2009 Tue Aug 25 00:21:21 UTC 2009 Mon Aug 24 23:46:47 UTC 2009 FreeBSD/amd64 7.2-RELEASE initialization build complete. Please review the list of build stamps printed above to confirm that they look sensible, then run sh -e approve.sh amd64 7.2-RELEASE to sign the release. .... Одобрите сборку, если всё правильно. Дополнительную информацию о том, как это определить, можно найти в распределённом исходном файле с именем [.filename]#USAGE#. Выполните [.filename]#scripts/approve.sh#, как указано. Это подпишет релиз и переместит компоненты в промежуточную область, подходящую для загрузки. [source, shell] .... # cd /usr/local/freebsd-update-server # sh scripts/mountkey.sh .... [source, shell] .... # sh -e scripts/approve.sh amd64 7.2-RELEASE Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE .... После завершения процесса утверждения можно начать процедуру загрузки. [source, shell] .... # cd /usr/local/freebsd-update-server # sh scripts/upload.sh amd64 7.2-RELEASE .... [NOTE] ==== В случае необходимости повторной загрузки кода обновления, это можно сделать, перейдя в публичный каталог дистрибутивов для целевого выпуска и обновив атрибуты файла _uploaded_. [source, shell] .... # cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64 # touch -t 200801010101.01 uploaded .... ==== Загруженные файлы должны находиться в корневом каталоге веб-сервера, чтобы обновления могли распространяться. Точная конфигурация будет зависеть от используемого веб-сервера. Для веб-сервера Apache обратитесь к разделу extref:{handbook}network-servers[Настройка серверов Apache, network-apache] в Руководстве. Обновите `KeyPrint` и `ServerName` клиента в [.filename]#/etc/freebsd-update.conf# и выполните обновления, как указано в разделе extref:{handbook}cutting-edge[Обновление FreeBSD, updating-upgrading-freebsdupdate] Руководства. [IMPORTANT] ==== Для корректной работы сервера обновлений FreeBSD Update необходимо собирать обновления как для текущего релиза, так и для релиза, _на который планируется обновление_. Это необходимо для определения различий в файлах между релизами. Например, при обновлении системы FreeBSD с 7.1-RELEASE до 7.2-RELEASE потребуется собрать и загрузить на сервер распространения обновления для обеих версий. ==== Для справки, полный текст выполнения link:../../source/articles/freebsd-update-server/init.txt[init.sh] прилагается. [[patch]] == Построение патча Каждый раз, когда объявляется link:https://www.FreeBSD.org/security/advisories/[консультативный документ по безопасности] или link:https://www.FreeBSD.org/security/notices/[уведомление о безопасности], можно собрать обновление с исправлением. Для этого примера будет использоваться версия 7.1-RELEASE. Несколько предположений сделано для другой сборки выпуска: * Настройка правильной структуры каталогов для первоначальной сборки. * Выполните первоначальную сборку для 7.1-RELEASE. Создайте каталог с патчами соответствующего выпуска в [.filename]#/usr/local/freebsd-update-server/patches/#. [source, shell] .... % mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/ % cd /usr/local/freebsd-update-server/patches/7.1-RELEASE .... В качестве примера возьмем патч для man:named[8]. Прочтите рекомендации и загрузите необходимый файл с link:https://www.FreeBSD.org/security/advisories/[FreeBSD Security Advisories]. Дополнительную информацию о том, как интерпретировать рекомендации, можно найти в extref:{handbook}security[Руководства FreeBSD, security-advisories]. В https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc[кратком обзоре безопасности] этот совет называется `SA-09:12.bind`. После загрузки файла необходимо переименовать его в соответствии с уровнем исправления. Рекомендуется сохранять это в соответствии с официальными уровнями исправлений FreeBSD, но имя может быть выбрано свободно. Для данной сборки давайте последуем текущей установленной практике FreeBSD и назовем его `p7`. Переименуйте файл: [source, shell] .... % cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind .... [NOTE] ==== При выполнении сборки уровня патча предполагается, что предыдущие патчи уже установлены. При запуске сборки патча будут выполнены все патчи, содержащиеся в каталоге патчей. В сборку могут быть добавлены пользовательские патчи. Используйте ноль или любое другое число. ==== [WARNING] ==== Задача администратора сервера FreeBSD Update — принимать соответствующие меры для проверки подлинности каждого патча. ==== На этом этапе _diff_ готов к сборке. Программное обеспечение сначала проверяет, был ли запущен [.filename]#scripts/init.sh# для соответствующего выпуска перед выполнением сборки diff. [source, shell] .... # cd /usr/local/freebsd-update-server # sh scripts/diff.sh amd64 7.1-RELEASE 7 .... Вот пример выполнения _дифференциальной_ сборки. [source, shell] .... # sh -e scripts/diff.sh amd64 7.1-RELEASE 7 Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7 Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7 Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7 ... Files found which include build stamps: kernel|generic|/GENERIC/hptrr.ko kernel|generic|/GENERIC/kernel world|base|/boot/loader world|base|/boot/pxeboot world|base|/etc/mail/freebsd.cf world|base|/etc/mail/freebsd.submit.cf world|base|/etc/mail/sendmail.cf world|base|/etc/mail/submit.cf world|base|/lib/libcrypto.so.5 world|base|/usr/bin/ntpq world|base|/usr/include/osreldate.h world|base|/usr/lib/libalias.a world|base|/usr/lib/libalias_cuseeme.a world|base|/usr/lib/libalias_dummy.a world|base|/usr/lib/libalias_ftp.a ... Values of build stamps, excluding library archive headers: v1.2 (Aug 26 2009 18:13:46) v1.2 (Aug 26 2009 18:11:44) @()FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009 FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009 root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC 7.1-RELEASE-p7 Wed Aug 26 17:29:15 UTC 2009 Wed Aug 26 17:29:15 UTC 2009 built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009 built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009 built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009 built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009 Wed Aug 26 17:20:39 UTC 2009 ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1) * Copyright (c) 1992-2009 The FreeBSD Project. Wed Aug 26 17:20:39 UTC 2009 Wed Aug 26 17:29:30 UTC 2009 Aug 26 2009 ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1) ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1) ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1) Wed Aug 26 17:55:02 UTC 2009 Wed Aug 26 17:55:02 UTC 2009 Wed Aug 26 17:55:02 UTC 2009 Wed Aug 26 17:20:39 UTC 2009 ... .... Обновления выводятся на экран, и запрашивается подтверждение. [source, shell] .... New updates: kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10| kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1| kernel|generic|/|d|0|0|0755|0|| src|base|/|d|0|0|0755|0|| src|bin|/|d|0|0|0755|0|| src|cddl|/|d|0|0|0755|0|| src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757| src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550| src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712| ... FreeBSD/amd64 7.1-RELEASE update build complete. Please review the list of build stamps printed above and the list of updated files to confirm that they look sensible, then run sh -e approve.sh amd64 7.1-RELEASE to sign the build. .... Следуйте той же процедуре, что и ранее, для подтверждения сборки: [source, shell] .... # sh -e scripts/approve.sh amd64 7.1-RELEASE Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE The FreeBSD/amd64 7.1-RELEASE update build has been signed and is ready to be uploaded. Remember to run sh -e umountkey.sh to unmount the decrypted key once you have finished signing all the new builds. .... После утверждения сборки загрузите программное обеспечение: [source, shell] .... # cd /usr/local/freebsd-update-server # sh scripts/upload.sh amd64 7.1-RELEASE .... Для справки, полный запуск скрипта link:../../source/articles/freebsd-update-server/diff.txt[diff.sh] прилагается. [[tips]] == Советы * Если пользовательская сборка создана с использованием стандартной процедуры `make release` extref:{releng}[procedure, release-build], код freebsd-update-server будет работать с вашей сборкой. Например, сборка без портов или документации может быть создана путем отключения функциональности, относящейся к подпрограммам документации `findextradocs ()`, `addextradocs ()`, и изменения места загрузки в `fetchiso ()` соответственно в файле [.filename]#scripts/build.subr#. В завершение измените хеш man:sha256[1] в файле [.filename]#build.conf# для соответствующей сборки и архитектуры, после чего можно приступать к сборке вашей пользовательской версии. + [.programlisting] .... # Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts # of the world|doc subcomponent are missing from the latter, and # build a tarball out of them. findextradocs () { } # Add extra docs to ${WORKDIR}/$1 addextradocs () { } .... * Добавление флагов `-j _ЧИСЛО_` к целям `buildworld` и `obj` в скрипте [.filename]#scripts/build.subr# может ускорить обработку в зависимости от используемого оборудования, однако это не обязательно. Использование этих флагов в других целях не рекомендуется, так как это может привести к ненадёжности сборки. + [.programlisting] .... # Build the world log "Building world" cd /usr/src && make -j 2 ${COMPATFLAGS} buildworld 2>&1 # Distribute the world log "Distributing world" cd /usr/src/release && make -j 2 obj && make ${COMPATFLAGS} release.1 release.2 2>&1 .... * Создайте соответствующую extref:{handbook}network-servers[DNS, network-dns] SRV-запись для сервера обновлений и разместите остальные за ним с переменными весами. Использование этой возможности обеспечит зеркала для обновлений, однако данный совет не обязателен, если вы не хотите предоставлять избыточный сервис. + [.programlisting] .... _http._tcp.update.myserver.com. IN SRV 0 2 80 host1.myserver.com. IN SRV 0 1 80 host2.myserver.com. IN SRV 0 0 80 host3.myserver.com. .... diff --git a/documentation/content/ru/articles/freebsd-update-server/_index.po b/documentation/content/ru/articles/freebsd-update-server/_index.po index 063c01657f..4dbab6bb3c 100644 --- a/documentation/content/ru/articles/freebsd-update-server/_index.po +++ b/documentation/content/ru/articles/freebsd-update-server/_index.po @@ -1,1485 +1,1485 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-11-08 16:17+0000\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/freebsd-update-server/_index.adoc:1 #, no-wrap msgid "Building your own freebsd-update server allows a system administrator to perform fast updates for a number of machines from a local mirror" msgstr "Создание собственного сервера freebsd-update позволяет системному администратору выполнять быстрые обновления для множества машин из локального зеркала" #. type: Title = #: documentation/content/en/articles/freebsd-update-server/_index.adoc:1 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:12 #, no-wrap msgid "Build Your Own FreeBSD Update Server" msgstr "Создайте свой собственный сервер обновлений FreeBSD" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:51 msgid "" "The instructions in this article refer to an older version of FreeBSD and " "may not work properly on recent versions of the OS. With the availability of " "pkgbase, the freebsd-update utility is scheduled to be removed from FreeBSD " "in the future. When that happens, this article is either updated to reflect " "the new procedures or removed entirely." msgstr "" "Инструкции в этой статье относятся к более старой версии FreeBSD и могут не " "работать корректно в последних версиях ОС. В связи с появлением pkgbase, " "утилита freebsd-update планируется к удалению из FreeBSD в будущем. Когда " -"это произойдет, статья будет либо обновлена с учетом новых процедур, либо " +"это произойдет, статья будет либо обновлена с учётом новых процедур, либо " "полностью удалена." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:55 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:59 msgid "" "This article describes building an internal FreeBSD Update Server. The " "https://github.com/freebsd/freebsd-update-build/[freebsd-update-server] is " "written by `{cperciva}`, Security Officer Emeritus of FreeBSD. For users " "that think it is convenient to update their systems against an official " "update server, building their own FreeBSD Update Server may help to extend " "its functionality by supporting manually-tweaked FreeBSD releases or by " "providing a local mirror that will allow faster updates for a number of " "machines." msgstr "" "В этой статье описывается создание внутреннего сервера обновлений FreeBSD. " "https://github.com/freebsd/freebsd-update-build/[freebsd-update-server] " "написан `{cperciva}`, почетным руководителем безопасности FreeBSD. Для " "пользователей, которым удобно обновлять свои системы через официальный " "сервер обновлений, создание собственного сервера обновлений FreeBSD может " "помочь расширить его функциональность, поддерживая вручную модифицированные " "выпуски FreeBSD или предоставляя локальное зеркало, которое позволит " "ускорить обновления для множества машин." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:61 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:65 #, no-wrap msgid "Acknowledgments" msgstr "Благодарности" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:68 msgid "" "This article was subsequently printed at https://people.freebsd.org/~jgh/" "files/fus/BSD_03_2010_EN.pdf[BSD Magazine]." msgstr "" "Эта статья была впоследствии опубликована в онлайн издании https://people." "freebsd.org/~jgh/files/fus/BSD_03_2010_EN.pdf[BSD Magazine]." #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:70 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:77 msgid "" "Experienced users or administrators are often responsible for several " "machines or environments. They understand the difficult demands and " "challenges of maintaining such an infrastructure. Running a FreeBSD Update " "Server makes it easier to deploy security and software patches to selected " "test machines before rolling them out to production. It also means a number " "of systems can be updated from the local network rather than a potentially " "slower Internet connection. This article outlines the steps involved in " "creating an internal FreeBSD Update Server." msgstr "" "Опытные пользователи или администраторы часто отвечают за несколько машин " "или окружений. Они понимают сложные требования и вызовы, связанные с " "поддержанием такой инфраструктуры. Запуск сервера обновлений FreeBSD " -"упрощает развертывание исправлений безопасности и программного обеспечения " +"упрощает развёртывание исправлений безопасности и программного обеспечения " "на выбранных тестовых машинах перед их внедрением в рабочую среду. Это также " "означает, что множество систем могут быть обновлены из локальной сети, а не " "через потенциально медленное интернет-соединение. В этой статье описаны " "шаги, необходимые для создания внутреннего сервера обновлений FreeBSD." #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:79 #, no-wrap msgid "Prerequisites" msgstr "Предварительные требования" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:82 msgid "" "To build an internal FreeBSD Update Server some requirements should be met." msgstr "" "Для создания внутреннего сервера обновлений FreeBSD необходимо выполнить " "некоторые требования." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:84 msgid "A running FreeBSD system." msgstr "Работающая система FreeBSD." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:88 msgid "" "At a minimum, updates require building on a FreeBSD release greater than or " "equal to the target release version for distribution." msgstr "" "Минимальное требование для обновлений — сборка на версии FreeBSD, которая не " "меньше целевой версии для распространения." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:90 msgid "" "A user account with at least 4 GB of available space. This will allow the " "creation of updates for 7.1 and 7.2, but the exact space requirements may " "change from version to version." msgstr "" "Пользовательская учётная запись с как минимум 4 ГБ свободного места. Это " "позволит создавать обновления для версий 7.1 и 7.2, но точные требования к " "месту могут меняться от версии к версии." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:91 msgid "" "An man:ssh[1] account on a remote machine to upload distributed updates." msgstr "" -"Учетная запись man:ssh[1] на удаленной машине для загрузки распределенных " +"Учётная запись man:ssh[1] на удаленной машине для загрузки распределенных " "обновлений." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:92 msgid "" "A web server, like extref:{handbook}network-servers[Apache, network-apache], " "with over half of the space required for the build. For instance, test " "builds for 7.1 and 7.2 consume a total amount of 4 GB, and the webserver " "space needed to distribute these updates is 2.6 GB." msgstr "" "Веб-сервер, например extref:{handbook}network-servers[Apache, network-apache]" ", с более чем половиной пространства, необходимого для сборки. Например, " "тестовые сборки для версий 7.1 и 7.2 занимают в общей сложности 4 ГБ, а " "пространство веб-сервера, необходимое для распространения этих обновлений, " "составляет 2.6 ГБ." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:93 msgid "Basic knowledge of shell scripting with Bourne shell, man:sh[1]." msgstr "" "Базовые знания написания скриптов для оболочки Bourne shell, man:sh[1]." #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:95 #, no-wrap msgid "Configuration: Installation & Setup" msgstr "Конфигурация: установка и настройка" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:98 msgid "" "Download the https://github.com/freebsd/freebsd-update-build/[freebsd-update-" "server] software by installing package:devel/git[] and package:security/" "ca_root_nss[], and execute:" msgstr "" "Загрузите программное обеспечение https://github.com/freebsd/freebsd-update-" "build/[freebsd-update-server], установив пакеты package:devel/git[] и " "package:security/ca_root_nss[], и выполните:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:102 #, no-wrap msgid "% git clone https://github.com/freebsd/freebsd-update-build.git freebsd-update-server\n" msgstr "% git clone https://github.com/freebsd/freebsd-update-build.git freebsd-update-server\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:106 msgid "" "Update [.filename]#scripts/build.conf# appropriately. It is sourced during " "all build operations." msgstr "" "Обновите соответствующим образом файл [.filename]#scripts/build.conf#. Он " "используется во всех операциях сборки." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:108 msgid "" "Here is the default [.filename]#build.conf#, which should be modified to " "suit your environment." msgstr "" "Вот стандартный [.filename]#build.conf#, который следует изменить в " "соответствии с вашим окружением." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:114 #, no-wrap msgid "" "# Main configuration file for FreeBSD Update builds. The\n" "# release-specific configuration data is lower down in\n" "# the scripts tree.\n" msgstr "" "# Main configuration file for FreeBSD Update builds. The\n" "# release-specific configuration data is lower down in\n" "# the scripts tree.\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:117 #, no-wrap msgid "" "# Location from which to fetch releases\n" "export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases <.>\n" msgstr "" "# Location from which to fetch releases\n" "export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases <.>\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:120 #, no-wrap msgid "" "# Host platform\n" "export HOSTPLATFORM=`uname -m`\n" msgstr "" "# Host platform\n" "export HOSTPLATFORM=`uname -m`\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:123 #, no-wrap msgid "" "# Host name to use inside jails\n" "export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net <.>\n" msgstr "" "# Host name to use inside jails\n" "export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net <.>\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:126 #, no-wrap msgid "" "# Location of SSH key\n" "export SSHKEY=/root/.ssh/id_dsa <.>\n" msgstr "" "# Location of SSH key\n" "export SSHKEY=/root/.ssh/id_dsa <.>\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:129 #, no-wrap msgid "" "# SSH account into which files are uploaded\n" "MASTERACCT=builder@wadham.daemonology.net <.>\n" msgstr "" "# SSH account into which files are uploaded\n" "MASTERACCT=builder@wadham.daemonology.net <.>\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:132 #, no-wrap msgid "" "# Directory into which files are uploaded\n" "MASTERDIR=update-master.freebsd.org <.>\n" msgstr "" "# Directory into which files are uploaded\n" "MASTERDIR=update-master.freebsd.org <.>\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:135 msgid "Parameters for consideration would be:" msgstr "Учтите возможные варианты следующих настроек:" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:138 msgid "" "This is the location where ISO images are downloaded from (by the " "`fetchiso()` subroutine of [.filename]#scripts/build.subr#). The location " "configured is not limited to FTP URIs. Any URI scheme supported by standard " "man:fetch[1] utility should work fine. Customizations to the `fetchiso()` " "code can be installed by copying the default [.filename]#build.subr# script " "to the release and architecture-specific area at [.filename]#scripts/RELEASE/" "ARCHITECTURE/build.subr# and applying local changes." msgstr "" "Это место, откуда загружаются образы ISO (с помощью подпрограммы `fetchiso()`" " из файла [.filename]#scripts/build.subr#). Настроенное расположение не " "ограничивается URI FTP. Должны работать любые схемы URI, поддерживаемые " "стандартной утилитой man:fetch[1]. Пользовательские изменения кода " "`fetchiso()` можно установить, скопировав скрипт [.filename]#build.subr# по " "умолчанию в область, специфичную для соответствующего релиза и архитектуры, " "по пути [.filename]#scripts/РЕЛИЗ/АРХИТЕКТУРА/build.subr#, и применив " "локальные изменения." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:140 msgid "" "The name of the build host. This information will be displayed on updated " "systems when issuing:" msgstr "" "Имя хоста для сборки. Эта информация будет отображаться на обновлённых " "системах при выполнении команды:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:144 #, no-wrap msgid "% uname -v\n" msgstr "% uname -v\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:148 msgid "" "The SSH key for uploading files to the update server. A key pair can be " "created by typing `ssh-keygen -t dsa`. This parameter is optional; standard " "password authentication will be used as a fallback authentication method " "when `SSHKEY` is not defined. The man:ssh-keygen[1] manual page has more " "detailed information about SSH and the appropriate steps for creating and " "using one." msgstr "" "Ключ SSH для загрузки файлов на сервер обновлений. Пару ключей можно " "создать, выполнив команду `ssh-keygen -t dsa`. Этот параметр необязателен; " "стандартная аутентификация по паролю будет использоваться в качестве " "резервного метода, если `SSHKEY` не определён. Более подробную информацию о " "SSH и соответствующих шагах по созданию и использованию ключей можно найти " "на man:ssh-keygen[1]." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:150 msgid "Account for uploading files to the update server." -msgstr "Учетная запись для загрузки файлов на сервер обновлений." +msgstr "Учётная запись для загрузки файлов на сервер обновлений." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:152 msgid "Directory on the update server where files are uploaded to." msgstr "Каталог на сервере обновлений, в который загружаются файлы." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:154 msgid "" "The default [.filename]#build.conf# shipped with the freebsd-update-server " "sources is suitable for building i386 releases of FreeBSD. As an example of " "building an update server for other architectures, the following steps " "outline the configuration changes needed for amd64:" msgstr "" "В стандартном файле [.filename]#build.conf#, поставляемом с исходниками " "freebsd-update-server, задана сборка релизов FreeBSD для архитектуры i386. В " "качестве примера настройки сервера обновлений для других архитектур ниже " "приведены шаги с необходимыми изменениями конфигурации для amd64:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:158 msgid "Create a build environment for amd64:" msgstr "Создайте среду сборки для amd64:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:162 #, no-wrap msgid "% mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64\n" msgstr "% mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:165 msgid "" "Install a [.filename]#build.conf# in the newly created build directory. The " "build configuration options for FreeBSD 7.2-RELEASE on amd64 should be " "similar to:" msgstr "" "Установите файл [.filename]#build.conf# в только что созданный каталог " "сборки. Параметры конфигурации сборки для FreeBSD 7.2-RELEASE на amd64 " "должны быть примерно такими:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:176 #, no-wrap msgid "" "# SHA256 hash of RELEASE disc1.iso image.\n" "export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5 <.>\n" "# Components of the world, source, and kernels\n" "export WORLDPARTS=\"base catpages dict doc games info manpages proflibs lib32\"\n" "export SOURCEPARTS=\"base bin contrib crypto etc games gnu include krb5 \\\n" " lib libexec release rescue sbin secure share sys tools \\\n" " ubin usbin cddl\"\n" "export KERNELPARTS=\"generic\"\n" msgstr "" "# SHA256 hash of RELEASE disc1.iso image.\n" "export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5 <.>\n" "# Components of the world, source, and kernels\n" "export WORLDPARTS=\"base catpages dict doc games info manpages proflibs lib32\"\n" "export SOURCEPARTS=\"base bin contrib crypto etc games gnu include krb5 \\\n" " lib libexec release rescue sbin secure share sys tools \\\n" " ubin usbin cddl\"\n" "export KERNELPARTS=\"generic\"\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:179 #, no-wrap msgid "" "# EOL date\n" "export EOL=1275289200 <.>\n" msgstr "" "# EOL date\n" "export EOL=1275289200 <.>\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:182 msgid "" "The man:sha256[1] hash key for the desired release, is published within the " "respective link:https://www.FreeBSD.org/releases/[release announcement]." msgstr "" "Хеш-ключ man:sha256[1] для желаемого выпуска опубликован в соответствующем " "link:https://www.FreeBSD.org/releases/[анонсе выпуска]." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:183 msgid "" "To generate the \"End of Life\" number for [.filename]#build.conf#, refer to " "the \"Estimated EOL\" posted on the link:https://www.FreeBSD.org/security/" "security/[FreeBSD Security Website]. The value of `EOL` can be derived from " "the date listed on the web site, using the man:date[1] utility, for example:" msgstr "" "Для получения номера \"End of Life\" для файла [.filename]#build.conf# " "обратитесь к \"Estimated EOL\" на сайте link:https://www.FreeBSD.org/" "security/security/[FreeBSD Security Website]. Значение `EOL` можно вывести " "из даты, указанной на веб-сайте, используя утилиту man:date[1], например:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:187 #, no-wrap msgid "% date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'\n" msgstr "% date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'\n" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:191 #, no-wrap msgid "Building Update Code" msgstr "Сборка кода обновления" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:196 msgid "" "The first step is to run [.filename]#scripts/make.sh#. This will build some " "binaries, create directories, and generate an RSA signing key used for " "approving builds. In this step, a passphrase will have to be supplied for " "the final creation of the signing key." msgstr "" "Первым шагом является запуск [.filename]#scripts/make.sh#. Это приведёт к " "сборке некоторых бинарных файлов, созданию каталогов и генерации RSA-ключа " "подписи, используемого для подтверждения сборок. На этом этапе потребуется " "ввести парольную фразу для окончательного создания ключа подписи." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:211 #, no-wrap msgid "" "# sh scripts/make.sh\n" "cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps\n" "findstamps.c: In function 'usage':\n" "findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit'\n" "cc -O2 -fno-strict-aliasing -pipe unstamp.c -o unstamp\n" "install findstamps ../bin\n" "install unstamp ../bin\n" "rm -f findstamps unstamp\n" "Generating RSA private key, 4096 bit long modulus\n" "................................................................................++\n" "...................++\n" "e is 65537 (0x10001)\n" msgstr "" "# sh scripts/make.sh\n" "cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps\n" "findstamps.c: In function 'usage':\n" "findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit'\n" "cc -O2 -fno-strict-aliasing -pipe unstamp.c -o unstamp\n" "install findstamps ../bin\n" "install unstamp ../bin\n" "rm -f findstamps unstamp\n" "Generating RSA private key, 4096 bit long modulus\n" "................................................................................++\n" "...................++\n" "e is 65537 (0x10001)\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:214 #, no-wrap msgid "" "Public key fingerprint:\n" "27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e\n" msgstr "" "Public key fingerprint:\n" "27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:218 #, no-wrap msgid "" "Encrypting signing key for root\n" "enter aes-256-cbc encryption password:\n" "Verifying - enter aes-256-cbc encryption password:\n" msgstr "" "Encrypting signing key for root\n" "enter aes-256-cbc encryption password:\n" "Verifying - enter aes-256-cbc encryption password:\n" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:224 msgid "" "Keep a note of the generated key fingerprint. This value is required in [." "filename]#/etc/freebsd-update.conf# for binary updates." msgstr "" "Сохраните сгенерированный отпечаток ключа. Это значение требуется в [." "filename]#/etc/freebsd-update.conf# для бинарных обновлений." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:227 msgid "At this point, we are ready to stage a build." msgstr "На этом этапе мы готовы к подготовке сборки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:232 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/init.sh amd64 7.2-RELEASE\n" msgstr "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/init.sh amd64 7.2-RELEASE\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:235 msgid "What follows is a sample of an _initial_ build run." msgstr "Ниже приведён пример _первоначальной_ сборки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:255 #, no-wrap msgid "" "# sh scripts/init.sh amd64 7.2-RELEASE\n" "Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE\n" "/usr/local/freebsd-update-server/work/7.2-RELE100 of 588 MB 359 kBps 00m00s\n" "Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" "# sh scripts/init.sh amd64 7.2-RELEASE\n" "Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE\n" "/usr/local/freebsd-update-server/work/7.2-RELE100 of 588 MB 359 kBps 00m00s\n" "Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:276 #, no-wrap msgid "" "Files built but not released:\n" "Files released but not built:\n" "Files which differ by more than contents:\n" "Files which differ between release and build:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "src|sys|/sys/conf/newvers.sh\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" msgstr "" "Files built but not released:\n" "Files released but not built:\n" "Files which differ by more than contents:\n" "Files which differ between release and build:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "src|sys|/sys/conf/newvers.sh\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:280 msgid "" "Then the build of the world is performed again, with world patches. A more " "detailed explanation may be found in [.filename]#scripts/build.subr#." msgstr "" "Затем выполняется сборка world с применением патчей world. Более подробное " "объяснение можно найти в [.filename]#scripts/build.subr#." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:286 msgid "" "During this second build cycle, the network time protocol daemon, man:" "ntpd[8], is turned off. Per `{cperciva}`, Security Officer Emeritus of " "FreeBSD, \"the https://github.com/freebsd/freebsd-update-build/[freebsd-" "update-server] build code needs to identify timestamps which are stored in " "files so that they can be ignored when comparing builds to determine which " "files need to be updated. This timestamp-finding works by doing two builds " "400 days apart and comparing the results.\"" msgstr "" "В течение этого второго цикла сборки демон протокола сетевого времени, " "man:ntpd[8], отключен. По словам `{cperciva}`, почётного офицера " "безопасности FreeBSD, \"код сборки https://github.com/freebsd/" "freebsd-update-build/[freebsd-update-server] должен идентифицировать " "временные метки, хранящиеся в файлах, чтобы их можно было игнорировать при " "сравнении сборок для определения того, какие файлы нуждаются в обновлении. " "Этот поиск временных меток работает путем выполнения двух сборок с " "интервалом в 400 дней и сравнения результатов.\"" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:305 #, no-wrap msgid "" "Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" "Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:323 #, no-wrap msgid "" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" msgstr "" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:326 msgid "Finally, the build completes." msgstr "Наконец, сборка завершена." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:355 #, no-wrap msgid "" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 25 2009 00:40:36)\n" "v1.2 (Aug 25 2009 00:38:22)\n" "@()FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" "FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.2-RELEASE\n" "Mon Aug 24 23:55:25 UTC 2009\n" "Mon Aug 24 23:55:25 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" "ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Mon Aug 24 23:46:47 UTC 2009\n" "Mon Aug 24 23:55:40 UTC 2009\n" "Aug 25 2009\n" "ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" msgstr "" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 25 2009 00:40:36)\n" "v1.2 (Aug 25 2009 00:38:22)\n" "@()FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" "FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.2-RELEASE\n" "Mon Aug 24 23:55:25 UTC 2009\n" "Mon Aug 24 23:55:25 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" "ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Mon Aug 24 23:46:47 UTC 2009\n" "Mon Aug 24 23:55:40 UTC 2009\n" "Aug 25 2009\n" "ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:361 #, no-wrap msgid "" "FreeBSD/amd64 7.2-RELEASE initialization build complete. Please\n" "review the list of build stamps printed above to confirm that\n" "they look sensible, then run\n" " sh -e approve.sh amd64 7.2-RELEASE\n" "to sign the release.\n" msgstr "" "FreeBSD/amd64 7.2-RELEASE initialization build complete. Please\n" "review the list of build stamps printed above to confirm that\n" "they look sensible, then run\n" " sh -e approve.sh amd64 7.2-RELEASE\n" "to sign the release.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:366 msgid "" "Approve the build if everything is correct. More information on determining " "this can be found in the distributed source file named [.filename]#USAGE#. " "Execute [.filename]#scripts/approve.sh#, as directed. This will sign the " "release, and move components into a staging area suitable for uploading." msgstr "" "Одобрите сборку, если всё правильно. Дополнительную информацию о том, как " "это определить, можно найти в распределённом исходном файле с именем [." "filename]#USAGE#. Выполните [.filename]#scripts/approve.sh#, как указано. " "Это подпишет релиз и переместит компоненты в промежуточную область, " "подходящую для загрузки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:371 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/mountkey.sh\n" msgstr "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/mountkey.sh\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:381 #, no-wrap msgid "" "# sh -e scripts/approve.sh amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" "# sh -e scripts/approve.sh amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:384 msgid "" "After the approval process is complete, the upload procedure may be started." msgstr "После завершения процесса утверждения можно начать процедуру загрузки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:389 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.2-RELEASE\n" msgstr "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.2-RELEASE\n" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:394 msgid "" "In the event update code needs to be re-uploaded, this may be done by " "changing to the public distributions directory for the target release and " "updating attributes of the _uploaded_ file." msgstr "" "В случае необходимости повторной загрузки кода обновления, это можно " "сделать, перейдя в публичный каталог дистрибутивов для целевого выпуска и " "обновив атрибуты файла _uploaded_." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:399 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64\n" "# touch -t 200801010101.01 uploaded\n" msgstr "" "# cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64\n" "# touch -t 200801010101.01 uploaded\n" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:406 msgid "" "The uploaded files will need to be in the document root of the webserver in " "order for updates to be distributed. The exact configuration will vary " "depending on the web server used. For the Apache web server, please refer " "to the extref:{handbook}network-servers[Configuration of Apache servers, " "network-apache] section in the Handbook." msgstr "" "Загруженные файлы должны находиться в корневом каталоге веб-сервера, чтобы " "обновления могли распространяться. Точная конфигурация будет зависеть от " "используемого веб-сервера. Для веб-сервера Apache обратитесь к разделу " "extref:{handbook}network-servers[Настройка серверов Apache, network-apache] " "в Руководстве." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:408 msgid "" "Update client's `KeyPrint` and `ServerName` in [.filename]#/etc/freebsd-" "update.conf#, and perform updates as instructed in the extref:{handbook}" "cutting-edge[FreeBSD Update, updating-upgrading-freebsdupdate] section of " "the Handbook." msgstr "" "Обновите `KeyPrint` и `ServerName` клиента в [.filename]#/etc/freebsd-update." "conf# и выполните обновления, как указано в разделе extref:{handbook}cutting-" "edge[Обновление FreeBSD, updating-upgrading-freebsdupdate] Руководства." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:414 msgid "" "In order for FreeBSD Update Server to work properly, updates for both the " "_current_ release and the release _one wants to upgrade to_ need to be " "built. This is necessary for determining the differences of files between " "releases. For example, when upgrading a FreeBSD system from 7.1-RELEASE to " "7.2-RELEASE, updates will need to be built and uploaded to your distribution " "server for both versions." msgstr "" "Для корректной работы сервера обновлений FreeBSD Update необходимо собирать " "обновления как для текущего релиза, так и для релиза, _на который " "планируется обновление_. Это необходимо для определения различий в файлах " "между релизами. Например, при обновлении системы FreeBSD с 7.1-RELEASE до " "7.2-RELEASE потребуется собрать и загрузить на сервер распространения " "обновления для обеих версий." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:417 msgid "" "For reference, the entire run of link:../../source/articles/freebsd-update-" "server/init.txt[init.sh] is attached." msgstr "" "Для справки, полный текст выполнения link:../../source/articles/freebsd-" "update-server/init.txt[init.sh] прилагается." #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:419 #, no-wrap msgid "Building a Patch" msgstr "Построение патча" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:422 msgid "" "Every time a link:https://www.FreeBSD.org/security/advisories/[security " "advisory] or link:https://www.FreeBSD.org/security/notices/[security notice] " "is announced, a patch update can be built." msgstr "" "Каждый раз, когда объявляется link:https://www.FreeBSD.org/security/" "advisories/[консультативный документ по безопасности] или link:https://www." "FreeBSD.org/security/notices/[уведомление о безопасности], можно собрать " "обновление с исправлением." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:424 msgid "For this example, 7.1-RELEASE will be used." msgstr "Для этого примера будет использоваться версия 7.1-RELEASE." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:426 msgid "A couple of assumptions are made for a different release build:" msgstr "Несколько предположений сделано для другой сборки выпуска:" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:428 msgid "Setup the correct directory structure for the initial build." msgstr "Настройка правильной структуры каталогов для первоначальной сборки." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:429 msgid "Perform an initial build for 7.1-RELEASE." msgstr "Выполните первоначальную сборку для 7.1-RELEASE." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:431 msgid "" "Create the patch directory of the respective release under [.filename]#/usr/" "local/freebsd-update-server/patches/#." msgstr "" "Создайте каталог с патчами соответствующего выпуска в [.filename]#/usr/local/" "freebsd-update-server/patches/#." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:436 #, no-wrap msgid "" "% mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/\n" "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE\n" msgstr "" "% mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/\n" "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:441 msgid "" "As an example, take the patch for man:named[8]. Read the advisory, and grab " "the necessary file from link:https://www.FreeBSD.org/security/advisories/" "[FreeBSD Security Advisories]. More information on interpreting the " "advisory, can be found in the extref:{handbook}security[FreeBSD Handbook, " "security-advisories]." msgstr "" "В качестве примера возьмем патч для man:named[8]. Прочтите рекомендации и " "загрузите необходимый файл с link:https://www.FreeBSD.org/security/" "advisories/[FreeBSD Security Advisories]. Дополнительную информацию о том, " "как интерпретировать рекомендации, можно найти в extref:{handbook}security[" "Руководства FreeBSD, security-advisories]." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:446 msgid "" "In the https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind." "asc[security brief], this advisory is called `SA-09:12.bind`. After " "downloading the file, it is required to rename the file to an appropriate " "patch level. It is suggested to keep this consistent with official FreeBSD " "patch levels, but its name may be freely chosen. For this build, let us " "follow the currently established practice of FreeBSD and call this `p7`. " "Rename the file:" msgstr "" "В https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc[кратком " "обзоре безопасности] этот совет называется `SA-09:12.bind`. После загрузки " "файла необходимо переименовать его в соответствии с уровнем исправления. " "Рекомендуется сохранять это в соответствии с официальными уровнями " "исправлений FreeBSD, но имя может быть выбрано свободно. Для данной сборки " "давайте последуем текущей установленной практике FreeBSD и назовем его `p7`. " "Переименуйте файл:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:450 #, no-wrap msgid "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind\n" msgstr "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind\n" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:456 msgid "" "When running a patch level build, it is assumed that previous patches are in " "place. When a patch build is run, it will run all patches contained in the " "patch directory." msgstr "" "При выполнении сборки уровня патча предполагается, что предыдущие патчи уже " "установлены. При запуске сборки патча будут выполнены все патчи, " "содержащиеся в каталоге патчей." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:458 msgid "" "There can be custom patches added to any build. Use the number zero, or any " "other number." msgstr "" "В сборку могут быть добавлены пользовательские патчи. Используйте ноль или " "любое другое число." #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:464 msgid "" "It is up to the administrator of the FreeBSD Update Server to take " "appropriate measures to verify the authenticity of every patch." msgstr "" "Задача администратора сервера FreeBSD Update — принимать соответствующие " "меры для проверки подлинности каждого патча." #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:468 msgid "" "At this point, a _diff_ is ready to be built. The software checks first to " "see if a [.filename]#scripts/init.sh# has been run on the respective release " "prior to running the diff build." msgstr "" "На этом этапе _diff_ готов к сборке. Программное обеспечение сначала " "проверяет, был ли запущен [.filename]#scripts/init.sh# для соответствующего " "выпуска перед выполнением сборки diff." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:473 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/diff.sh amd64 7.1-RELEASE 7\n" msgstr "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/diff.sh amd64 7.1-RELEASE 7\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:476 msgid "What follows is a sample of a _differential_ build run." msgstr "Вот пример выполнения _дифференциальной_ сборки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:550 #, no-wrap msgid "" "# sh -e scripts/diff.sh amd64 7.1-RELEASE 7\n" "Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7\n" "...\n" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 26 2009 18:13:46)\n" "v1.2 (Aug 26 2009 18:11:44)\n" "@()FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" "FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.1-RELEASE-p7\n" "Wed Aug 26 17:29:15 UTC 2009\n" "Wed Aug 26 17:29:15 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Wed Aug 26 17:20:39 UTC 2009\n" "Wed Aug 26 17:29:30 UTC 2009\n" "Aug 26 2009\n" "ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "...\n" msgstr "" "# sh -e scripts/diff.sh amd64 7.1-RELEASE 7\n" "Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7\n" "...\n" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 26 2009 18:13:46)\n" "v1.2 (Aug 26 2009 18:11:44)\n" "@()FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" "FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.1-RELEASE-p7\n" "Wed Aug 26 17:29:15 UTC 2009\n" "Wed Aug 26 17:29:15 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Wed Aug 26 17:20:39 UTC 2009\n" "Wed Aug 26 17:29:30 UTC 2009\n" "Aug 26 2009\n" "ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "...\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:553 msgid "Updates are printed, and approval is requested." msgstr "Обновления выводятся на экран, и запрашивается подтверждение." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:572 #, no-wrap msgid "" "New updates:\n" "kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|\n" "kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|\n" "kernel|generic|/|d|0|0|0755|0||\n" "src|base|/|d|0|0|0755|0||\n" "src|bin|/|d|0|0|0755|0||\n" "src|cddl|/|d|0|0|0755|0||\n" "src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|\n" "src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|\n" "src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|\n" "...\n" "FreeBSD/amd64 7.1-RELEASE update build complete. Please review\n" "the list of build stamps printed above and the list of updated\n" "files to confirm that they look sensible, then run\n" " sh -e approve.sh amd64 7.1-RELEASE\n" "to sign the build.\n" msgstr "" "New updates:\n" "kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|\n" "kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|\n" "kernel|generic|/|d|0|0|0755|0||\n" "src|base|/|d|0|0|0755|0||\n" "src|bin|/|d|0|0|0755|0||\n" "src|cddl|/|d|0|0|0755|0||\n" "src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|\n" "src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|\n" "src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|\n" "...\n" "FreeBSD/amd64 7.1-RELEASE update build complete. Please review\n" "the list of build stamps printed above and the list of updated\n" "files to confirm that they look sensible, then run\n" " sh -e approve.sh amd64 7.1-RELEASE\n" "to sign the build.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:575 msgid "Follow the same process as noted before for approving a build:" msgstr "Следуйте той же процедуре, что и ранее, для подтверждения сборки:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:584 #, no-wrap msgid "" "# sh -e scripts/approve.sh amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE\n" msgstr "" "# sh -e scripts/approve.sh amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE\n" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:590 #, no-wrap msgid "" "The FreeBSD/amd64 7.1-RELEASE update build has been signed and is\n" "ready to be uploaded. Remember to run\n" " sh -e umountkey.sh\n" "to unmount the decrypted key once you have finished signing all\n" "the new builds.\n" msgstr "" "The FreeBSD/amd64 7.1-RELEASE update build has been signed and is\n" "ready to be uploaded. Remember to run\n" " sh -e umountkey.sh\n" "to unmount the decrypted key once you have finished signing all\n" "the new builds.\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:593 msgid "After approving the build, upload the software:" msgstr "После утверждения сборки загрузите программное обеспечение:" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:598 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.1-RELEASE\n" msgstr "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.1-RELEASE\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:601 msgid "" "For reference, the entire run of link:../../source/articles/freebsd-update-" "server/diff.txt[diff.sh] is attached." msgstr "" "Для справки, полный запуск скрипта link:../../source/articles/freebsd-update-" "server/diff.txt[diff.sh] прилагается." #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:603 #, no-wrap msgid "Tips" msgstr "Советы" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:606 msgid "" "If a custom release is built using the native `make release` extref:{releng}" "[procedure, release-build], freebsd-update-server code will work from your " "release. As an example, a release without ports or documentation can be " "built by clearing functionality pertaining to documentation subroutines " "`findextradocs ()`, `addextradocs ()` and altering the download location in " "`fetchiso ()`, respectively, in [.filename]#scripts/build.subr#. As a last " "step, change the man:sha256[1] hash in [.filename]#build.conf# under your " "respective release and architecture and you are ready to build off your " "custom release." msgstr "" "Если пользовательская сборка создана с использованием стандартной процедуры " "`make release` extref:{releng}[procedure, release-build], код freebsd-update-" "server будет работать с вашей сборкой. Например, сборка без портов или " "документации может быть создана путем отключения функциональности, " "относящейся к подпрограммам документации `findextradocs ()`, `addextradocs " "()`, и изменения места загрузки в `fetchiso ()` соответственно в файле [." "filename]#scripts/build.subr#. В завершение измените хеш man:sha256[1] в " "файле [.filename]#build.conf# для соответствующей сборки и архитектуры, " "после чего можно приступать к сборке вашей пользовательской версии." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:617 #, no-wrap msgid "" "# Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts\n" "# of the world|doc subcomponent are missing from the latter, and\n" "# build a tarball out of them.\n" "findextradocs () {\n" "}\n" "# Add extra docs to ${WORKDIR}/$1\n" "addextradocs () {\n" "}\n" msgstr "" "# Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts\n" "# of the world|doc subcomponent are missing from the latter, and\n" "# build a tarball out of them.\n" "findextradocs () {\n" "}\n" "# Add extra docs to ${WORKDIR}/$1\n" "addextradocs () {\n" "}\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:620 msgid "" "Adding `-j _NUMBER_` flags to `buildworld` and `obj` targets in the [." "filename]#scripts/build.subr# script may speed up processing depending on " "the hardware used, however it is not necessary. Using these flags in other " "targets is not recommended, as it may cause the build to become unreliable." msgstr "" "Добавление флагов `-j _ЧИСЛО_` к целям `buildworld` и `obj` в скрипте [." "filename]#scripts/build.subr# может ускорить обработку в зависимости от " "используемого оборудования, однако это не обязательно. Использование этих " "флагов в других целях не рекомендуется, так как это может привести к " "ненадёжности сборки." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:632 #, no-wrap msgid "" " # Build the world\n" "\t\t log \"Building world\"\n" "\t\t cd /usr/src &&\n" "\t\t make -j 2 ${COMPATFLAGS} buildworld 2>&1\n" "\t\t# Distribute the world\n" "\t\t log \"Distributing world\"\n" "\t\t cd /usr/src/release &&\n" "\t\t make -j 2 obj &&\n" "\t\t make ${COMPATFLAGS} release.1 release.2 2>&1\n" msgstr "" " # Build the world\n" "\t\t log \"Building world\"\n" "\t\t cd /usr/src &&\n" "\t\t make -j 2 ${COMPATFLAGS} buildworld 2>&1\n" "\t\t# Distribute the world\n" "\t\t log \"Distributing world\"\n" "\t\t cd /usr/src/release &&\n" "\t\t make -j 2 obj &&\n" "\t\t make ${COMPATFLAGS} release.1 release.2 2>&1\n" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:635 msgid "" "Create an appropriate extref:{handbook}network-servers[DNS, network-dns] SRV " "record for the update server, and put others behind it with variable " "weights. Using this facility will provide update mirrors, however this tip " "is not necessary unless you wish to provide a redundant service." msgstr "" "Создайте соответствующую extref:{handbook}network-servers[DNS, network-dns] " "SRV-запись для сервера обновлений и разместите остальные за ним с " "переменными весами. Использование этой возможности обеспечит зеркала для " "обновлений, однако данный совет не обязателен, если вы не хотите " "предоставлять избыточный сервис." #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:641 #, no-wrap msgid "" "_http._tcp.update.myserver.com.\t\tIN SRV 0 2 80 host1.myserver.com.\n" "\t\t\t\t\tIN SRV 0 1 80 host2.myserver.com.\n" "\t\t\t\t\tIN SRV 0 0 80 host3.myserver.com.\n" msgstr "" "_http._tcp.update.myserver.com.\t\tIN SRV 0 2 80 host1.myserver.com.\n" "\t\t\t\t\tIN SRV 0 1 80 host2.myserver.com.\n" "\t\t\t\t\tIN SRV 0 0 80 host3.myserver.com.\n" diff --git a/documentation/content/ru/articles/geom-class/_index.adoc b/documentation/content/ru/articles/geom-class/_index.adoc index f846c40d61..58c72a91b3 100644 --- a/documentation/content/ru/articles/geom-class/_index.adoc +++ b/documentation/content/ru/articles/geom-class/_index.adoc @@ -1,362 +1,362 @@ --- authors: - author: 'Ivan Voras' email: ivoras@FreeBSD.org description: 'Руководство по внутреннему устройству GEOM и созданию собственного класса GEOM' tags: ["GEOM", "kernel", "modules", "FreeBSD"] title: 'Создание класса GEOM' trademarks: ["freebsd", "intel", "general"] --- = Создание класса GEOM :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/geom-class/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Эта статья документирует некоторые начальные выкладки в разработке GEOM-классов, а также модулей ядра в общем. Предполагается, что читатель близко знаком с программированием на Си в контексте пространства пользовательских процессов (userland). ''' toc::[] [[intro]] == Введение [[intro-docs]] === Documentation Документация по программированию для ядра скудная, это одна из немногих областей программирования, где почти нет хороших учебных пособий, и совет "читай исходники!" - сохраняет свою справедливость. Однако, существует несколько статей и книг разной актуальности, которые рекомендуются к изучению перед тем, как начать программировать: -* extref:{developers-handbook}[Руководство FreeBSD для разработчиков] - часть Проекта Документации FreeBSD, ничего специфичного о программировании ядра в нем нет, зато есть немного общей полезной информации. +* extref:{developers-handbook}[Руководство FreeBSD для разработчиков] - часть Проекта Документации FreeBSD, ничего специфичного о программировании ядра в нём нет, зато есть немного общей полезной информации. * extref:{arch-handbook}[Руководство по Архитектуре FreeBSD] - также является частью Проекта Документации FreeBSD, содержит описания некоторых низкоуровневых средств и процедур. Уделите внимание разделу номер 13 - extref:{arch-handbook}[Написание драйверов устройств для FreeBSD, driverbasics]. * Несколько интересных статей об устройстве ядра можно найти на сайте http://www.freebsddiary.com[FreeBSD Diary]. * Страницы из раздела номер 9 системного справочника, содержат важную документацию по функциям ядра. * Страница справочника man:geom[4], а также http://phk.freebsd.dk/pubs/[слайды Пола-Хеннинга Кампа ] - общее представление о подсистеме GEOM. * Страницы справочника man:g_bio[9], man:g_event[9], man:g_data[9], man:g_geom[9], man:g_provider[9], man:g_consumer[9], man:g_access[9], а также другие, связанные с вышеупомянутыми и раскрывающие специфический функционал подсистемы GEOM. * Страница справочника man:style[9] - документирует соглашения о стиле оформления кода, которые обязаны быть соблюдены если вы планируете передать ваш код в Subversion репозиторий FreeBSD. [[prelim]] == Подготовка Для того, чтоб заниматься разработками для ядра, желательно иметь два отдельных компьютера. Один из них предназначен для среды разработки и исходных кодов, а второй - для запуска тестов отлаживаемого кода. Второму компьютеру для работы достаточно иметь возможность выполнять начальную загрузку по сети и монтирование файловых систем по сети. В этой ситуации, если отлаживаемый код содержит ошибки и вызовет аварийную остановку системы, то это не повлечет порчу или утерю исходного кода . Второму компьютеру даже не потребуется иметь свой монитор, достаточно будет соединения асинхронных портов кабелем RS-232 или соединения при помощи KVM-устройства. Но так как далеко не у каждого есть два или более компьютеров под рукой, есть пара способов подготовить иную "живую" систему для разработки кода для ядра. Один из них - это разработка в http://www.vmware.com/[VMWare] или http://www.qemu.org/[QEmu] виртуальной машине (это лучшее из доступного, после, конечно-же, выделенного для тестов компьютера). [[prelim-system]] === Настройка системы для разработки Прежде всего необходимо иметь в ядре поддержку `INVARIANTS`. Добавьте следующие строки в файл конфигурации ядра: [.programlisting] .... options INVARIANT_SUPPORT options INVARIANTS .... Для большей информативности при отладке включите поддержку WITNESS, которая будет предупреждать вас в случае возникновения взаимоблокировок: [.programlisting] .... options WITNESS_SUPPORT options WITNESS .... Также включите отладочные символы, если планируете выполнять отладку по дампам аварийных отказов: [.programlisting] .... makeoptions DEBUG=-g .... Установка отладочного ядра обычным способом (`make installkernel`) не даст привычного результата: файл ядра будет называться [.filename]#kernel.debug# и будет находиться в [.filename]#/usr/obj/usr/src/sys/KERNELNAME/#. Для удобства, отладочное ядро необходимо скопировать в [.filename]#/boot/kernel/#. Также удобно иметь включенный отладчик ядра, так вы сможете исследовать паники сразу-же после их возникновения. Для включения отладчика добавьте следующие строки в файл конфигурации ядра: [.programlisting] .... options KDB options DDB options KDB_TRACE .... Для автоматического запуска отладчика ядра после возникновения паники может понадобиться установить переменную sysctl: [.programlisting] .... debug.debugger_on_panic=1 .... Паники системы будут происходить, поэтому уделите внимание кэшу файловой системы. Обычно, при включенном механизме softupdates, последняя версия файла может быть утеряна если паника произошла раньше сбрасывания кэша на устройство хранения. Выключение механизма softupdates (посредством монтирования файловой системы с опцией "sync") значительно сказывается на производительности и, опять-же, не гарантирует целостности данных. Как компромисс, можно сократить задержки сбрасывания кэша механизма softupdates. Есть три переменных sysctl, значения которых необходимо изменить (лучше всего - прописав их в [.filename]#/etc/sysctl.conf#): [.programlisting] .... kern.filedelay=5 kern.dirdelay=4 kern.metadelay=3 .... Значения этих переменных - секунды. Для отладки паник ядра необходимы дампы памяти. Так как паника ядра может "сломать" файловую систему, дамп сначала сохраняется в "сырой" раздел. Обычно, это своп-раздел. Поэтому, размер своп-раздела должен быть не меньше размера ОЗУ компьютера. При последующей загрузке дамп копируется в обычный файл. Это происходит сразу-же после проверки и монтирования файловых систем, но перед активированием раздела свопа. Такое поведение контролируется следующими переменными [.filename]#/etc/rc.conf#: [.programlisting] .... dumpdev="/dev/ad0s4b" dumpdir="/usr/core" .... Переменная `dumpdev` указывает на раздел подкачки, а `dumpdir` сообщает системе куда перемещать дамп ядра при следующей загрузке. -Сохранение дампа ядра - процесс медленный, и, если у вашего компьютера много оперативной памяти (>256M) и если паники случаются часто, то ожидание сохранения дампов может начать раздражать (вспомним, что над дампом происходит две операции: сохранение в своп-файл и перемещение на файловую систему). В таком случае может оказаться удобным ограничивание объема используемой системой памяти путем установки переменной в [.filename]#/boot/loader.conf#: +Сохранение дампа ядра - процесс медленный, и, если у вашего компьютера много оперативной памяти (>256M) и если паники случаются часто, то ожидание сохранения дампов может начать раздражать (вспомним, что над дампом происходит две операции: сохранение в своп-файл и перемещение на файловую систему). В таком случае может оказаться удобным ограничивание объёма используемой системой памяти путем установки переменной в [.filename]#/boot/loader.conf#: [.programlisting] .... hw.physmem="256M" .... Если паники случаются часто и размер файловых систем большой (или же вы просто не доверяете softupdates и фоновой проверке файловых систем), рекомендуется отключить фоновую проверку файловых систем посредством установки переменной в [.filename]#/etc/rc.conf#: [.programlisting] .... background_fsck="NO" .... В этом случае файловые системы будут проверяться только при необходимости. Также заметьте, что в случае использования фоновой проверки, новая паника может случиться в то время, когда проверяются диски. Другими словами, наиболее безопасный способ - не иметь много локальных файловых систем, а использовать второй компьютер в качестве NFS-сервера. [[prelim-starting]] === Начало проекта Для написания нового класса GEOM необходимо создать подкаталог в любом доступном пользователю каталоге. Совсем не обязательно, чтоб ваш модуль изначально размещался в [.filename]#/usr/src#. [[prelim-makefile]] === Makefile Правилом хорошего тона является создание [.filename]#Makefile#-ов для каждого нетривиального проекта, примером которого конечно-же является создание модулей ядра. Создание [.filename]#Makefile# - дело не сложное благодаря исчерпывающему набору вспомогательных средств, предоставляемых системой. В вкратце, вот как должен выглядеть [.filename]#Makefile# для модуля ядра: [.programlisting] .... SRCS=g_journal.c KMOD=geom_journal .include .... Этот [.filename]#Makefile# (с измененными именами файлов) подойдет к любому модулю ядра. Класс GEOM может размещаться в одном единственном модуле ядра. Если для сборки вашего модуля требуется больше, чем один файл, то перечислите их имена, разделенные пробельными символами, в переменной `SRCS`. [[kernelprog]] == Программирование в ядре FreeBSD [[kernelprog-memalloc]] === Выделение памяти Прочитайте man:malloc[9] - выделение памяти лишь немного отличается от своего эквивалента, используемого в пространстве пользовательских процессов (userland). Наиболее приметно то, что `malloc`() и `free`() принимают дополнительные параметры, которые описаны в странице справочника. Тип "malloc_type" необходимо объявить в секции деклараций файла с исходным кодом, например: [.programlisting] .... static MALLOC_DEFINE(M_GJOURNAL, "gjournal data", "GEOM_JOURNAL Data"); .... Для того, чтобы можно было использовать этот макрос, необходимо включить следующие заголовочные файлы: [.filename]#sys/param.h#, [.filename]#sys/kernel.h# и [.filename]#sys/malloc.h#. -Существует еще один механизм выделения памяти - UMA (Universal Memory Allocator), описанный в man:uma[9]. Это специфический метод, преимущественно предназначенный для быстрого выделения памяти под списки, состоящие из элементов одинакового размера (например, динамические массивы структур). +Существует ещё один механизм выделения памяти - UMA (Universal Memory Allocator), описанный в man:uma[9]. Это специфический метод, преимущественно предназначенный для быстрого выделения памяти под списки, состоящие из элементов одинакового размера (например, динамические массивы структур). [[kernelprog-lists]] === Очереди и списки -Ознакомьтесь с man:queue[3] Во множестве случаев вам необходимо будет организовывать и управлять такой структурой данных, как списки. К счастью, эта структура данных реализована несколькими способами в виде макросов на Си, а также включена в систему. Наиболее гибкий и часто употребляемый тип списка - TAILQ. Этот тип списка также один из наиболее требовательных к памяти (его элементы - с двойными связями), а также - наиболее медленный (однако счет идет на несколько инструкций ЦПУ, поэтому последнее утверждение не следует воспринимать в всерьез). +Ознакомьтесь с man:queue[3] Во множестве случаев вам необходимо будет организовывать и управлять такой структурой данных, как списки. К счастью, эта структура данных реализована несколькими способами в виде макросов на Си, а также включена в систему. Наиболее гибкий и часто употребляемый тип списка - TAILQ. Этот тип списка также один из наиболее требовательных к памяти (его элементы - с двойными связями), а также - наиболее медленный (однако счет идёт на несколько инструкций ЦПУ, поэтому последнее утверждение не следует воспринимать в всерьез). Если важна скорость получения данных, то возьмите на вооружение man:tree[3] и man:hashinit[9]. [[kernelprog-bios]] === BIOs -Структура `bio` используется для всех операций ввода/вывода, касающихся GEOM. Она содержит информацию о том, какое устройство ('поставщик geom') должно ответить на запрос, тип запроса, смещение, длину и указатель на буфер, а также набор "определенных пользователем" флагов и полей . +Структура `bio` используется для всех операций ввода/вывода, касающихся GEOM. Она содержит информацию о том, какое устройство ('поставщик geom') должно ответить на запрос, тип запроса, смещение, длину и указатель на буфер, а также набор "определённых пользователем" флагов и полей . -Важным моментом является то, что `bio` обрабатываются асинхронно. Это значит, что во многих частях кода нет аналога к man:read[2] и man:write[2] функциям из пространства пользовательских процессов, которые не возвращают управление пока не выполнится системный вызов. Скорее, по завершении обработки запроса (или в случае ошибки при обработке) как извещение вызывается определенная пользователем функция. +Важным моментом является то, что `bio` обрабатываются асинхронно. Это значит, что во многих частях кода нет аналога к man:read[2] и man:write[2] функциям из пространства пользовательских процессов, которые не возвращают управление пока не выполнится системный вызов. Скорее, по завершении обработки запроса (или в случае ошибки при обработке) как извещение вызывается определённая пользователем функция. -Асинхронная модель программирования в чем-то сложней, нежели чаще используемая императивная модель, используемая в пространстве пользовательских процессов; в любом случае, привыкание займет некоторое время. В некоторых случаях могут быть использованы вспомогательные функции `g_write_data`() и `g_read_data`(), но __далеко не всегда__. В частности, эти функции не могут использоваться когда захвачен мьютекс; например, мьютекс GEOM-топологии или внутренний мьютекс, удерживаемый в ходе выполнения `.start`() или `.stop`(). +Асинхронная модель программирования в чем-то сложней, нежели чаще используемая императивная модель, используемая в пространстве пользовательских процессов; в любом случае, привыкание займёт некоторое время. В некоторых случаях могут быть использованы вспомогательные функции `g_write_data`() и `g_read_data`(), но __далеко не всегда__. В частности, эти функции не могут использоваться когда захвачен мьютекс; например, мьютекс GEOM-топологии или внутренний мьютекс, удерживаемый в ходе выполнения `.start`() или `.stop`(). [[geom]] == Программирование в системе GEOM [[geom-ggate]] === Ggate Если максимальная производительность не требуется, то более простой способ совершать преобразования данных - это выполнять их в пространстве пользовательских процессов посредством ggate (GEOM gate). К недостаткам следует отнести невозможность простого переноса кода в ядро. [[geom-class]] === Класс GEOM Класс GEOM выполняет преобразования данных. Эти преобразования могут быть скомпонованы друг с другом в виде дерева. Экземпляр класса GEOM называют __geom__. В каждом классе GEOM есть несколько "методов класса", которые вызываются когда экземпляра класса нет в наличии (или же они не привязаны к конкретному экземпляру класса): * `.init` вызывается тогда, когда системе GEOM становится известно о классе GEOM (например, когда загружается модуль ядра). * `.fini` будет вызван в случае отказа GEOM системы от класса (например, при выгрузке модуля) * `.taste` вызывается, когда в системе появляется новый класс или поставщик geom ("provider"). Если соответствие найдено, то эта функция обычно создает и запускает экземпляр geom. * `.destroy_geom` вызывается при необходимости разрушить экземпляр geom * `.ctlconf` будет вызван, когда пользователь запросит изменение конфигурации существующего экземпляра geom Также определены функции событий GEOM, которые копируются в экземпляр geom. Поле `.geom` в структуре `g_class` - это список (LIST) экземпляров geom, реализованных из класса. Эти функции вызываются из g_event потока ядра. [[geom-softc]] === Softc "softc" - это устаревший термин для "приватных данных драйвера" ("driver private data"). Название вероятней всего происходит от устаревшего термина "software control block". В системе GEOM softc это структура (точнее: указатель на структуру) которая может быть присоединена к экземпляру geom и может содержать приватные данные экземпляра. У большинства классов GEOM есть следующие члены: * `struct g_provider *provider` : "поставщик geom" предоставляемый данным экземпляром geom * `uint16_t n_disks` : Количество потребителей geom ("consumer"), обслуживаемых данным экземпляром geom * `struct g_consumer \**disks` : Массив `struct g_consumer*`. (Невозможно обойтись одинарным указателем, потому что система GEOM создает для нас структуры struct g_consumer). Структура `softc` содержит состояние экземпляра geom. У каждого экземпляра есть свой softc. [[geom-metadata]] === Метаданные Формат метаданных в той или иной мере зависит от конкретного класса, но _обязан_ начинаться с: * 16-байтного буфера для подписи - строки с завершающим нулем (обычно это имя класса) * uint32 идентификатора версии Подразумевается, что классы geom знают как обращаться с метаданными с идентификаторами версий ниже, чем их собственные. Метаданные размещаются в последнем секторе поставщика geom (поэтому обязаны целиком умещаться в нем). (Все это зависит от реализации, но весь существующий код работает подобно описанному и поддерживается библиотеками.) [[geom-creating]] === Маркирование/создание экземпляра geom Последовательность событий следующая: * пользователь запускает служебную программу man:geom[8] * программа решает каким классом geom ей придется управлять и ищет библиотеку [.filename]#geom_CLASSNAME.so# (которая обычно находится в [.filename]#/lib/geom#). * она открывает библиотеку при помощи man:dlopen[3], извлекает вспомогательные функции и определения параметров командной строки. Вот так происходит создание/маркирование нового экземпляра geom: * man:geom[8] ищет команду в аргументах командной строки (обычно это `label`) и вызывает вспомогательную функцию. * Вспомогательная функция проверяет параметры и собирает метаданные, которые записываются во все вовлеченные поставщики geom. * Это "повреждает (spoil)" существующие экземпляры geom (если они были) и порождает новый виток "тестирования" поставщиков geom. Целевой класс geom опознает метаданные и активирует экземпляр geom. (Приведенная выше последовательность событий зависит от конкретной реализации, но весь существующий код работает подобно описанному и поддерживается библиотеками.) [[geom-command]] === Структура команд geom Вспомогательная библиотека [.filename]#geom_CLASSNAME.so# экспортирует структуру `class_commands`, которая является массивом элементов `struct g_command`. Эти команды одинакового формата и выглядят следующим образом: [.programlisting] .... verb [-options] geomname [other] .... Общими командами являются: * label - записать метаданные в устройства, чтобы они могли быть опознаны в процессе тестирования и использованы в соответствующих экземплярах geom * destroy - разрушить метаданные, за которым последует разрушение экземпляров geom Общие опции: * `-v` : детальный вывод * `-f` : принудить Некоторые операции, к примеру маркирование метаданными и разрушение метаданных могут быть выполнены из пространства пользовательских процессов. Для этого, структура `g_command` содержит поле `gc_func`, которое может быть установлено на функцию (в том-же [.filename]#.so#), которая будет вызвана для обработки команды. В случае, когда `gc_func` равно NULL, команда будет передана модулю ядра: функции `.ctlreq` класса GEOM. [[geom-geoms]] === Экземпляры geom У экземпляров классов GEOM есть внутренние данные, которые хранятся в структурах softc, а также есть некоторые функции, посредством которых они реагируют на внешние события. Функции событий: * `.access` : просчитывает права доступа (чтение/запись/исключительный доступ) * `.dumpconf` : возвращает информацию о экземпляре geom; формат XML * `.orphan` : вызывается, когда отсоединяется любой из низлежащих поставщиков geom * `.spoiled` : вызывается, когда производится запись в низлежащий поставщик geom * `.start` : обрабатывает ввод/вывод Эти функции вызываются из ядерного потока `g_down` и в этом контексте не может быть блокировок (поищите определение "блокировка" в других источниках), что немного ограничивает свободу действий, но способствует быстроте обработки. Из вышеупомянутых, наиболее важной и выполняющей полезную работу функцией является `.start`(), которая вызывается всякий раз, когда поставщику geom, управляемому экземпляром класса, приходит запрос BIO. [[geom-threads]] === Потоки выполнения системы geom Системой GEOM в ядре ОС создаются и используются три потока выполнения (kernel threads): -* `g_down` : Обрабатывает запросы, приходящие от высокоуровневых сущностей (таких, как запросы из пространства пользовательских процессов) на пути к физическим устройствам +* `g_down` : Обрабатывает запросы, приходящие от высокоуровневых сущностей (таких как запросы из пространства пользовательских процессов) на пути к физическим устройствам * `g_up` : Обрабатывает ответы от драйверов устройств на запросы, выполненные высокоуровневыми сущностями * `g_event` : Отрабатывает в остальных случаях, как-то создание экземпляра geom, просчитывание прав доступа, события "повреждения" и т.п. Когда пользовательский процесс запрашивает "прочитать данные X по смещению Y файла", происходит следующее: * Файловая система преобразует запрос в экземпляр структуры bio и передаёт его системе GEOM. Файловая система "знает", что экземпляр geom должен обработать запрос, так как файловые системы размещаются непосредственно над экземпляром geom. * Запрос завершается вызовом функции `.start`() в потоке g_down и достигает верхнего экземпляра geom. * Верхний экземпляр geom (например, это секционировщик разделов (partition slicer)) определяет, что запрос должен быть переадресован нижестоящему экземпляру geom (к примеру, драйверу диска). Вышестоящий экземпляр geom создает копию запроса bio (запросы bio _ВСЕГДА_ копируются при передаче между экземплярами geom при помощи `g_clone_bio`()!), изменяет поля смещения и целевого поставщика geom и запускает на обработку копию при помощи функции `g_io_request`() * Драйвер диска также получает запрос bio, как вызов функции `.start`() в потоке `g_down`. Драйвер обращается к контроллеру диска, получает блок данных и вызывает функцию `g_io_deliver`() используя копию запроса bio. * Теперь, извещение о завершении bio "всплывает" в потоке `g_up`. Сначала в потоке `g_up` вызывается функция `.done`() секционировщика разделов, последний использует полученную информацию, разрушает клонированный экземпляр структуры bio посредством `g_destroy_bio`() и вызывает `g_io_deliver`() используя первоначальный запрос. * Файловая система получает данные и передаёт их пользовательскому процессу. За информацией о том, как данные передаются в структуре `bio` между экземплярами geom, смотрите man:g_bio[9] (обратите внимание на использование полей `bio_parent` и `bio_children`). Важный момент в том, что __НЕЛЬЗЯ ДОПУСКАТЬ БЛОКИРОВОК В ПОТОКАХ G_UP И G_DOWN__. Вот неполный перечень того, что нельзя делать в этих потоках: * Вызывать функции `msleep`() или `tsleep`(). * Использовать функции `g_write_data`() и `g_read_data`(), так как они блокируются в момент обмена данными с потребителями geom. * Ожидать ввод/вывод. * Вызывать man:malloc[9] и `uma_zalloc`() с установленным флагом `M_WAITOK` * Использовать man:sx[9] Это ограничение на код GEOM призвано избежать от "засорения" пути запроса ввода/вывода, так как блокировки обычно не имеют четких временных границ, и нет гарантий на занимаемое время (также на то есть и другие технические причины). Это также значит, что в вышеупомянутых потоках сколь-нибудь сложные операции выполнить нельзя, например: любое сложное преобразование требует выделения памяти. К счастью решение есть: создание дополнительных ядерных потоков. [[geom-kernelthreads]] === Ядерные потоки выполнения, предназначенные для использования в коде geom -Ядерные потоки выполнения создаются функцией man:kthread_create[9], в своем поведении они схожи с потоками, созданными в пространстве пользовательских процессов, но есть одно отличие: они не могут известить вызвавший их поток о своем завершении; по завершению - необходимо вызывать man:kthread_exit[9]. +Ядерные потоки выполнения создаются функцией man:kthread_create[9], в своём поведении они схожи с потоками, созданными в пространстве пользовательских процессов, но есть одно отличие: они не могут известить вызвавший их поток о своём завершении; по завершению - необходимо вызывать man:kthread_exit[9]. В коде GEOM обычное назначение этих потоков - разгрузить поток `g_down` (функцию `.start`() ) от обработки запросов. Эти потоки подобны "обработчикам событий" ("event handlers"): у них есть очередь событий (которая наполняется событиями от разных функций из разных потоков; очередь необходимо защищать мьютексом), события из очереди выбираются одно за другим и обрабатываются в большом блоке `switch`(). Основное преимущество использования отдельного потока, который обрабатывает запросы ввода/вывода, то, что он может блокироваться по мере необходимости. Это, несомненно, привлекательно, но должно быть хорошо обдумано. Блокирование - хорошо и удобно, но может существенно снизить производительность преобразований данных в системе GEOM. Особо требовательные к производительности классы могут делать всю работу в функции `.start`(), уделяя особое внимание ошибкам при работе с памятью. Еще одно преимущество потока "обработчика событий" это сериализация всех запросов и ответов, приходящих с разных потоков geom в один поток. Это также удобно, но может быть медленным. В большинстве случаев, обработка запросов функцией `.done`() может быть оставлена потоку `g_up`. У мьютексов в ядре FreeBSD (man:mutex[9]) есть одно различие с их аналогами из пространства пользовательских процессов - во время удержания мьютекса в коде не должно быть блокировки. Если в коде необходимо блокирование, то лучше использовать man:sx[9]. С другой стороны, если вся ваша работа выполняется в одном потоке, вы можете обойтись вообще без мьютексов. diff --git a/documentation/content/ru/articles/geom-class/_index.po b/documentation/content/ru/articles/geom-class/_index.po index b30f6e8c0c..073bbc1fe4 100644 --- a/documentation/content/ru/articles/geom-class/_index.po +++ b/documentation/content/ru/articles/geom-class/_index.po @@ -1,1396 +1,1396 @@ # 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. +# Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2025-11-20 21:22+0300\n" -"PO-Revision-Date: 2025-11-12 04:45+0000\n" +"POT-Creation-Date: 2026-03-15 14:39+0300\n" +"PO-Revision-Date: 2026-03-09 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/articles/geom-class/_index.adoc:1 #, no-wrap msgid "A guide to GEOM internals, and writing your own GEOM class" msgstr "Руководство по внутреннему устройству GEOM и созданию собственного класса GEOM" #. type: Title = #: documentation/content/en/articles/geom-class/_index.adoc:1 #: documentation/content/en/articles/geom-class/_index.adoc:11 #, no-wrap msgid "Writing a GEOM Class" msgstr "Создание класса GEOM" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:44 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:47 msgid "" "This text documents some starting points in developing GEOM classes, and " "kernel modules in general. It is assumed that the reader is familiar with C " "userland programming." msgstr "" "Эта статья документирует некоторые начальные выкладки в разработке GEOM-" "классов, а также модулей ядра в общем. Предполагается, что читатель близко " "знаком с программированием на Си в контексте пространства пользовательских " "процессов (userland)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:49 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/geom-class/_index.adoc:53 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:56 #, no-wrap msgid "Documentation" msgstr "Documentation" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:60 msgid "" "Documentation on kernel programming is scarce - it is one of few areas where " "there is nearly nothing in the way of friendly tutorials, and the phrase " "\"use the source!\" really holds true. However, there are some bits and " "pieces (some of them seriously outdated) floating around that should be " "studied before beginning to code:" msgstr "" "Документация по программированию для ядра скудная, это одна из немногих " "областей программирования, где почти нет хороших учебных пособий, и совет " "\"читай исходники!\" - сохраняет свою справедливость. Однако, существует " "несколько статей и книг разной актуальности, которые рекомендуются к " "изучению перед тем, как начать программировать:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:62 msgid "" "The extref:{developers-handbook}[FreeBSD Developer's Handbook] - part of the " "documentation project, it does not contain anything specific to kernel " "programming, but rather some general useful information." msgstr "" "extref:{developers-handbook}[Руководство FreeBSD для разработчиков] - часть " "Проекта Документации FreeBSD, ничего специфичного о программировании ядра в " -"нем нет, зато есть немного общей полезной информации." +"нём нет, зато есть немного общей полезной информации." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:63 msgid "" "The extref:{arch-handbook}[FreeBSD Architecture Handbook] - also from the " "documentation project, contains descriptions of several low-level facilities " "and procedures. The most important chapter is 13, extref:{arch-handbook}" "[Writing FreeBSD device drivers, driverbasics]." msgstr "" "extref:{arch-handbook}[Руководство по Архитектуре FreeBSD] - также является " "частью Проекта Документации FreeBSD, содержит описания некоторых " "низкоуровневых средств и процедур. Уделите внимание разделу номер 13 - " "extref:{arch-handbook}[Написание драйверов устройств для FreeBSD, " "driverbasics]." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:64 msgid "" "The Blueprints section of http://www.freebsddiary.org[FreeBSD Diary] web " "site - contains several interesting articles on kernel facilities." msgstr "" "Несколько интересных статей об устройстве ядра можно найти на сайте http://" "www.freebsddiary.com[FreeBSD Diary]." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:65 msgid "" "The man pages in section 9 - for important documentation on kernel functions." msgstr "" "Страницы из раздела номер 9 системного справочника, содержат важную " "документацию по функциям ядра." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:66 msgid "" "The man:geom[4] man page and http://phk.freebsd.dk/pubs/[PHK's GEOM slides] " "- for general introduction of the GEOM subsystem." msgstr "" "Страница справочника man:geom[4], а также http://phk.freebsd.dk/pubs/[слайды " "Пола-Хеннинга Кампа ] - общее представление о подсистеме GEOM." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:67 msgid "" "Man pages man:g_bio[9], man:g_event[9], man:g_data[9], man:g_geom[9], " "man:g_provider[9], man:g_consumer[9], man:g_access[9] & others linked from " "those, for documentation on specific functionalities." msgstr "" "Страницы справочника man:g_bio[9], man:g_event[9], man:g_data[9], " "man:g_geom[9], man:g_provider[9], man:g_consumer[9], man:g_access[9], а " "также другие, связанные с вышеупомянутыми и раскрывающие специфический " "функционал подсистемы GEOM." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:68 msgid "" "The man:style[9] man page - for documentation on the coding-style " "conventions which must be followed for any code which is to be committed to " "the FreeBSD tree." msgstr "" "Страница справочника man:style[9] - документирует соглашения о стиле " "оформления кода, которые обязаны быть соблюдены если вы планируете передать " "ваш код в Subversion репозиторий FreeBSD." #. type: Title == #: documentation/content/en/articles/geom-class/_index.adoc:70 #, no-wrap msgid "Preliminaries" msgstr "Подготовка" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:77 msgid "" "The best way to do kernel development is to have (at least) two separate " "computers. One of these would contain the development environment and " "sources, and the other would be used to test the newly written code by " "network-booting and network-mounting filesystems from the first one. This " "way if the new code contains bugs and crashes the machine, it will not mess " "up the sources (and other \"live\" data). The second system does not even " "require a proper display. Instead, it could be connected with a serial " "cable or KVM to the first one." msgstr "" "Для того, чтоб заниматься разработками для ядра, желательно иметь два " "отдельных компьютера. Один из них предназначен для среды разработки и " "исходных кодов, а второй - для запуска тестов отлаживаемого кода. Второму " "компьютеру для работы достаточно иметь возможность выполнять начальную " "загрузку по сети и монтирование файловых систем по сети. В этой ситуации, " "если отлаживаемый код содержит ошибки и вызовет аварийную остановку системы, " "то это не повлечет порчу или утерю исходного кода . Второму компьютеру даже " "не потребуется иметь свой монитор, достаточно будет соединения асинхронных " "портов кабелем RS-232 или соединения при помощи KVM-устройства." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:80 msgid "" "But, since not everybody has two or more computers handy, there are a few " "things that can be done to prepare an otherwise \"live\" system for " "developing kernel code. This setup is also applicable for developing in a " "http://www.vmware.com/[VMWare] or http://www.qemu.org/[QEmu] virtual machine " "(the next best thing after a dedicated development machine)." msgstr "" "Но так как далеко не у каждого есть два или более компьютеров под рукой, " "есть пара способов подготовить иную \"живую\" систему для разработки кода " "для ядра. Один из них - это разработка в http://www.vmware.com/[VMWare] или " "http://www.qemu.org/[QEmu] виртуальной машине (это лучшее из доступного, " "после, конечно-же, выделенного для тестов компьютера)." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:82 #, no-wrap msgid "Modifying a System for Development" msgstr "Настройка системы для разработки" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:85 msgid "" "For any kernel programming a kernel with `INVARIANTS` enabled is a must-" "have. So enter these in your kernel configuration file:" msgstr "" "Прежде всего необходимо иметь в ядре поддержку `INVARIANTS`. Добавьте " "следующие строки в файл конфигурации ядра:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:90 #, no-wrap msgid "" "options INVARIANT_SUPPORT\n" "options INVARIANTS\n" msgstr "" "options INVARIANT_SUPPORT\n" "options INVARIANTS\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:93 msgid "" "For more debugging you should also include WITNESS support, which will alert " "you of mistakes in locking:" msgstr "" "Для большей информативности при отладке включите поддержку WITNESS, которая " "будет предупреждать вас в случае возникновения взаимоблокировок:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:98 #, no-wrap msgid "" "options WITNESS_SUPPORT\n" "options WITNESS\n" msgstr "" "options WITNESS_SUPPORT\n" "options WITNESS\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:101 msgid "For debugging crash dumps, a kernel with debug symbols is needed:" msgstr "" "Также включите отладочные символы, если планируете выполнять отладку по " "дампам аварийных отказов:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:105 #, no-wrap msgid " makeoptions DEBUG=-g\n" msgstr " makeoptions DEBUG=-g\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:110 msgid "" "With the usual way of installing the kernel (`make installkernel`) the debug " "kernel will not be automatically installed. It is called " "[.filename]#kernel.debug# and located in [.filename]#/usr/obj/usr/src/sys/" "KERNELNAME/#. For convenience it should be copied to [.filename]#/boot/" "kernel/#." msgstr "" "Установка отладочного ядра обычным способом (`make installkernel`) не даст " "привычного результата: файл ядра будет называться [.filename]#kernel.debug# " "и будет находиться в [.filename]#/usr/obj/usr/src/sys/KERNELNAME/#. Для " "удобства, отладочное ядро необходимо скопировать в [.filename]#/boot/kernel/" "#." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:113 msgid "" "Another convenience is enabling the kernel debugger so you can examine a " "kernel panic when it happens. For this, enter the following lines in your " "kernel configuration file:" msgstr "" "Также удобно иметь включенный отладчик ядра, так вы сможете исследовать " "паники сразу-же после их возникновения. Для включения отладчика добавьте " "следующие строки в файл конфигурации ядра:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:119 #, no-wrap msgid "" "options KDB\n" "options DDB\n" "options KDB_TRACE\n" msgstr "" "options KDB\n" "options DDB\n" "options KDB_TRACE\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:122 msgid "" "For this to work you might need to set a sysctl (if it is not on by default):" msgstr "" "Для автоматического запуска отладчика ядра после возникновения паники может " "понадобиться установить переменную sysctl:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:126 #, no-wrap msgid " debug.debugger_on_panic=1\n" msgstr " debug.debugger_on_panic=1\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:134 msgid "" "Kernel panics will happen, so care should be taken with the filesystem " "cache. In particular, having softupdates might mean the latest file version " "could be lost if a panic occurs before it is committed to storage. " "Disabling softupdates yields a great performance hit, and still does not " "guarantee data consistency. Mounting filesystem with the \"sync\" option is " "needed for that. For a compromise, the softupdates cache delays can be " "shortened. There are three sysctl's that are useful for this (best to be " "set in [.filename]#/etc/sysctl.conf#):" msgstr "" "Паники системы будут происходить, поэтому уделите внимание кэшу файловой " "системы. Обычно, при включенном механизме softupdates, последняя версия " "файла может быть утеряна если паника произошла раньше сбрасывания кэша на " "устройство хранения. Выключение механизма softupdates (посредством " "монтирования файловой системы с опцией \"sync\") значительно сказывается на " "производительности и, опять-же, не гарантирует целостности данных. Как " "компромисс, можно сократить задержки сбрасывания кэша механизма softupdates. " "Есть три переменных sysctl, значения которых необходимо изменить (лучше " "всего - прописав их в [.filename]#/etc/sysctl.conf#):" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:140 #, no-wrap msgid "" "kern.filedelay=5\n" "kern.dirdelay=4\n" "kern.metadelay=3\n" msgstr "" "kern.filedelay=5\n" "kern.dirdelay=4\n" "kern.metadelay=3\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:143 msgid "The numbers represent seconds." msgstr "Значения этих переменных - секунды." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:151 msgid "" "For debugging kernel panics, kernel core dumps are required. Since a kernel " "panic might make filesystems unusable, this crash dump is first written to a " "raw partition. Usually, this is the swap partition. This partition must be " "at least as large as the physical RAM in the machine. On the next boot, the " "dump is copied to a regular file. This happens after filesystems are " "checked and mounted, and before swap is enabled. This is controlled with " "two [.filename]#/etc/rc.conf# variables:" msgstr "" "Для отладки паник ядра необходимы дампы памяти. Так как паника ядра может " "\"сломать\" файловую систему, дамп сначала сохраняется в \"сырой\" раздел. " "Обычно, это своп-раздел. Поэтому, размер своп-раздела должен быть не меньше " "размера ОЗУ компьютера. При последующей загрузке дамп копируется в обычный " "файл. Это происходит сразу-же после проверки и монтирования файловых систем, " "но перед активированием раздела свопа. Такое поведение контролируется " "следующими переменными [.filename]#/etc/rc.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:156 #, no-wrap msgid "" "dumpdev=\"/dev/ad0s4b\"\n" "dumpdir=\"/usr/core\"\n" msgstr "" "dumpdev=\"/dev/ad0s4b\"\n" "dumpdir=\"/usr/core\"\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:159 msgid "" "The `dumpdev` variable specifies the swap partition and `dumpdir` tells the " "system where in the filesystem to relocate the core dump on reboot." msgstr "" "Переменная `dumpdev` указывает на раздел подкачки, а `dumpdir` сообщает " "системе куда перемещать дамп ядра при следующей загрузке." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:162 msgid "" "Writing kernel core dumps is slow and takes a long time so if you have lots " "of memory (>256M) and lots of panics it could be frustrating to sit and wait " "while it is done (twice - first to write it to swap, then to relocate it to " "filesystem). It is convenient then to limit the amount of RAM the system " "will use via a [.filename]#/boot/loader.conf# tunable:" msgstr "" "Сохранение дампа ядра - процесс медленный, и, если у вашего компьютера много " "оперативной памяти (>256M) и если паники случаются часто, то ожидание " "сохранения дампов может начать раздражать (вспомним, что над дампом " "происходит две операции: сохранение в своп-файл и перемещение на файловую " -"систему). В таком случае может оказаться удобным ограничивание объема " +"систему). В таком случае может оказаться удобным ограничивание объёма " "используемой системой памяти путем установки переменной в [.filename]#/boot/" "loader.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:166 #, no-wrap msgid " hw.physmem=\"256M\"\n" msgstr " hw.physmem=\"256M\"\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:169 msgid "" "If the panics are frequent and filesystems large (or you simply do not trust " "softupdates+background fsck) it is advisable to turn background fsck off via " "[.filename]#/etc/rc.conf# variable:" msgstr "" "Если паники случаются часто и размер файловых систем большой (или же вы " "просто не доверяете softupdates и фоновой проверке файловых систем), " "рекомендуется отключить фоновую проверку файловых систем посредством " "установки переменной в [.filename]#/etc/rc.conf#:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:173 #, no-wrap msgid " background_fsck=\"NO\"\n" msgstr " background_fsck=\"NO\"\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:178 msgid "" "This way, the filesystems will always get checked when needed. Note that " "with background fsck, a new panic could happen while it is checking the " "disks. Again, the safest way is not to have many local filesystems by using " "another computer as an NFS server." msgstr "" "В этом случае файловые системы будут проверяться только при необходимости. " "Также заметьте, что в случае использования фоновой проверки, новая паника " "может случиться в то время, когда проверяются диски. Другими словами, " "наиболее безопасный способ - не иметь много локальных файловых систем, а " "использовать второй компьютер в качестве NFS-сервера." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:180 #, no-wrap msgid "Starting the Project" msgstr "Начало проекта" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:184 msgid "" "For the purpose of creating a new GEOM class, an empty subdirectory has to " "be created under an arbitrary user-accessible directory. You do not have to " "create the module directory under [.filename]#/usr/src#." msgstr "" "Для написания нового класса GEOM необходимо создать подкаталог в любом " "доступном пользователю каталоге. Совсем не обязательно, чтоб ваш модуль " "изначально размещался в [.filename]#/usr/src#." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:186 #, no-wrap msgid "The Makefile" msgstr "Makefile" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:189 msgid "" "It is good practice to create [.filename]#Makefiles# for every nontrivial " "coding project, which of course includes kernel modules." msgstr "" "Правилом хорошего тона является создание [.filename]#Makefile#-ов для " "каждого нетривиального проекта, примером которого конечно-же является " "создание модулей ядра." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:192 msgid "" "Creating the [.filename]#Makefile# is simple thanks to an extensive set of " "helper routines provided by the system. In short, here is how a minimal " "[.filename]#Makefile# looks for a kernel module:" msgstr "" "Создание [.filename]#Makefile# - дело не сложное благодаря исчерпывающему " "набору вспомогательных средств, предоставляемых системой. В вкратце, вот как " "должен выглядеть [.filename]#Makefile# для модуля ядра:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:197 #, no-wrap msgid "" "SRCS=g_journal.c\n" "KMOD=geom_journal\n" msgstr "" "SRCS=g_journal.c\n" "KMOD=geom_journal\n" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:199 #, no-wrap msgid ".include \n" msgstr ".include \n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:203 msgid "" "This [.filename]#Makefile# (with changed filenames) will do for any kernel " "module, and a GEOM class can reside in just one kernel module. If more than " "one file is required, list it in the `SRCS` variable, separated with " "whitespace from other filenames." msgstr "" "Этот [.filename]#Makefile# (с измененными именами файлов) подойдет к любому " "модулю ядра. Класс GEOM может размещаться в одном единственном модуле ядра. " "Если для сборки вашего модуля требуется больше, чем один файл, то " "перечислите их имена, разделенные пробельными символами, в переменной `SRCS`." #. type: Title == #: documentation/content/en/articles/geom-class/_index.adoc:205 #, no-wrap msgid "On FreeBSD Kernel Programming" msgstr "Программирование в ядре FreeBSD" #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:208 #, no-wrap msgid "Memory Allocation" msgstr "Выделение памяти" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:213 msgid "" "See man:malloc[9]. Basic memory allocation is only slightly different than " "its userland equivalent. Most notably, `malloc`() and `free`() accept " "additional parameters as is described in the man page." msgstr "" "Прочитайте man:malloc[9] - выделение памяти лишь немного отличается от " "своего эквивалента, используемого в пространстве пользовательских процессов " "(userland). Наиболее приметно то, что `malloc`() и `free`() принимают " "дополнительные параметры, которые описаны в странице справочника." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:215 msgid "" "A \"malloc type\" must be declared in the declaration section of a source " "file, like this:" msgstr "" "Тип \"malloc_type\" необходимо объявить в секции деклараций файла с исходным " "кодом, например:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:219 #, no-wrap msgid " static MALLOC_DEFINE(M_GJOURNAL, \"gjournal data\", \"GEOM_JOURNAL Data\");\n" msgstr " static MALLOC_DEFINE(M_GJOURNAL, \"gjournal data\", \"GEOM_JOURNAL Data\");\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:222 msgid "" "To use this macro, [.filename]#sys/param.h#, [.filename]#sys/kernel.h# and " "[.filename]#sys/malloc.h# headers must be included." msgstr "" "Для того, чтобы можно было использовать этот макрос, необходимо включить " "следующие заголовочные файлы: [.filename]#sys/param.h#, [.filename]#sys/" "kernel.h# и [.filename]#sys/malloc.h#." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:225 msgid "" "There is another mechanism for allocating memory, the UMA (Universal Memory " "Allocator). See man:uma[9] for details, but it is a special type of " "allocator mainly used for speedy allocation of lists comprised of same-sized " "items (for example, dynamic arrays of structs)." msgstr "" -"Существует еще один механизм выделения памяти - UMA (Universal Memory " +"Существует ещё один механизм выделения памяти - UMA (Universal Memory " "Allocator), описанный в man:uma[9]. Это специфический метод, преимущественно " "предназначенный для быстрого выделения памяти под списки, состоящие из " "элементов одинакового размера (например, динамические массивы структур)." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:227 #, no-wrap msgid "Lists and Queues" msgstr "Очереди и списки" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:234 msgid "" "See man:queue[3]. There are a LOT of cases when a list of things needs to " "be maintained. Fortunately, this data structure is implemented (in several " "ways) by C macros included in the system. The most used list type is TAILQ " "because it is the most flexible. It is also the one with largest memory " "requirements (its elements are doubly-linked) and also the slowest (although " "the speed variation is on the order of several CPU instructions more, so it " "should not be taken seriously)." msgstr "" "Ознакомьтесь с man:queue[3] Во множестве случаев вам необходимо будет " "организовывать и управлять такой структурой данных, как списки. К счастью, " "эта структура данных реализована несколькими способами в виде макросов на " "Си, а также включена в систему. Наиболее гибкий и часто употребляемый тип " "списка - TAILQ. Этот тип списка также один из наиболее требовательных к " "памяти (его элементы - с двойными связями), а также - наиболее медленный " -"(однако счет идет на несколько инструкций ЦПУ, поэтому последнее утверждение " +"(однако счет идёт на несколько инструкций ЦПУ, поэтому последнее утверждение " "не следует воспринимать в всерьез)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:236 msgid "" "If data retrieval speed is very important, see man:tree[3] and " "man:hashinit[9]." msgstr "" "Если важна скорость получения данных, то возьмите на вооружение man:tree[3] " "и man:hashinit[9]." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:238 #, no-wrap msgid "BIOs" msgstr "BIOs" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:242 msgid "" "Structure `bio` is used for any and all Input/Output operations concerning " "GEOM. It basically contains information about what device ('provider') " "should satisfy the request, request type, offset, length, pointer to a " "buffer, and a bunch of \"user-specific\" flags and fields that can help " "implement various hacks." msgstr "" "Структура `bio` используется для всех операций ввода/вывода, касающихся " "GEOM. Она содержит информацию о том, какое устройство ('поставщик geom') " "должно ответить на запрос, тип запроса, смещение, длину и указатель на " -"буфер, а также набор \"определенных пользователем\" флагов и полей ." +"буфер, а также набор \"определённых пользователем\" флагов и полей ." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:246 msgid "" "The important thing here is that ``bio``s are handled asynchronously. That " "means that, in most parts of the code, there is no analogue to userland's " "man:read[2] and man:write[2] calls that do not return until a request is " "done. Rather, a developer-supplied function is called as a notification " "when the request gets completed (or results in error)." msgstr "" "Важным моментом является то, что `bio` обрабатываются асинхронно. Это " "значит, что во многих частях кода нет аналога к man:read[2] и man:write[2] " "функциям из пространства пользовательских процессов, которые не возвращают " "управление пока не выполнится системный вызов. Скорее, по завершении " "обработки запроса (или в случае ошибки при обработке) как извещение " -"вызывается определенная пользователем функция." +"вызывается определённая пользователем функция." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:250 msgid "" "The asynchronous programming model (also called \"event-driven\") is " "somewhat harder than the much more used imperative one used in userland (at " "least it takes a while to get used to it). In some cases the helper " "routines `g_write_data`() and `g_read_data`() can be used, but __not " "always__. In particular, they cannot be used when a mutex is held; for " "example, the GEOM topology mutex or the internal mutex held during the " "`.start`() and `.stop`() functions." msgstr "" "Асинхронная модель программирования в чем-то сложней, нежели чаще " "используемая императивная модель, используемая в пространстве " -"пользовательских процессов; в любом случае, привыкание займет некоторое " +"пользовательских процессов; в любом случае, привыкание займёт некоторое " "время. В некоторых случаях могут быть использованы вспомогательные функции " "`g_write_data`() и `g_read_data`(), но __далеко не всегда__. В частности, " "эти функции не могут использоваться когда захвачен мьютекс; например, " "мьютекс GEOM-топологии или внутренний мьютекс, удерживаемый в ходе " "выполнения `.start`() или `.stop`()." #. type: Title == #: documentation/content/en/articles/geom-class/_index.adoc:252 #, no-wrap msgid "On GEOM Programming" msgstr "Программирование в системе GEOM" #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:255 #, no-wrap msgid "Ggate" msgstr "Ggate" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:259 msgid "" "If maximum performance is not needed, a much simpler way of making a data " "transformation is to implement it in userland via the ggate (GEOM gate) " "facility. Unfortunately, there is no easy way to convert between, or even " "share code between the two approaches." msgstr "" "Если максимальная производительность не требуется, то более простой способ " "совершать преобразования данных - это выполнять их в пространстве " "пользовательских процессов посредством ggate (GEOM gate). К недостаткам " "следует отнести невозможность простого переноса кода в ядро." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:261 #, no-wrap msgid "GEOM Class" msgstr "Класс GEOM" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:266 msgid "" "GEOM classes are transformations on the data. These transformations can be " "combined in a tree-like fashion. Instances of GEOM classes are called " "__geoms__." msgstr "" "Класс GEOM выполняет преобразования данных. Эти преобразования могут быть " "скомпонованы друг с другом в виде дерева. Экземпляр класса GEOM называют " "__geom__." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:268 msgid "" "Each GEOM class has several \"class methods\" that get called when there is " "no geom instance available (or they are simply not bound to a single " "instance):" msgstr "" "В каждом классе GEOM есть несколько \"методов класса\", которые вызываются " "когда экземпляра класса нет в наличии (или же они не привязаны к конкретному " "экземпляру класса):" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:270 msgid "" "`.init` is called when GEOM becomes aware of a GEOM class (when the kernel " "module gets loaded.)" msgstr "" "`.init` вызывается тогда, когда системе GEOM становится известно о классе " "GEOM (например, когда загружается модуль ядра)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:271 msgid "" "`.fini` gets called when GEOM abandons the class (when the module gets " "unloaded)" msgstr "" "`.fini` будет вызван в случае отказа GEOM системы от класса (например, при " "выгрузке модуля)" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:272 msgid "" "`.taste` is called next, once for each provider the system has available. If " "applicable, this function will usually create and start a geom instance." msgstr "" "`.taste` вызывается, когда в системе появляется новый класс или поставщик " "geom (\"provider\"). Если соответствие найдено, то эта функция обычно " "создает и запускает экземпляр geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:273 msgid "`.destroy_geom` is called when the geom should be disbanded" msgstr "`.destroy_geom` вызывается при необходимости разрушить экземпляр geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:274 msgid "" "`.ctlconf` is called when user requests reconfiguration of existing geom" msgstr "" "`.ctlconf` будет вызван, когда пользователь запросит изменение конфигурации " "существующего экземпляра geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:276 msgid "" "Also defined are the GEOM event functions, which will get copied to the geom " "instance." msgstr "" "Также определены функции событий GEOM, которые копируются в экземпляр geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:278 msgid "" "Field `.geom` in the `g_class` structure is a LIST of geoms instantiated " "from the class." msgstr "" "Поле `.geom` в структуре `g_class` - это список (LIST) экземпляров geom, " "реализованных из класса." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:280 msgid "These functions are called from the g_event kernel thread." msgstr "Эти функции вызываются из g_event потока ядра." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:282 #, no-wrap msgid "Softc" msgstr "Softc" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:288 msgid "" "The name \"softc\" is a legacy term for \"driver private data\". The name " "most probably comes from the archaic term \"software control block\". In " "GEOM, it is a structure (more precise: pointer to a structure) that can be " "attached to a geom instance to hold whatever data is private to the geom " "instance. Most GEOM classes have the following members:" msgstr "" "\"softc\" - это устаревший термин для \"приватных данных драйвера\" " "(\"driver private data\"). Название вероятней всего происходит от " "устаревшего термина \"software control block\". В системе GEOM softc это " "структура (точнее: указатель на структуру) которая может быть присоединена к " "экземпляру geom и может содержать приватные данные экземпляра. У большинства " "классов GEOM есть следующие члены:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:290 msgid "`struct g_provider *provider` : The \"provider\" this geom instantiates" msgstr "" "`struct g_provider *provider` : \"поставщик geom\" предоставляемый данным " "экземпляром geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:291 msgid "`uint16_t n_disks` : Number of consumer this geom consumes" msgstr "" "`uint16_t n_disks` : Количество потребителей geom (\"consumer\"), " "обслуживаемых данным экземпляром geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:292 msgid "" "`struct g_consumer \\**disks` : Array of `struct g_consumer*`. (It is not " "possible to use just single indirection because struct g_consumer* are " "created on our behalf by GEOM)." msgstr "" "`struct g_consumer \\**disks` : Массив `struct g_consumer*`. (Невозможно " "обойтись одинарным указателем, потому что система GEOM создает для нас " "структуры struct g_consumer)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:295 msgid "" "The `softc` structure contains all the state of geom instance. Every geom " "instance has its own softc." msgstr "" "Структура `softc` содержит состояние экземпляра geom. У каждого экземпляра " "есть свой softc." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:297 #, no-wrap msgid "Metadata" msgstr "Метаданные" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:300 msgid "" "Format of metadata is more-or-less class-dependent, but MUST start with:" msgstr "" "Формат метаданных в той или иной мере зависит от конкретного класса, но " "_обязан_ начинаться с:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:302 msgid "16 byte buffer for null-terminated signature (usually the class name)" msgstr "" "16-байтного буфера для подписи - строки с завершающим нулем (обычно это имя " "класса)" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:303 msgid "uint32 version ID" msgstr "uint32 идентификатора версии" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:305 msgid "" "It is assumed that geom classes know how to handle metadata with version " "ID's lower than theirs." msgstr "" "Подразумевается, что классы geom знают как обращаться с метаданными с " "идентификаторами версий ниже, чем их собственные." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:307 msgid "" "Metadata is located in the last sector of the provider (and thus must fit in " "it)." msgstr "" "Метаданные размещаются в последнем секторе поставщика geom (поэтому обязаны " "целиком умещаться в нем)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:309 msgid "" "(All this is implementation-dependent but all existing code works like that, " "and it is supported by libraries.)" msgstr "" "(Все это зависит от реализации, но весь существующий код работает подобно " "описанному и поддерживается библиотеками.)" #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:311 #, no-wrap msgid "Labeling/creating a GEOM" msgstr "Маркирование/создание экземпляра geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:314 msgid "The sequence of events is:" msgstr "Последовательность событий следующая:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:316 msgid "user calls man:geom[8] utility (or one of its hardlinked friends)" msgstr "пользователь запускает служебную программу man:geom[8]" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:317 msgid "" "the utility figures out which geom class it is supposed to handle and " "searches for [.filename]#geom_CLASSNAME.so# library (usually in [.filename]#/" "lib/geom#)." msgstr "" "программа решает каким классом geom ей придется управлять и ищет библиотеку " "[.filename]#geom_CLASSNAME.so# (которая обычно находится в [.filename]#/lib/" "geom#)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:318 msgid "" "it man:dlopen[3]-s the library, extracts the definitions of command-line " "parameters and helper functions." msgstr "" "она открывает библиотеку при помощи man:dlopen[3], извлекает вспомогательные " "функции и определения параметров командной строки." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:320 msgid "In the case of creating/labeling a new geom, this is what happens:" msgstr "Вот так происходит создание/маркирование нового экземпляра geom:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:322 msgid "" "man:geom[8] looks in the command-line argument for the command (usually " "`label`), and calls a helper function." msgstr "" "man:geom[8] ищет команду в аргументах командной строки (обычно это `label`) " "и вызывает вспомогательную функцию." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:323 msgid "" "The helper function checks parameters and gathers metadata, which it " "proceeds to write to all concerned providers." msgstr "" "Вспомогательная функция проверяет параметры и собирает метаданные, которые " "записываются во все вовлеченные поставщики geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:324 msgid "" "This \"spoils\" existing geoms (if any) and initializes a new round of " "\"tasting\" of the providers. The intended geom class recognizes the " "metadata and brings the geom up." msgstr "" "Это \"повреждает (spoil)\" существующие экземпляры geom (если они были) и " "порождает новый виток \"тестирования\" поставщиков geom. Целевой класс geom " "опознает метаданные и активирует экземпляр geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:326 msgid "" "(The above sequence of events is implementation-dependent but all existing " "code works like that, and it is supported by libraries.)" msgstr "" "(Приведенная выше последовательность событий зависит от конкретной " "реализации, но весь существующий код работает подобно описанному и " "поддерживается библиотеками.)" #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:328 #, no-wrap msgid "GEOM Command Structure" msgstr "Структура команд geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:332 msgid "" "The helper [.filename]#geom_CLASSNAME.so# library exports `class_commands` " "structure, which is an array of `struct g_command` elements. Commands are " "of uniform format and look like:" msgstr "" "Вспомогательная библиотека [.filename]#geom_CLASSNAME.so# экспортирует " "структуру `class_commands`, которая является массивом элементов `struct " "g_command`. Эти команды одинакового формата и выглядят следующим образом:" #. type: delimited block . 4 #: documentation/content/en/articles/geom-class/_index.adoc:336 #, no-wrap msgid " verb [-options] geomname [other]\n" msgstr " verb [-options] geomname [other]\n" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:339 msgid "Common verbs are:" msgstr "Общими командами являются:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:341 msgid "" "label - to write metadata to devices so they can be recognized at tasting " "and brought up in geoms" msgstr "" "label - записать метаданные в устройства, чтобы они могли быть опознаны в " "процессе тестирования и использованы в соответствующих экземплярах geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:342 msgid "destroy - to destroy metadata, so the geoms get destroyed" msgstr "" "destroy - разрушить метаданные, за которым последует разрушение экземпляров " "geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:344 msgid "Common options are:" msgstr "Общие опции:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:346 msgid "`-v` : be verbose" msgstr "`-v` : детальный вывод" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:347 msgid "`-f` : force" msgstr "`-f` : принудить" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:351 msgid "" "Many actions, such as labeling and destroying metadata can be performed in " "userland. For this, `struct g_command` provides field `gc_func` that can be " "set to a function (in the same [.filename]#.so#) that will be called to " "process a verb. If `gc_func` is NULL, the command will be passed to kernel " "module, to `.ctlreq` function of the geom class." msgstr "" "Некоторые операции, к примеру маркирование метаданными и разрушение " "метаданных могут быть выполнены из пространства пользовательских процессов. " "Для этого, структура `g_command` содержит поле `gc_func`, которое может быть " "установлено на функцию (в том-же [.filename]#.so#), которая будет вызвана " "для обработки команды. В случае, когда `gc_func` равно NULL, команда будет " "передана модулю ядра: функции `.ctlreq` класса GEOM." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:353 #, no-wrap msgid "Geoms" msgstr "Экземпляры geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:357 msgid "" "Geoms are instances of GEOM classes. They have internal data (a softc " "structure) and some functions with which they respond to external events." msgstr "" "У экземпляров классов GEOM есть внутренние данные, которые хранятся в " "структурах softc, а также есть некоторые функции, посредством которых они " "реагируют на внешние события." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:359 msgid "The event functions are:" msgstr "Функции событий:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:361 msgid "`.access` : calculates permissions (read/write/exclusive)" msgstr "" "`.access` : просчитывает права доступа (чтение/запись/исключительный доступ)" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:362 msgid "`.dumpconf` : returns XML-formatted information about the geom" msgstr "`.dumpconf` : возвращает информацию о экземпляре geom; формат XML" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:363 msgid "`.orphan` : called when some underlying provider gets disconnected" msgstr "" "`.orphan` : вызывается, когда отсоединяется любой из низлежащих поставщиков " "geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:364 msgid "`.spoiled` : called when some underlying provider gets written to" msgstr "" "`.spoiled` : вызывается, когда производится запись в низлежащий поставщик " "geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:365 msgid "`.start` : handles I/O" msgstr "`.start` : обрабатывает ввод/вывод" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:367 msgid "" "These functions are called from the `g_down` kernel thread and there can be " "no sleeping in this context, (see definition of sleeping elsewhere) which " "limits what can be done quite a bit, but forces the handling to be fast." msgstr "" "Эти функции вызываются из ядерного потока `g_down` и в этом контексте не " "может быть блокировок (поищите определение \"блокировка\" в других " "источниках), что немного ограничивает свободу действий, но способствует " "быстроте обработки." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:369 msgid "" "Of these, the most important function for doing actual useful work is the " "`.start`() function, which is called when a BIO request arrives for a " "provider managed by a instance of geom class." msgstr "" "Из вышеупомянутых, наиболее важной и выполняющей полезную работу функцией " "является `.start`(), которая вызывается всякий раз, когда поставщику geom, " "управляемому экземпляром класса, приходит запрос BIO." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:371 #, no-wrap msgid "GEOM Threads" msgstr "Потоки выполнения системы geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:374 msgid "There are three kernel threads created and run by the GEOM framework:" msgstr "" "Системой GEOM в ядре ОС создаются и используются три потока выполнения " "(kernel threads):" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:376 msgid "" "`g_down` : Handles requests coming from high-level entities (such as a " "userland request) on the way to physical devices" msgstr "" "`g_down` : Обрабатывает запросы, приходящие от высокоуровневых сущностей " -"(таких, как запросы из пространства пользовательских процессов) на пути к " +"(таких как запросы из пространства пользовательских процессов) на пути к " "физическим устройствам" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:377 msgid "" "`g_up` : Handles responses from device drivers to requests made by higher-" "level entities" msgstr "" "`g_up` : Обрабатывает ответы от драйверов устройств на запросы, выполненные " "высокоуровневыми сущностями" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:378 msgid "" "`g_event` : Handles all other cases: creation of geom instances, access " "counting, \"spoil\" events, etc." msgstr "" "`g_event` : Отрабатывает в остальных случаях, как-то создание экземпляра " "geom, просчитывание прав доступа, события \"повреждения\" и т.п." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:380 msgid "" "When a user process issues \"read data X at offset Y of a file\" request, " "this is what happens:" msgstr "" "Когда пользовательский процесс запрашивает \"прочитать данные X по смещению " "Y файла\", происходит следующее:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:382 msgid "" "The filesystem converts the request into a struct bio instance and passes it " "to the GEOM subsystem. It knows what geom instance should handle it because " "filesystems are hosted directly on a geom instance." msgstr "" "Файловая система преобразует запрос в экземпляр структуры bio и передаёт его " "системе GEOM. Файловая система \"знает\", что экземпляр geom должен " "обработать запрос, так как файловые системы размещаются непосредственно над " "экземпляром geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:383 msgid "" "The request ends up as a call to the `.start`() function made on the g_down " "thread and reaches the top-level geom instance." msgstr "" "Запрос завершается вызовом функции `.start`() в потоке g_down и достигает " "верхнего экземпляра geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:384 msgid "" "This top-level geom instance (for example the partition slicer) determines " "that the request should be routed to a lower-level instance (for example the " "disk driver). It makes a copy of the bio request (bio requests _ALWAYS_ need " "to be copied between instances, with `g_clone_bio`()!), modifies the data " "offset and target provider fields and executes the copy with `g_io_request`()" msgstr "" "Верхний экземпляр geom (например, это секционировщик разделов (partition " "slicer)) определяет, что запрос должен быть переадресован нижестоящему " "экземпляру geom (к примеру, драйверу диска). Вышестоящий экземпляр geom " "создает копию запроса bio (запросы bio _ВСЕГДА_ копируются при передаче " "между экземплярами geom при помощи `g_clone_bio`()!), изменяет поля смещения " "и целевого поставщика geom и запускает на обработку копию при помощи функции " "`g_io_request`()" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:385 msgid "" "The disk driver gets the bio request also as a call to `.start`() on the " "`g_down` thread. It talks to hardware, gets the data back, and calls " "`g_io_deliver`() on the bio." msgstr "" "Драйвер диска также получает запрос bio, как вызов функции `.start`() в " "потоке `g_down`. Драйвер обращается к контроллеру диска, получает блок " "данных и вызывает функцию `g_io_deliver`() используя копию запроса bio." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:386 msgid "" "Now, the notification of bio completion \"bubbles up\" in the `g_up` thread. " "First the partition slicer gets `.done`() called in the `g_up` thread, it " "uses information stored in the bio to free the cloned `bio` structure (with " "`g_destroy_bio`()) and calls `g_io_deliver`() on the original request." msgstr "" "Теперь, извещение о завершении bio \"всплывает\" в потоке `g_up`. Сначала в " "потоке `g_up` вызывается функция `.done`() секционировщика разделов, " "последний использует полученную информацию, разрушает клонированный " "экземпляр структуры bio посредством `g_destroy_bio`() и вызывает " "`g_io_deliver`() используя первоначальный запрос." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:387 msgid "The filesystem gets the data and transfers it to userland." msgstr "" "Файловая система получает данные и передаёт их пользовательскому процессу." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:389 msgid "" "See man:g_bio[9] man page for information how the data is passed back and " "forth in the `bio` structure (note in particular the `bio_parent` and " "`bio_children` fields and how they are handled)." msgstr "" "За информацией о том, как данные передаются в структуре `bio` между " "экземплярами geom, смотрите man:g_bio[9] (обратите внимание на использование " "полей `bio_parent` и `bio_children`)." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:392 msgid "" "One important feature is: __THERE CAN BE NO SLEEPING IN G_UP AND G_DOWN " "THREADS__. This means that none of the following things can be done in " "those threads (the list is of course not complete, but only informative):" msgstr "" "Важный момент в том, что __НЕЛЬЗЯ ДОПУСКАТЬ БЛОКИРОВОК В ПОТОКАХ G_UP И " "G_DOWN__. Вот неполный перечень того, что нельзя делать в этих потоках:" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:394 msgid "Calls to `msleep`() and `tsleep`(), obviously." msgstr "Вызывать функции `msleep`() или `tsleep`()." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:395 msgid "" "Calls to `g_write_data`() and `g_read_data`(), because these sleep between " "passing the data to consumers and returning." msgstr "" "Использовать функции `g_write_data`() и `g_read_data`(), так как они " "блокируются в момент обмена данными с потребителями geom." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:396 msgid "Waiting for I/O." msgstr "Ожидать ввод/вывод." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:397 msgid "Calls to man:malloc[9] and `uma_zalloc`() with `M_WAITOK` flag set" msgstr "" "Вызывать man:malloc[9] и `uma_zalloc`() с установленным флагом `M_WAITOK`" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:398 msgid "sx and other sleepable locks" msgstr "Использовать man:sx[9]" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:402 msgid "" "This restriction is here to stop GEOM code clogging the I/O request path, " "since sleeping is usually not time-bound and there can be no guarantees on " "how long will it take (there are some other, more technical reasons also). " "It also means that there is not much that can be done in those threads; for " "example, almost any complex thing requires memory allocation. Fortunately, " "there is a way out: creating additional kernel threads." msgstr "" "Это ограничение на код GEOM призвано избежать от \"засорения\" пути запроса " "ввода/вывода, так как блокировки обычно не имеют четких временных границ, и " "нет гарантий на занимаемое время (также на то есть и другие технические " "причины). Это также значит, что в вышеупомянутых потоках сколь-нибудь " "сложные операции выполнить нельзя, например: любое сложное преобразование " "требует выделения памяти. К счастью решение есть: создание дополнительных " "ядерных потоков." #. type: Title === #: documentation/content/en/articles/geom-class/_index.adoc:404 #, no-wrap msgid "Kernel Threads for Use in GEOM Code" msgstr "Ядерные потоки выполнения, предназначенные для использования в коде geom" #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:407 msgid "" "Kernel threads are created with man:kthread_create[9] function, and they are " "sort of similar to userland threads in behavior, only they cannot return to " "caller to signify termination, but must call man:kthread_exit[9]." msgstr "" -"Ядерные потоки выполнения создаются функцией man:kthread_create[9], в своем " +"Ядерные потоки выполнения создаются функцией man:kthread_create[9], в своём " "поведении они схожи с потоками, созданными в пространстве пользовательских " "процессов, но есть одно отличие: они не могут известить вызвавший их поток о " -"своем завершении; по завершению - необходимо вызывать man:kthread_exit[9]." +"своём завершении; по завершению - необходимо вызывать man:kthread_exit[9]." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:410 msgid "" "In GEOM code, the usual use of threads is to offload processing of requests " "from `g_down` thread (the `.start`() function). These threads look like " "\"event handlers\": they have a linked list of event associated with them " "(on which events can be posted by various functions in various threads so it " "must be protected by a mutex), take the events from the list one by one and " "process them in a big `switch`() statement." msgstr "" "В коде GEOM обычное назначение этих потоков - разгрузить поток `g_down` " "(функцию `.start`() ) от обработки запросов. Эти потоки подобны " "\"обработчикам событий\" (\"event handlers\"): у них есть очередь событий " "(которая наполняется событиями от разных функций из разных потоков; очередь " "необходимо защищать мьютексом), события из очереди выбираются одно за другим " "и обрабатываются в большом блоке `switch`()." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:415 msgid "" "The main benefit of using a thread to handle I/O requests is that it can " "sleep when needed. Now, this sounds good, but should be carefully thought " "out. Sleeping is well and very convenient but can very effectively destroy " "performance of the geom transformation. Extremely performance-sensitive " "classes probably should do all the work in `.start`() function call, taking " "great care to handle out-of-memory and similar errors." msgstr "" "Основное преимущество использования отдельного потока, который обрабатывает " "запросы ввода/вывода, то, что он может блокироваться по мере необходимости. " "Это, несомненно, привлекательно, но должно быть хорошо обдумано. " "Блокирование - хорошо и удобно, но может существенно снизить " "производительность преобразований данных в системе GEOM. Особо " "требовательные к производительности классы могут делать всю работу в функции " "`.start`(), уделяя особое внимание ошибкам при работе с памятью." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:419 msgid "" "The other benefit of having a event-handler thread like that is to serialize " "all the requests and responses coming from different geom threads into one " "thread. This is also very convenient but can be slow. In most cases, " "handling of `.done`() requests can be left to the `g_up` thread." msgstr "" "Еще одно преимущество потока \"обработчика событий\" это сериализация всех " "запросов и ответов, приходящих с разных потоков geom в один поток. Это также " "удобно, но может быть медленным. В большинстве случаев, обработка запросов " "функцией `.done`() может быть оставлена потоку `g_up`." #. type: Plain text #: documentation/content/en/articles/geom-class/_index.adoc:422 msgid "" "Mutexes in FreeBSD kernel (see man:mutex[9]) have one distinction from their " "more common userland cousins - the code cannot sleep while holding a " "mutex). If the code needs to sleep a lot, man:sx[9] locks may be more " "appropriate. On the other hand, if you do almost everything in a single " "thread, you may get away with no mutexes at all." msgstr "" "У мьютексов в ядре FreeBSD (man:mutex[9]) есть одно различие с их аналогами " "из пространства пользовательских процессов - во время удержания мьютекса в " "коде не должно быть блокировки. Если в коде необходимо блокирование, то " "лучше использовать man:sx[9]. С другой стороны, если вся ваша работа " "выполняется в одном потоке, вы можете обойтись вообще без мьютексов." #, no-wrap #~ msgid "" #~ "dumpdev=\"/dev/ad0s4b\"\n" #~ "dumpdir=\"/usr/core\n" #~ msgstr "" #~ "dumpdev=\"/dev/ad0s4b\"\n" #~ "dumpdir=\"/usr/core\"\n" diff --git a/documentation/content/ru/articles/gjournal-desktop/_index.po b/documentation/content/ru/articles/gjournal-desktop/_index.po index 5a6e273dbe..70c3b72e0c 100644 --- a/documentation/content/ru/articles/gjournal-desktop/_index.po +++ b/documentation/content/ru/articles/gjournal-desktop/_index.po @@ -1,3264 +1,3264 @@ # 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-02-22 15:58+0000\n" -"PO-Revision-Date: 2026-03-05 13:41+0000\n" +"PO-Revision-Date: 2026-03-08 09:11+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/articles/gjournal-desktop/_index.adoc:1 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:13 #, no-wrap msgid "Implementing UFS Journaling on a Desktop PC" msgstr "Настройка журналирования UFS для настольного компьютера" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:46 msgid "Abstract" msgstr "Аннотация" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:52 msgid "" "A journaling file system uses a log to record file system updates and " "preserves consistency in the event of a system crash or power failure. " "Although unsaved changes to files may still be lost, journaling greatly " "reduces the risk of file system corruption caused by an unclean shutdown and " "significantly shortens recovery time. While the UFS file system employed by " "FreeBSD does not implement journaling as an inherent on-disk feature, " "FreeBSD provides journaling support through file system-level mechanisms " "(Soft Updates with journaling) as well as through the GEOM framework " "(`gjournal`). This article describes the available UFS journaling " "mechanisms and explains their appropriate use on modern FreeBSD systems. " "_The content has been reviewed and updated for FreeBSD versions 13 through " "15_." msgstr "" "Журналируемая файловая система использует журнал для записи обновлений " "файловой системы и обеспечивает целостность данных в случае сбоя системы или " "отключения питания. Несмотря на то, что несохранённые изменения в файлах всё " "ещё могут быть утеряны, журналирование значительно снижает риск повреждения " "файловой системы из-за некорректного завершения работы и существенно " "сокращает время восстановления. Хотя файловая система UFS, используемая в " "FreeBSD, не реализует журналирование как встроенную функцию на уровне диска, " "FreeBSD предоставляет поддержку журналирования через механизмы на уровне " "файловой системы (Soft Updates с журналированием), а также через фреймворк " "GEOM (`gjournal`). В этой статье описываются доступные механизмы " "журналирования UFS и объясняется их целесообразное использование в " "современных системах FreeBSD. _Содержание было проверено и обновлено для " "версий FreeBSD с 13 по 15_." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:54 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:58 #, no-wrap msgid "Introduction" msgstr "Введение" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:63 msgid "" "While professional servers are usually well protected from unforeseen " "shutdowns, the typical desktop is at the mercy of power failures, accidental " "resets, and other user related incidents that can lead to unclean shutdowns " "and leave a file system in an inconsistent state. Traditionally, this " "required running `fsck`, which on large file systems could take a " "significant amount of time. On rare occasions, file system corruption " "reaches a point where user intervention is required and data may be lost." msgstr "" "Серверное оборудование обычно хорошо защищено от потери питания. Настольный " "компьютер часто подвержен неожиданным пропаданиям питания, случайным " "нажатиям кнопки Reset и другим происшествиям (часто связанным с " "неосторожностью пользователей), которые могут привести к непредвиденным " "выключениям и оставить файловую систему в несогласованном состоянии. " "Традиционно это требовало запуска `fsdk`, что на больших файловых системах " "требует значительного времени. В очень редких случаях повреждения файловой " "системы достигают того уровня, при котором становится необходимым " "вмешательство пользователя и данные могут быть утерянными." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:65 msgid "" "FreeBSD provides two distinct journaling mechanisms for the UFS file system:" msgstr "" "FreeBSD предоставляет два различных механизма журналирования для файловой " "системы UFS:" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:67 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:155 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:158 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:161 #, no-wrap msgid "Soft Updates with journaling" msgstr "Журналирование с Soft Updates" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:68 msgid "GEOM journaling (`gjournal`)" msgstr "Журналирование с командой GEOM `gjournal`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:70 msgid "" "These mechanisms operate at different layers of the system and have " "different performance and semantic characteristics." msgstr "" "Эти механизмы функционируют на различных уровнях системы и обладают разными " "характеристиками производительности и семантики." #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:74 msgid "" "For most modern FreeBSD systems, including desktops and general-purpose " "servers, *Soft Updates with journaling* is the recommended solution." msgstr "" "Для большинства современных систем FreeBSD, включая настольные компьютеры и " "серверы общего назначения, рекомендуется использовать *Soft Updates с " "журналированием*." #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:76 msgid "" "GEOM journaling is a legacy and specialized mechanism and should only be " "used when its specific semantics are required." msgstr "" "GEOM журналирование — это устаревший и специализированный механизм, и его " "следует использовать только тогда, когда требуются его специфические " "семантики." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:79 msgid "" "This article explains both mechanisms, their differences, and correct modern " "usage." msgstr "" "В этой статье объясняются оба механизма, их различия и правильное " "современное использование." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:81 msgid "Read this chapter to learn:" msgstr "Прочтите эту главу, чтобы узнать:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:83 msgid "" "The journaling mechanisms available for the UFS file system in FreeBSD and " "how they differ." msgstr "" "Доступные механизмы журналирования для файловой системы UFS в FreeBSD и их " "различия." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:84 msgid "" "When to use file system-level Soft Updates journaling and when GEOM " "journaling may be appropriate." msgstr "" "Когда использовать журналирование на уровне файловой системы с Soft Updates " "и когда может быть уместно журналирование GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:85 msgid "" "How to enable or disable Soft Updates journaling on existing UFS file " "systems." msgstr "" "Как включить или отключить журналирование Soft Updates на существующих " "файловых системах UFS." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:86 msgid "" "How to configure GEOM journaling on new or existing partitions, including " "required kernel support and journal sizing considerations." msgstr "" "Как настроить журналирование GEOM на новых или существующих разделах, " "включая необходимую поддержку ядра и вопросы определения размера журнала." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:87 msgid "" "What configuration changes are required to mount journaled file systems and " "how journaling affects system behavior." msgstr "" "Какие изменения конфигурации необходимы для монтирования журналируемых " "файловых систем и как журналирование влияет на поведение системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:88 msgid "How to diagnose and resolve common issues related to UFS journaling." msgstr "" "Как диагностировать неполадки и разрешать проблемы, связанные с " "журналированием файловой системы UFS." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:90 msgid "Before reading this article:" msgstr "Перед прочтением этой статьи вам необходимо:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:92 msgid "Understand basic UNIX(R) and FreeBSD concepts." msgstr "" "Понимать базовые концепции таких операционных систем, как UNIX(R) и FreeBSD." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:93 msgid "Be familiar with the FreeBSD installation process using bsdinstall." msgstr "Быть знакомым с процедурой установки FreeBSD, используя bsdinstall." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:94 msgid "" "Have basic knowledge of disk partitioning and file systems, including tools " "such as gpart(8), newfs(8), and mount(8)." msgstr "" "Иметь базовые знания о разбиении дисков и файловых системах, включая такие " "инструменты, как gpart(8), newfs(8) и mount(8)." #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:99 msgid "" "Some of the procedures described in this article involve modifying file " "system or disk configuration and may require unmounting file systems or " "changing on-disk metadata. Before making such changes on a system in " "production, ensure that reliable _backups_ of all important data are " "available." msgstr "" "Некоторые процедуры, описанные в данной статье, включают изменение " "конфигурации файловой системы или диска и могут потребовать размонтирования " "файловых систем или изменения метаданных на диске. Перед внесением подобных " "изменений в работающей системе убедитесь, что доступны надежные _резервные " "копии_ всех важных данных." #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:102 msgid "" "Enabling file system-level Soft Updates journaling is generally safe and " "does not require disk repartitioning. However, configuring GEOM journaling " "involves low-level disk operations and should be attempted only by " "experienced administrators who fully understand the implications." msgstr "" "Включение журналирования Soft Updates на уровне файловой системы обычно " "безопасно и не требует переразбивки диска. Однако настройка журналирования " "GEOM включает низкоуровневые операции с диском и должна выполняться только " "опытными администраторами, полностью понимающими последствия." #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:105 #, no-wrap msgid "Understanding Journaling in FreeBSD" msgstr "Реализация журналирования в FreeBSD" #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:107 #, no-wrap msgid "Soft Updates with Journaling (Recommended)" msgstr "Soft Updates с журналированием (рекомендуется)" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:109 msgid "" "Soft Updates is the default UFS consistency mechanism in FreeBSD. When " "combined with journaling, it provides *metadata journaling* within the file " "system itself." msgstr "" "Soft Updates — это механизм обеспечения согласованности UFS по умолчанию в " "FreeBSD. В сочетании с журналированием он обеспечивает *журналирование " "метаданных* в самой файловой системе." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:111 msgid "Advantages of Soft Updates with journaling include:" msgstr "Преимущества Soft Updates с журналированием включают:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:113 msgid "Very fast crash recovery (typically seconds)" msgstr "Очень быстрое восстановление после сбоя (обычно за секунды)" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:114 msgid "Normal `sync(2)` and `fsync(2)` semantics" msgstr "Обычная семантика `sync(2)` и `fsync(2)`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:115 msgid "No additional partitions or GEOM layers" msgstr "Никаких дополнительных разделов или слоев GEOM" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:116 msgid "Simple configuration and maintenance" msgstr "Простая настройка и обслуживание" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:118 msgid "From `tunefs(8)`:" msgstr "Из `tunefs(8)`:" #. type: delimited block _ 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:121 msgid "" "Enabling journaling reduces the time spent by fsck_ffs(8) cleaning up a file " "system after a crash to a few seconds from minutes to hours." msgstr "" "Включение журналирования сокращает время, затрачиваемое fsck_ffs(8) на " "очистку файловой системы после сбоя, с нескольких минут или часов до " "нескольких секунд." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:124 msgid "" "This mechanism is suitable for nearly all UFS-based systems and is the " "default recommendation." msgstr "" "Этот механизм подходит практически для всех систем на основе UFS и является " "рекомендуемым по умолчанию." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:125 #, no-wrap msgid "GEOM Journaling (`gjournal`)" msgstr "Журналирование с командой GEOM `gjournal`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:128 msgid "" "GEOM journaling operates at the block level, below the file system. It " "journals all block writes, including *both metadata and file data*." msgstr "" "GEOM журналирование работает на блочном уровне, ниже файловой системы. Оно " "журналирует все записи блоков, включая *как метаданные, так и данные файлов*." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:130 msgid "Key characteristics of GEOM journaling:" msgstr "Ключевые характеристики журналирования GEOM:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:132 msgid "Implemented as a GEOM class (`geom_journal`)" msgstr "Реализовано как класс GEOM (`geom_journal`)" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:133 msgid "Journals all block I/O, not just metadata" msgstr "Журналирует весь блочный ввод-вывод, а не только метаданные" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:134 msgid "Requires explicit cooperation from UFS using the `-J` flag" msgstr "Требует явного согласования от UFS с использованием флага `-J`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:135 msgid "Disables Soft Updates" msgstr "Отключает Soft Updates" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:136 msgid "Alters the semantics of `sync(2)` and `fsync(2)`" msgstr "Изменяет семантику `sync(2)` и `fsync(2)`" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:140 msgid "" "On GEOM-journaled file systems, `sync(2)` and `fsync(2)` do not guarantee " "that data has been committed to stable storage. To ensure persistence, " "`gjournal sync` must be used." msgstr "" "На файловых системах с журналированием GEOM, `sync(2)` и `fsync(2)` не " "гарантируют, что данные были записаны на постоянное хранилище. Для " "обеспечения сохранности необходимо использовать `gjournal sync`." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:143 msgid "" "Because of these differences, GEOM journaling is not recommended for general-" "purpose desktop or server use." msgstr "" "Из-за этих различий журналирование GEOM не рекомендуется для общего " "использования на настольных компьютерах или серверах." #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:144 #, no-wrap msgid "Choosing the Appropriate Journaling Method" msgstr "Выбор подходящего метода журналирования" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:147 msgid "The following table summarizes recommended usage:" msgstr "В следующей таблице приведены рекомендуемые варианты использования:" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:150 #, no-wrap msgid "Use case" msgstr "Вариант использования" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:152 #, no-wrap msgid "Recommended mechanism" msgstr "Рекомендуемый механизм" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:153 #, no-wrap msgid "Desktop or laptop system" msgstr "Настольная или портативная система" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:156 #, no-wrap msgid "General-purpose server" msgstr "Универсальный сервер" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:159 #, no-wrap msgid "Legacy UFS systems" msgstr "Устаревшие системы UFS" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:162 #, no-wrap msgid "File system-independent journaling requirements" msgstr "Требования к журналированию, не зависящие от файловой системы" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:164 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:166 #, no-wrap msgid "GEOM journaling" msgstr "Журналирование GEOM" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:165 #, no-wrap msgid "Specialized block-level logging needs" msgstr "Специализированное журналирование на уровне блоков" #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:168 #, no-wrap msgid "Using Soft Updates with Journaling" msgstr "Использование Soft Updates с журналированием" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:173 msgid "" "Soft Updates with journaling provide file system-level journaling for UFS. " "This mechanism preserves file system consistency while retaining the " "allocation and ordering optimizations of Soft Updates. Unlike GEOM " "journaling, no separate journal device or partition is required." msgstr "" "Soft Updates с журналированием обеспечивают журналирование на уровне " "файловой системы для UFS. Этот механизм сохраняет целостность файловой " "системы, одновременно сохраняя оптимизации выделения и упорядочивания, " "характерные для Soft Updates. В отличие от журналирования GEOM, отдельное " "журналирующее устройство или раздел не требуется." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:174 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:254 #, no-wrap msgid "Overview" msgstr "Обзор" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:179 msgid "" "Soft Updates with journaling record file system metadata changes in a " "journal stored inside the file system itself, implemented as a hidden file " "named [.filename]#.sujournal# in the root of the file system. In the event " "of a crash or power failure, pending metadata operations are replayed from " "the journal, allowing the file system to be mounted quickly without a full " "consistency check." msgstr "" "Soft Updates с журналированием записывают изменения метаданных файловой " "системы в журнал, хранящийся внутри самой файловой системы, реализованный " "как скрытый файл с именем [.filename]#.sujournal# в корне файловой системы. " "В случае сбоя или отключения питания ожидающие операции с метаданными " "воспроизводятся из журнала, что позволяет быстро смонтировать файловую " "систему без полной проверки согласованности." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:182 msgid "" "This form of journaling applies to file system metadata only. File data " "integrity remains the responsibility of applications." msgstr "" "Эта форма журналирования применяется только к метаданным файловой системы. " "Целостность данных файлов остается ответственностью приложений." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:183 #, no-wrap msgid "Enabling Journaling on an Existing File System" msgstr "Включение журналирования на существующей файловой системе" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:186 msgid "" "The file system must be unmounted or mounted read-only before changing " "journaling settings." msgstr "" "Файловая система должна быть размонтирована или смонтирована в режиме только " "для чтения перед изменением настроек журналирования." #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:192 #, no-wrap msgid "" "# umount /usr\n" "# tunefs -n enable -j enable /dev/ada0p2\n" "# mount /usr\n" msgstr "" "# umount /usr\n" "# tunefs -n enable -j enable /dev/ada0p2\n" "# mount /usr\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:195 msgid "" "No additional configuration is required. Standard mount options may be used." msgstr "" "Дополнительная настройка не требуется. Можно использовать стандартные " "параметры монтирования." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:196 #, no-wrap msgid "Journal Storage and Size" msgstr "Хранение журналов и их размер" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:200 msgid "" "A default journal size is selected automatically when journaling is " "enabled. In most cases, the default size is sufficient and does not require " "adjustment." msgstr "" "Размер журнала по умолчанию выбирается автоматически при включении ведения " "журнала. В большинстве случаев размер по умолчанию достаточен и не требует " "корректировки." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:202 msgid "" "If necessary, the journal size in bytes can be specified explicitly using " "the `-S` option to `tunefs(8)`:" msgstr "" "При необходимости размер журнала в байтах может быть явно указан с помощью " "опции `-S` для `tunefs(8)`:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:206 #, no-wrap msgid "# tunefs -S 64000000 /dev/ada0p2\n" msgstr "# tunefs -S 64000000 /dev/ada0p2\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:209 msgid "" "Journal size tuning is rarely required and should be considered only for " "file systems with unusually high metadata update rates." msgstr "" "Настройка размера журнала редко требуется и должна рассматриваться только " "для файловых систем с необычно высокой частотой обновления метаданных." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:210 #, no-wrap msgid "Checking Soft Updates with Journaling" msgstr "Проверка Soft Updates с журналированием" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:213 msgid "" "The journaling status of a UFS file system using Soft Updates can be " "verified with `tunefs(8)` or `dumpfs(8)`." msgstr "" "Статус журналирования файловой системы UFS с использованием Soft Updates " "можно проверить с помощью `tunefs(8)` или `dumpfs(8)`." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:215 msgid "To display the current file system settings, run:" msgstr "Чтобы отобразить текущие настройки файловой системы, выполните:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:221 #, no-wrap msgid "" "# tunefs -p /dev/ada0p2 | grep -i journal\n" "tunefs: soft updates journaling: (-j) enabled\n" "tunefs: gjournal: (-J) disabled\n" msgstr "" "# tunefs -p /dev/ada0p2 | grep -i journal\n" "tunefs: soft updates journaling: (-j) enabled\n" "tunefs: gjournal: (-J) disabled\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:224 msgid "Look for the following indicators in the output:" msgstr "Ищите следующие индикаторы в выводе:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:226 msgid "Soft Updates enabled" msgstr "Soft Updates включены" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:227 msgid "Soft Updates journaling enabled" msgstr "Soft Updates с журналированием включены" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:229 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:644 msgid "" "Alternatively, `dumpfs(8)` can be used to inspect the file system superblock:" msgstr "" "Или для проверки суперблока файловой системы можно использовать `dumpfs(8)`:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:234 #, no-wrap msgid "" "# dumpfs /dev/ada0p2 | grep -i journal\n" "flags soft-updates+journal\n" msgstr "" "English type: delimited block - 4\n" "# dumpfs /dev/ada0p2 | grep -i journal\n" "flags soft-updates+journal\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:237 msgid "These commands are read-only and do not modify file system state." msgstr "" "Эти команды предназначены только для чтения и не изменяют состояние файловой " "системы." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:238 #, no-wrap msgid "File System Checks and Maintenance" msgstr "Проверка и обслуживание файловой системы" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:241 msgid "" "Although journaling dramatically reduces recovery time after a crash, it " "does not eliminate the need for periodic full file system checks." msgstr "" "Хотя журналирование значительно сокращает время восстановления после сбоя, " "оно не устраняет необходимость периодических полных проверок файловой " "системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:243 msgid "Journaling guarantees consistency, not correctness" msgstr "Журналирование гарантирует целостность, а не корректность" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:244 msgid "Media errors are not repaired by journaling" msgstr "Ошибки носителя не исправляются журналированием" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:245 msgid "Periodic `fsck` should still be scheduled" msgstr "Периодическая проверка `fsck` все еще должна быть запланирована" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:246 msgid "Background `fsck` can be used on live file systems" msgstr "Фоновый `fsck` может использоваться на работающих файловых системах" #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:247 #, no-wrap msgid "Using GEOM Journaling (Advanced)" msgstr "Использование журналирования GEOM (Продвинутый уровень)" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:252 msgid "" "This section is intended for advanced users who understand the implications " "of block-level journaling and altered sync semantics." msgstr "" "Данный раздел предназначен для опытных пользователей, которые понимают " "последствия журналирования на уровне блоков и изменения семантики " "синхронизации." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:259 msgid "" "This functionality is provided by loading the [.filename]#geom_journal.ko# " "module into the kernel (or building it into a custom kernel) and using the " "`gjournal` command to configure the file systems. In general, you would " "like to journal large file systems, like [.filename]#/usr#. You will need " "however (see the following section) to reserve some free disk space." msgstr "" "Возможность журналирования обеспечивается загрузкой модуля [." "filename]#geom_journal.ko# в ядро (или сборкой собственного ядра с " "активированием соответствующих опций) и использованием команды `gjournal` " "для конфигурирования файловой системы. В общем, вы предпочтете журналировать " "файловые системы большого размера, к примеру - [.filename]#/usr#. Однако, " "вам придется зарезервировать некоторое количество свободного места (см. " "следующий раздел)." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:262 msgid "" "GEOM journaling is implemented by the `geom_journal` kernel module and is " "configured using the `gjournal(8)` utility. It provides block-level " "journaling below the file system layer and requires explicit cooperation " "from UFS." msgstr "" "Журналирование GEOM реализовано модулем ядра `geom_journal` и настраивается " "с помощью утилиты `gjournal(8)`. Оно обеспечивает журналирование на уровне " "блоков ниже слоя файловой системы и требует явной поддержки со стороны UFS." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:265 msgid "" "When GEOM journaling is used, some disk space is needed to keep the journal " "itself. The provider that contains the file system data is referred to as " "the _data provider_, while the provider that stores the journal is referred " "to as the _journal provider_." msgstr "" "При использовании журналирования GEOM требуется некоторое дисковое " "пространство для хранения самого журнала. Провайдер, содержащий данные " "файловой системы, называется _провайдером данных_, а провайдер, хранящий " "журнал, называется _провайдером журнала_." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:270 msgid "" "When journaling an existing (non-empty) file system, the data and journal " "providers must be separate. When journaling a new, empty file system, a " "single provider may be used to store both data and journal information. In " "both cases, `gjournal(8)` combines the data and journal providers to create " "a new journaled provider, which is then mounted by the file system. For " "example:" msgstr "" "При журналировании существующей (непустой) файловой системы провайдеры " "данных и журнала должны быть раздельными. При журналировании новой, пустой " "файловой системы, один провайдер может использоваться для хранения как " "данных, так и информации журнала. В обоих случаях `gjournal(8)` объединяет " "провайдеры данных и журнала для создания нового журналируемого провайдера, " "который затем монтируется файловой системой. Например:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:272 msgid "" "The `/usr` file system resides on `/dev/ada0p2` and already contains data." msgstr "" "Файловая система `/usr` расположена на `/dev/ada0p2` и уже содержит данные." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:273 msgid "" "Free disk space has been allocated in a separate partition, `/dev/ada0p4`, " "to hold the journal." msgstr "" "Свободное дисковое пространство выделено в отдельном разделе, `/dev/ada0p4`, " "для хранения журнала." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:275 msgid "" "After configuring GEOM journaling, a new provider `/dev/ada0p2.journal` is " "created. This journaled provider combines `/dev/ada0p2` as the data " "provider and `/dev/ada0p4` as the journal provider and is used for all " "subsequent file system operations." msgstr "" "После настройки журналирования GEOM создается новый провайдер `/dev/ada0p2." "journal`. Этот журналируемый провайдер объединяет `/dev/ada0p2` в качестве " "провайдера данных и `/dev/ada0p4` в качестве провайдера журнала и " "используется для всех последующих операций файловой системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:278 msgid "" "The amount of disk space required for the journal depends primarily on the " "write workload of the file system rather than on the size of the data " "provider. Systems with sustained or bursty write activity require larger " "journals to avoid excessive journal switching or write throttling." msgstr "" "Объем дискового пространства, необходимого для журнала, в первую очередь " "зависит от интенсивности записи в файловую систему, а не от размера " "поставщика данных. Системам с постоянной или импульсной активностью записи " "требуются журналы большего размера, чтобы избежать чрезмерного переключения " "журналов или ограничения записи." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:280 msgid "From the man page `gjournal(8)`:" msgstr "Из справочной страницы `gjournal(8)`:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:282 msgid "The default journal size is 1 GB." msgstr "Размер журнала по умолчанию составляет 1 ГБ." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:283 msgid "" "The recommended minimum journal size is twice the amount of installed " "physical memory." msgstr "" "Рекомендуемый минимальный размер журнала составляет удвоенный объем " "установленной оперативной памяти." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:284 msgid "" "The journal size should be chosen based on expected write load, not file " "system size." msgstr "" "Размер журнала должен выбираться на основе ожидаемой нагрузки записи, а не " "размера файловой системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:286 msgid "" "An undersized journal may result in degraded performance or forced journal " "switches under heavy write load." msgstr "" "Недостаточный размер журнала может привести к снижению производительности " "или вынужденным переключениям журнала при высокой нагрузке на запись." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:288 msgid "" "For more information about journaling, please read the manual page of man:" "gjournal[8]." msgstr "" "Для получения дополнительной информации о журналировании, пожалуйста, " "прочитайте страницу справочника, посвященную man:gjournal[8]." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:290 #, no-wrap msgid "Steps During the Installation of FreeBSD" msgstr "Действия, необходимые во время установки FreeBSD" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:294 msgid "" "This section describes optional installation-time preparation for systems " "that are configured to use GEOM journaling. The goal is to reserve disk " "space for journal providers that will later be associated with the `/usr` " "and `/var` file systems." msgstr "" "В этом разделе описывается необязательная подготовка во время установки для " "систем, настроенных на использование журналирования GEOM. Цель — " "зарезервировать дисковое пространство для журнальных провайдеров, которые " "впоследствии будут связаны с файловыми системами `/usr` и `/var`." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:295 #, no-wrap msgid "Reserving Space for Journaling" msgstr "Выделение места под журналирование" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:299 msgid "" "On a typical system with a single disk, the operating system, installed " "software, and user data all reside on the same device. The default " "automatic partitioning performed by the FreeBSD installer allocates most " "available space to `/usr`, with smaller partitions for `/var` and other " "mount points." msgstr "" "На типичной системе с одним диском операционная система, установленное " "программное обеспечение и пользовательские данные находятся на одном " "устройстве. Стандартное автоматическое разбиение, выполняемое установщиком " "FreeBSD, выделяет большую часть доступного пространства под `/usr`, с " "меньшими разделами для `/var` и других точек монтирования." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:303 msgid "" "By default, the installer allocates all available disk space to file systems " "and does not leave unused space. When GEOM journaling is planned for " "existing (non-empty) file systems, additional disk space must be reserved to " "hold journal providers. Each file system that will be journaled requires " "its own journal provider." msgstr "" "По умолчанию установщик выделяет всё доступное дисковое пространство для " "файловых систем и не оставляет неиспользуемого места. Если планируется " "использование журналирования GEOM для существующих (непустых) файловых " "систем, необходимо зарезервировать дополнительное дисковое пространство для " "размещения журнальных провайдеров. Каждая файловая система, которая будет " "журналироваться, требует собственного журнального провайдера." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:305 msgid "" "Since `/usr` typically occupies the largest portion of the disk, it is " "usually the most practical partition to reduce slightly in order to make " "room for journal providers." msgstr "" "Поскольку `/usr` обычно занимает наибольшую часть диска, это наиболее " "практичный раздел для небольшого уменьшения, чтобы освободить место для " "журналируемых провайдеров." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:307 msgid "In our example GEOM journaling is planned for both `/usr` and `/var`." msgstr "" "В нашем примере журналирование GEOM планируется как для `/usr`, так и для " "`/var`." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:308 #, no-wrap msgid "Partitioning Strategy" msgstr "Стратегия разбиения на разделы" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:312 msgid "" "During installation, use the manual partitioning mode provided by the " "installer. Create any supported file system type for `/`, and create " "standard UFS partitions for `/usr` and `/var`, but reduce the size of `/usr` " "to leave sufficient unallocated space at the end of the disk." msgstr "" "Во время установки используйте режим ручного разбиения, предоставляемый " "установщиком. Создайте любую поддерживаемую файловую систему для `/`, а " "также стандартные разделы UFS для `/usr` и `/var`, но уменьшите размер `/usr`" ", чтобы оставить достаточно нераспределенного пространства в конце диска." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:314 msgid "" "From the remaining unallocated space, create two additional partitions that " "will be used exclusively as journal providers:" msgstr "" "Из оставшегося нераспределенного пространства создайте два дополнительных " "раздела, которые будут использоваться исключительно в качестве журнальных " "провайдеров:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:316 msgid "One partition for the `/usr` journal" msgstr "Один раздел для журнала `/usr`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:317 msgid "One partition for the `/var` journal" msgstr "Один раздел для журнала `/var`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:320 msgid "" "These partitions must not be assigned mount points and must not be used for " "swap. They will remain unused until they are explicitly associated with " "their corresponding data providers using `gjournal(8)` after installation." msgstr "" "Эти разделы не должны иметь назначенных точек монтирования и не должны " "использоваться для подкачки. Они останутся неиспользованными до тех пор, " "пока не будут явно связаны с соответствующими поставщиками данных с помощью " "`gjournal(8)` после установки." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:322 msgid "A typical layout may look like the following:" msgstr "Типичная схема может выглядеть следующим образом:" #. type: Block title #: documentation/content/en/articles/gjournal-desktop/_index.adoc:323 #, no-wrap msgid "Partitions Reserved for GEOM Journaling" msgstr "Разделы, Зарезервированные для Журналирования GEOM" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:327 #, no-wrap msgid "Provider" msgstr "Поставщик" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:328 #, no-wrap msgid "Intended Use" msgstr "Предназначение" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:330 #, no-wrap msgid "Notes" msgstr "Заметки" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:331 #, no-wrap msgid "/dev/ada0p2" msgstr "/dev/ada0p2" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:332 #, no-wrap msgid "/var" msgstr "/var" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:334 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:338 #, no-wrap msgid "UFS file system (data provider)" msgstr "Файловая система UFS (поставщик данных)" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:335 #, no-wrap msgid "/dev/ada0p3" msgstr "/dev/ada0p3" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:336 #, no-wrap msgid "/usr" msgstr "/usr" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:339 #, no-wrap msgid "/dev/ada0p4" msgstr "/dev/ada0p4" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:340 #, no-wrap msgid "Journal for /var" msgstr "Журнал для /var" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:342 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:345 #, no-wrap msgid "Unformatted, unused partition" msgstr "Неформатированный, неиспользуемый раздел" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:343 #, no-wrap msgid "/dev/ada0p5" msgstr "/dev/ada0p5" #. type: Table #: documentation/content/en/articles/gjournal-desktop/_index.adoc:344 #, no-wrap msgid "Journal for /usr" msgstr "Журнал для /usr" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:349 msgid "" "The exact device names will vary depending on the disk layout and " "partitioning scheme. It is strongly recommended to record the provider " "names during installation, as they will be required during journal " "configuration." msgstr "" "Точные названия устройств могут различаться в зависимости от структуры диска " "и схемы разделов. Настоятельно рекомендуется записать имена провайдеров во " "время установки, так как они потребуются при настройке журнала." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:350 #, no-wrap msgid "Journal Size Considerations" msgstr "Соображения по размеру журнала" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:355 msgid "" "Journal size depends on the expected write workload rather than on the size " "of the file system. For general-purpose systems, journal sizes of 1–2 GB " "are commonly sufficient. Systems with sustained or bursty write activity " "may require larger journals." msgstr "" "Размер журнала зависит от ожидаемой нагрузки на запись, а не от размера " "файловой системы. Для систем общего назначения обычно достаточно журналов " "размером 1–2 ГБ. Системам с постоянной или импульсной активностью записи " "могут потребоваться журналы большего размера." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:357 msgid "" "Allocate journal space conservatively during installation, as resizing " "partitions later may require additional downtime." msgstr "" "Выделяйте пространство под журнал экономно во время установки, так как " "изменение размера разделов позже может потребовать дополнительного времени " "простоя." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:358 #, no-wrap msgid "Completing the Installation" msgstr "Завершение инсталляции" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:362 msgid "" "After reserving the required partitions, complete the FreeBSD installation " "normally. It is recommended to postpone the installation of third-party " "software and additional system configuration until GEOM journaling has been " "fully configured." msgstr "" "После резервирования необходимых разделов завершите установку FreeBSD в " "обычном режиме. Рекомендуется отложить установку стороннего программного " "обеспечения и дополнительную настройку системы до полной настройки " "журналирования GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:365 msgid "" "At this stage, the system will boot using the standard UFS file systems. " "The reserved journal partitions will remain unused until journaling is " "explicitly enabled." msgstr "" "На этом этапе система загрузится с использованием стандартных файловых " "систем UFS. Зарезервированные журнальные разделы останутся неиспользованными " "до тех пор, пока журналирование не будет явно включено." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:367 #, no-wrap msgid "First Boot After Installation" msgstr "Первая загрузка после установки" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:371 msgid "" "After the first successful boot, no immediate configuration changes are " "required. The system should be verified to boot and operate normally before " "proceeding." msgstr "" "После первого успешного запуска немедленные изменения конфигурации не " "требуются. Следует убедиться, что система загружается и работает нормально, " "прежде чем продолжить." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:373 msgid "" "Once the base system is confirmed to be functional, the next steps involve:" msgstr "" "После того, как подтверждено, что базовая система работоспособна, следующие " "шаги включают:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:375 msgid "Loading or enabling GEOM journaling support" msgstr "Загрузка или включение поддержки журналирования GEOM" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:376 msgid "Associating journal providers with their corresponding data providers" msgstr "" "Связывание журнальных провайдеров с соответствующими провайдерами данных" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:377 msgid "Updating `/etc/fstab` to mount the journaled devices" msgstr "Обновление `/etc/fstab` для монтирования журналируемых устройств" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:379 msgid "These steps are described in the following section." msgstr "Эти шаги описаны в следующем разделе." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:381 #, no-wrap msgid "Setting Up Journaling" msgstr "Настройка журналирования" #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:384 #, no-wrap msgid "Enabling GEOM Journaling on Existing File Systems" msgstr "Включение журналирования GEOM в существующих файловых системах" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:387 msgid "" "This section describes how to enable GEOM journaling on the `/usr` and `/" "var` file systems using the partitions prepared during installation." msgstr "" "В этом разделе описывается, как включить журналирование GEOM для файловых " "систем `/usr` и `/var`, используя разделы, подготовленные в процессе " "установки." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:390 msgid "" "Once the required journal providers have been reserved, GEOM journaling can " "be configured. Because the file systems to be journaled must not be " "mounted, the system must be switched to single-user mode." msgstr "" "После резервирования необходимых журнальных провайдеров можно настроить " "журналирование GEOM. Поскольку файловые системы, подлежащие журналированию, " "не должны быть смонтированы, систему необходимо переключить в " "однопользовательский режим." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:392 msgid "Log in as `root` and enter:" msgstr "Залогиньтесь `root` и введите:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:396 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:719 #, no-wrap msgid "# shutdown now\n" msgstr "# shutdown now\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:401 msgid "" "Press kbd:[Enter] to obtain a root shell. Unmount the file systems that " "will be journaled. In this example, `/usr` and `/var`:" msgstr "" "Нажмите kbd:[Enter] для получения приглашения командного интерпретатора в " "режиме root. Нам необходимо будет размонтировать разделы, которые подлежат " "журналированию, в нашем примере это [.filename]#/usr# и [.filename]#/var#:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:405 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:726 #, no-wrap msgid "# umount /usr /var\n" msgstr "# umount /usr /var\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:408 msgid "Load the GEOM journaling kernel module:" msgstr "Загрузите модуль ядра GEOM journaling:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:412 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:691 #, no-wrap msgid "# gjournal load\n" msgstr "# gjournal load\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:416 msgid "" "Next, associate each data provider with its corresponding journal provider. " "Use your notes to determine which partition will be used for each journal." msgstr "" "Далее, свяжите каждого поставщика данных с соответствующим поставщиком " "журналов. Используйте свои заметки, чтобы определить, какой раздел будет " "использоваться для каждого журнала." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:418 msgid "In this example:" msgstr "В этом примере:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:420 msgid "" "`/usr` resides on `/dev/ada0p3` and its journal provider is `/dev/ada0p5`" msgstr "" "`/usr` находится на `/dev/ada0p3`, а его журнальный провайдер — `/dev/ada0p5`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:421 msgid "" "`/var` resides on `/dev/ada0p2` and its journal provider is `/dev/ada0p4`" msgstr "" "`/var` находится на `/dev/ada0p2`, а его журнальный провайдер — `/dev/ada0p4`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:423 msgid "Create the journaled providers using `gjournal(8)`:" msgstr "Создайте журналируемые провайдеры с помощью `gjournal(8)`:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:430 #, no-wrap msgid "" "# gjournal label ada0p3 ada0p5\n" "GEOM_JOURNAL: Journal 2948326772: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" msgstr "" "# gjournal label ada0p3 ada0p5\n" "GEOM_JOURNAL: Journal 2948326772: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:435 #, no-wrap msgid "" "# gjournal label ada0p2 ada0p4\n" "GEOM_JOURNAL: Journal 3193218002: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" msgstr "" "# gjournal label ada0p2 ada0p4\n" "GEOM_JOURNAL: Journal 3193218002: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:442 msgid "" "If `gjournal` reports that the last sector of a provider is in use, the " "command will fail. On freshly created or unused partitions, it is safe to " "retry the operation with the `-f` flag to force initialization:" msgstr "" "Если `gjournal` сообщает, что последний сектор провайдера используется, " "команда завершится неудачей. На свежесозданных или неиспользуемых разделах " "безопасно повторить операцию с флагом `-f` для принудительной инициализации:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:446 #, no-wrap msgid "# gjournal label -f /dev/ada0p2 /dev/ada0p4\n" msgstr "# gjournal label -f /dev/ada0p2 /dev/ada0p4\n" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:450 msgid "After labeling, two new journaled providers are created:" msgstr "После маркировки создаются два новых журналируемых провайдера:" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:452 msgid "`/dev/ada0p3.journal` for `/usr`" msgstr "`/dev/ada0p3.journal` для `/usr`" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:453 msgid "`/dev/ada0p2.journal` for `/var`" msgstr "`/dev/ada0p2.journal` для `/var`" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:455 msgid "" "These devices will replace the original data providers when mounting the " "file systems." msgstr "" "Эти устройства заменят исходные источники данных при монтировании файловых " "систем." #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:457 msgid "" "Before mounting, we must however set the journal flag on them and clear the " "Soft Updates flag:" msgstr "" "Перед монтированием необходимо установить для них флаг журнала и снять флаг " "Soft Updates:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:465 #, no-wrap msgid "" "# tunefs -J enable -n disable -j disable /dev/ada0p3.journal\n" "tunefs: soft updates journaling cleared but soft updates still set\n" "tunefs: remove .sujournal to reclaim space\n" "tunefs: gjournal set\n" "tunefs: soft updates cleared\n" msgstr "" "# tunefs -J enable -n disable -j disable /dev/ada0p3.journal\n" "tunefs: soft updates journaling cleared but soft updates still set\n" "tunefs: remove .sujournal to reclaim space\n" "tunefs: gjournal set\n" "tunefs: soft updates cleared\n" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:471 #, no-wrap msgid "" "# tunefs -J enable -n disable -j disable /dev/ada0p2.journal\n" "tunefs: soft updates journaling cleared but soft updates still set\n" "tunefs: remove .sujournal to reclaim space\n" "tunefs: gjournal set\n" "tunefs: soft updates cleared\n" msgstr "" "# tunefs -J enable -n disable -j disable /dev/ada0p2.journal\n" "tunefs: soft updates journaling cleared but soft updates still set\n" "tunefs: remove .sujournal to reclaim space\n" "tunefs: gjournal set\n" "tunefs: soft updates cleared\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:474 msgid "" "Now, mount the new devices manually at their respective places to verify " "correct operation (note that we can now use the `async` mount option) and " "remove [.filename]#.sujournal# to reclaim space:" msgstr "" "Теперь, смонтируйте новые устройства в соответствующие места файловой " "системы (обратите внимание на то, что мы можем использовать опцию " "монтирования `async`) и удалите [.filename]#.sujournal#, чтобы освободить " "место на диске:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:481 #, no-wrap msgid "" "# mount -o async /dev/ada0p2.journal /var\n" "# rm /var/.sujournal\n" "# mount -o async /dev/ada0p3.journal /usr\n" "# rm /usr/.sujournal\n" msgstr "" "# mount -o async /dev/ada0p2.journal /var\n" "# rm /var/.sujournal\n" "# mount -o async /dev/ada0p3.journal /usr\n" "# rm /usr/.sujournal\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:484 msgid "" "Edit [.filename]#/etc/fstab# and update the entries for [.filename]#/usr# " "and [.filename]#/var#:" msgstr "" "Откройте [.filename]#/etc/fstab# и исправьте записи для следующих файловых " "систем: [.filename]#/usr# и [.filename]#/var#:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:489 #, no-wrap msgid "" "/dev/ada0p3.journal /usr ufs rw,async 2 2\n" "/dev/ada0p2.journal /var ufs rw,async 2 2\n" msgstr "" "/dev/ada0p3.journal /usr ufs rw,async 2 2\n" "/dev/ada0p2.journal /var ufs rw,async 2 2\n" #. type: delimited block = 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:494 msgid "" "Make sure the above entries are correct, or you will have trouble starting " "up normally after you reboot!" msgstr "" "Проверьте корректность всех указанных параметров - в противном случае после " "перезагрузки возможны проблемы со стандартным запуском системы!" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:497 msgid "" "Finally, edit [.filename]#/boot/loader.conf# and add the following line so " "the man:gjournal[8] module is loaded at every boot:" msgstr "" "Наконец, внесите изменения в [.filename]#/boot/loader.conf#, добавив строку " "для автоматической загрузки модуля man:gjournal[8] при каждом старте системы:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:501 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:683 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:817 #, no-wrap msgid "geom_journal_load=\"YES\"\n" msgstr "geom_journal_load=\"YES\"\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:505 msgid "" "Congratulations! Your system is now set for journaling. You can either type " "`exit` to return to multi-user mode, or reboot to test your configuration " "(recommended)." msgstr "" "Поздравляем! Ваша система теперь настроена для журналирования. Вы можете " "ввести команду `exit` для возврата в многопользовательский режим или " "перезагрузить систему для проверки конфигурации (рекомендуется)." #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:509 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:763 #, no-wrap msgid "# shutdown -r now\n" msgstr "# shutdown -r now\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:512 msgid "During the boot you will see messages like the following:" msgstr "Во время перезагрузки вы увидите сообщение следующего вида:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:522 #, no-wrap msgid "" "# dmesg | grep GEOM_JOURNAL\n" "GEOM_JOURNAL: Journal 2948326772: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" msgstr "" "# dmesg | grep GEOM_JOURNAL\n" "GEOM_JOURNAL: Journal 2948326772: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:525 msgid "After an unclean shutdown, the messages will vary slightly, i.e.:" msgstr "" "После некорректного завершения работы сообщения будут немного отличаться, " "например:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:529 #, no-wrap msgid "GEOM_JOURNAL: Journal ada0p2 consistent.\n" msgstr "GEOM_JOURNAL: Journal ada0p2 consistent.\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:532 msgid "" "This usually means that man:gjournal[8] used the information in the journal " "provider to return the file system to a consistent state." msgstr "" "Обычно это означает, что man:gjournal[8] использовал информацию из журнала " "для приведения файловой системы в согласованное состояние." #. type: Title ==== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:534 #, no-wrap msgid "Enabling GEOM Journaling on Newly Created Partitions" msgstr "Включение журналирования GEOM на вновь созданных разделах" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:538 msgid "" "The procedure described earlier is required when enabling GEOM journaling on " "file systems that already contain data. When journaling a newly created, " "empty partition, the process is simpler because both the data and journal " "providers can reside within the same partition." msgstr "" "Процедура, описанная ранее, необходима при включении журналирования GEOM на " "файловых системах, которые уже содержат данные. При журналировании только " "что созданного, пустого раздела процесс проще, так как и данные, и " "журнальные провайдеры могут находиться в одном разделе." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:540 msgid "" "This approach is typically used for new disks or newly allocated partitions " "that have not yet been formatted with a file system." msgstr "" "Такой подход обычно используется для новых дисков или недавно выделенных " "разделов, которые еще не были отформатированы под файловую систему." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:545 msgid "" "While the above procedure is necessary for journaling partitions that " "already contain data, journaling an empty partition is somewhat easier, " "since both the data and the journal provider can be stored in the same " "partition. For example, assume a new disk was installed, and a new " "partition [.filename]#/dev/ada1p1# was created. Creating the journal would " "be as simple as:" msgstr "" "Процедура, описанная выше, необходима для подключения журналирования " "разделов, содержащих данные. Журналирование пустых разделов немного проще, " "ввиду того, что поставщик данных и поставщик журнала могут быть размещены на " "одном и том же разделе. Например, предположим, что был установлен новый " "жёсткий диск и был создан новый раздел [.filename]#/dev/ada1p1#. Создание " "журнала не сложнее набора:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:549 #, no-wrap msgid "# gjournal label /dev/ada1p1\n" msgstr "# gjournal label /dev/ada1p1\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:555 msgid "" "The journal size will be 1 GB by default. You may adjust it by using the `-" "s` option. The value can be given in bytes, or appended by `K`, `M` or `G` " "to denote Kilobytes, Megabytes or Gigabytes respectively. Note that " "`gjournal` will not allow you to create unsuitably small journal sizes." msgstr "" "Размер журнала - 1 Гб по умолчанию. Однако, вы можете изменить это значение " "используя ключ `-s`. Значение можно задавать в байтах, в килобайтах, " "мегабайтах или гигабайтах (используя суффикс `K`, `M` или `G`). Имейте " "ввиду, что команда `gjournal` не позволит вам создать журнал недопустимо " "малого размера." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:557 msgid "" "For example, to create a 2 GB journal, you could use the following command:" msgstr "" "К примеру, чтобы создать журнал размером в 2Гб, можно использовать следующую " "команду:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:561 #, no-wrap msgid "# gjournal label -s 2G /dev/ada1p1\n" msgstr "# gjournal label -s 2G /dev/ada1p1\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:564 msgid "" "You can then initialyze a UFS file system on your new partition, enable " "journaling using `newfs(8)` on the `.journal` device, and disable Soft " "Updates using `tunefs(8)`:" msgstr "" "Далее, вы можете создать файловую систему UFS на новом разделе, разрешить " "журналирование, используя `newfs(8)` на устройстве `.journal`, и запретить " "Soft Updates, используя `tunefs(8)`:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:569 #, no-wrap msgid "" "# newfs -J /dev/ada1p1.journal\n" "# tunefs -n disable -j disable /dev/ada1p1.journal\n" msgstr "" "# newfs -J /dev/ada1p1.journal\n" "# tunefs -n disable -j disable /dev/ada1p1.journal\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:573 msgid "" "After the file system has been created, it can be mounted normally. For " "example, to mount it at `/data`:" msgstr "" "После создания файловой системы её можно смонтировать обычным способом. " "Например, чтобы смонтировать её в `/data`:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:577 #, no-wrap msgid "# mount /dev/ada1p1.journal /data\n" msgstr "# mount /dev/ada1p1.journal /data\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:580 msgid "" "To ensure the file system is mounted automatically at boot, add an entry to " "[.filename]#/etc/fstab#:" msgstr "" "Чтобы обеспечить автоматическое монтирование файловой системы при загрузке, " "добавьте запись в [.filename]#/etc/fstab#:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:584 #, no-wrap msgid "/dev/ada1p1.journal /data ufs rw,async 2 2\n" msgstr "/dev/ada1p1.journal /data ufs rw,async 2 2\n" #. type: Title ===== #: documentation/content/en/articles/gjournal-desktop/_index.adoc:586 #, no-wrap msgid "Notes on Usage" msgstr "Заметки по использованию" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:589 msgid "When using a single provider for both data and journal storage:" msgstr "При использовании одного провайдера для хранения данных и журналов:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:591 msgid "The partition must be empty before labeling" msgstr "Раздел должен быть пустым перед выполнением `gjournal label`" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:592 msgid "The journal space is allocated from within the partition" msgstr "Журнальное пространство выделяется внутри раздела диска" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:593 msgid "The file system size will be reduced by the size of the journal" msgstr "Размер файловой системы будет уменьшен на размер журнала" #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:595 #, no-wrap msgid "Building Journaling into Your Custom Kernel" msgstr "Встраивание журналирования в собственное ядро" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:599 msgid "" "If you do not wish to load `geom_journal` as a module, you can build its " "functions right into your kernel. Edit your custom kernel configuration " "file, and make sure it includes these two lines:" msgstr "" "Если вы не желаете загружать `geom_journal` как модуль, то можно встроить " "его функции прямо в ваше специализированное ядро. Редактируя " "конфигурационный файл ядра, убедитесь, что в нём находятся следующие две " "строки:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:603 #, no-wrap msgid "options UFS_GJOURNAL <1>\n" msgstr "options UFS_GJOURNAL <1>\n" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:605 #, no-wrap msgid "options GEOM_JOURNAL <2>\n" msgstr "options GEOM_JOURNAL <2>\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:608 msgid "Note: This is already in GENERIC" msgstr "Обратите внимание — это уже есть в GENERIC" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:609 msgid "You will have to add this one" msgstr "Вам надо добавить эту опцию" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:612 msgid "" "Rebuild and reinstall your kernel following the relevant extref:{handbook}" "kernelconfig[instructions in the FreeBSD Handbook., kernelconfig]" msgstr "" "Соберите и установите новое ядро следуя указаниям extref:{handbook}" "kernelconfig[Руководства FreeBSD., kernelconfig]" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:614 msgid "" "Do not forget to remove the relevant \"load\" entry from [.filename]#/boot/" "loader.conf# if you have previously used it." msgstr "" "И не забудьте удалить соответствующую строку загрузки модуля (\"load\") из [." "filename]#/boot/loader.conf# (если на предыдущем этапе она была туда " "внесена)." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:615 #, no-wrap msgid "Checking GEOM Journaling" msgstr "Проверка GEOM журналирования" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:618 msgid "" "GEOM journaling status can be verified by inspecting active GEOM providers." msgstr "" "Статус журналирования GEOM можно уточнить, проверив активные провайдеры GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:620 msgid "To list all active GEOM journal devices, run:" msgstr "" "Чтобы вывести список всех активных устройств журналирования GEOM, выполните:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:624 #, no-wrap msgid "# gjournal list\n" msgstr "# gjournal list\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:627 msgid "Or to view a summary of journal status:" msgstr "Или для просмотра сводки состояния журнала:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:631 #, no-wrap msgid "# gjournal status\n" msgstr "# gjournal status\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:635 msgid "" "Journaled file systems are identified by device names ending in `.journal`. " "The presence of these providers indicates that GEOM journaling is active." msgstr "" "Журналируемые файловые системы обозначаются именами устройств, " "оканчивающимися на `.journal`. Наличие этих провайдеров указывает на " "активность журналирования GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:637 msgid "Additional information about GEOM device stacking can be obtained with:" msgstr "" "Дополнительную информацию о цепочке устройств GEOM можно получить с помощью:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:641 #, no-wrap msgid "# geom -t\n" msgstr "# geom -t\n" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:649 #, no-wrap msgid "" "# dumpfs /dev/ada0p2.journal | grep -i journal\n" "flags gjournal\n" msgstr "" "# dumpfs /dev/ada0p2.journal | grep -i journal\n" "flags gjournal\n" #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:653 #, no-wrap msgid "Troubleshooting Journaling" msgstr "Устранение неполадок с журналированием" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:656 msgid "" "The following section covers frequently asked questions regarding problems " "related to journaling." msgstr "" "Этот раздел содержит часто задаваемые вопросы касательно неполадок, " "связанных с журналированием." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:657 #, no-wrap msgid "I am experiencing kernel panics during periods of high disk activity. Is this related to GEOM journaling?" msgstr "" "Я получаю паники ядра во время высокой дисковой активности. Это связано с " "журналированием GEOM?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:660 msgid "" "On modern FreeBSD systems, kernel panics caused solely by an undersized GEOM " "journal are rare." msgstr "" "На современных системах FreeBSD аварийные остановки системы, вызванные " "исключительно недостаточным размером журнала GEOM, встречаются редко." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:663 msgid "" "Under sustained or burst-heavy write workloads, an undersized journal " "typically results in write throttling or temporary I/O stalls while the " "journal is flushed to the data provider. A kernel panic may occur only in " "exceptional cases, usually in combination with additional problems such as I/" "O errors or resource exhaustion, where continuing operation could risk file " "system integrity." msgstr "" "При продолжительных или интенсивных всплесках нагрузки на запись, " "недостаточный размер журнала обычно приводит к регулированию записи или " "временным задержкам ввода-вывода во время сброса журнала на устройство " "хранения данных. Аварийная остановка системы может возникнуть лишь в " "исключительных случаях, обычно в сочетании с дополнительными проблемами, " "такими как ошибки ввода-вывода или исчерпание ресурсов, когда продолжение " "работы может угрожать целостности файловой системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:665 msgid "" "If panics are observed during heavy write activity, increasing the size of " "the journal provider for the affected file system is recommended." msgstr "" "Если наблюдаются аварийные остановки при интенсивной активности записи, " "рекомендуется увеличить размер журнала для затронутой файловой системы." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:666 #, no-wrap msgid "I made some mistake during configuration, and I cannot boot normally now. Can this be fixed some way?" msgstr "Я допустил некоторые ошибки во время конфигурирования, теперь система не загружается. Можно это как-нибудь исправить?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:672 msgid "" "You either forgot (or misspelled) the entry in [.filename]#/boot/loader." "conf#, or there are errors in your [.filename]#/etc/fstab# file. These are " "usually easy to fix. During system startup, when the boot process stops and " "prompts for single-user mode (for example after a failed mount or `fsck` " "error), press kbd:[Enter] to get to the default single user shell. Then " "locate the root of the problem:" msgstr "" "Вы либо забыли внести запись (опечатались) в [.filename]#/boot/loader.conf#, " "либо есть ошибки в файле [.filename]#/etc/fstab#. Это легко исправить. Во " "время загрузки системы, когда процесс загрузки остановится и появится запрос " "входа в однопользовательский режим (например, после сбоя монтирования или " "ошибки `fsck`), нажмите kbd:[Enter], чтобы получить приглашение командного " "интерпретатора в однопользовательском режиме. Потом, проверьте возможные " "варианты:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:676 #, no-wrap msgid "# cat /boot/loader.conf\n" msgstr "# cat /boot/loader.conf\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:679 msgid "Ensure that the following line exists and is spelled correctly:" msgstr "Убедитесь, что следующая строка существует и написана правильно:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:687 msgid "" "If the `geom_journal_load` entry is missing or misspelled, the journaled " "devices are never created. Load the module manually, mount all partitions, " "and continue with multi-user boot:" msgstr "" "Если отсутствует запись `geom_journal_load`, или она содержит ошибки, " "журналируемые устройства не создадутся. Загрузите модуль вручную, " "примонтируйте все разделы и переходите в многопользовательский режим " "(продолжайте загрузку):" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:698 #, no-wrap msgid "" "GEOM_JOURNAL: Journal 2948326772: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" msgstr "" "GEOM_JOURNAL: Journal 2948326772: ada0p4 contains journal.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p5 contains journal.\n" "GEOM_JOURNAL: Journal 2948326772: ada0p2 contains data.\n" "GEOM_JOURNAL: Journal ada0p2 clean.\n" "GEOM_JOURNAL: Journal 3193218002: ada0p3 contains data.\n" "GEOM_JOURNAL: Journal ada0p3 clean.\n" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:702 #, no-wrap msgid "" "# mount -a\n" "# exit\n" "(boot continues)\n" msgstr "" "# mount -a\n" "# exit\n" "(boot continues)\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:707 msgid "" "If, on the other hand, this entry is correct, have a look at [.filename]#/" "etc/fstab#. You will probably find a misspelled or missing entry. In this " "case, mount all remaining partitions by hand and continue with the multi-" "user boot." msgstr "" "Если же запись о `geom_journal_load` верна, то проверьте [.filename]#/etc/" "fstab#. Вероятней всего, что вы обнаружите опечатку или отсутствие " "необходимой записи. В этом случае смонтируйте вручную оставшиеся разделы и " "продолжите загрузку в многопользовательский режим." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:708 #, no-wrap msgid "Can I remove journaling and return to my standard file system with Soft Updates?" msgstr "Возможно ли отказаться от журналирования и вернуться к моей привычной файловой системе с механизмом Soft Updates?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:713 msgid "" "Sure. Use the following procedure, which reverses the changes. The " "partitions you created for the journal providers can then be used for other " "purposes, if you so wish." msgstr "" "Несомненно. Используйте приведённую ниже последовательность действий, " "которая обращает изменения. Разделы, созданные для поставщиков журналов, " "могут позже быть использованы для других целей." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:715 msgid "Login as `root` and switch to single user mode:" msgstr "Залогиньтесь `root` и переведите систему в однопользовательский режим:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:722 msgid "Unmount the journaled partitions:" msgstr "Размонтируйте журналируемые разделы:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:729 msgid "Synchronize the journals:" msgstr "Синхронизируйте журналы:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:733 #, no-wrap msgid "# gjournal sync\n" msgstr "# gjournal sync\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:736 msgid "Stop the journaling providers:" msgstr "Остановите поставщиков журналов:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:741 #, no-wrap msgid "" "# gjournal stop ada0p2.journal\n" "# gjournal stop ada0p3.journal\n" msgstr "" "# gjournal stop ada0p2.journal\n" "# gjournal stop ada0p3.journal\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:745 msgid "" "Next step should be done with unloaded gjournal kernel module. If the " "following command fails:" msgstr "" "Следующий шаг должен быть выполнен с выгруженным модулем ядра gjournal. Если " "следующая команда завершится неудачей:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:750 msgid "... # gjournal unload ..." msgstr "... # gjournal unload ..." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:752 msgid "" "ensure that the following line exists in [.filename]#/boot/loader.conf# and " "is spelled correctly:" msgstr "" "Убедитесь, что следующая строка присутствует в [.filename]#/boot/loader.conf#" " и написана правильно:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:756 #, no-wrap msgid "geom_journal_load=\"NO\"\n" msgstr "geom_journal_load=\"NO\"\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:759 msgid "Reboot your desktop without gjournal kernel module:" msgstr "Перезагрузите ваш компьютер без модуля ядра gjournal:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:766 msgid "" "Boot into single-user mode again. Clear the journaling metadata from all the " "devices used:" msgstr "" "Войдите в систему в однопользовательском режиме еще раз. Удалите метаданные " "журналирования со всех задействованных устройств:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:773 #, no-wrap msgid "" "# gjournal clear ada0p2\n" "# gjournal clear ada0p3\n" "# gjournal clear ada0p4\n" "# gjournal clear ada0p5\n" msgstr "" "# gjournal clear ada0p2\n" "# gjournal clear ada0p3\n" "# gjournal clear ada0p4\n" "# gjournal clear ada0p5\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:776 msgid "" "Clear the file system journaling flag, and restore the Soft Updates flags:" msgstr "Снимите флаг журналирования и установите флаги механизма Soft Updates:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:783 #, no-wrap msgid "" "# tunefs -J disable -n enable -j enable ada0p2\n" "tunefs: soft updates journaling set\n" "tunefs: gjournal cleared\n" "tunefs: soft updates set\n" msgstr "" "# tunefs -J disable -n enable -j enable ada0p2\n" "tunefs: soft updates journaling set\n" "tunefs: gjournal cleared\n" "tunefs: soft updates set\n" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:788 #, no-wrap msgid "" "# tunefs -J disable -n enable -j enable ada0p3\n" "tunefs: soft updates journaling set\n" "tunefs: gjournal cleared\n" "tunefs: soft updates set\n" msgstr "" "# tunefs -J disable -n enable -j enable ada0p3\n" "tunefs: soft updates journaling set\n" "tunefs: gjournal cleared\n" "tunefs: soft updates set\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:791 msgid "Remount the old devices by hand:" msgstr "Смонтируйте вручную старые (первоначальные) устройства:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:796 #, no-wrap msgid "" "# mount -o rw /dev/ada0p2 /var\n" "# mount -o rw /dev/ada0p3 /usr\n" msgstr "" "# mount -o rw /dev/ada0p2 /var\n" "# mount -o rw /dev/ada0p3 /usr\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:799 msgid "Edit [.filename]#/etc/fstab# and restore it to its original state:" msgstr "" "Откройте файл [.filename]#/etc/fstab# и приведите его к изначальному виду:" #. type: delimited block . 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:804 #, no-wrap msgid "" "/dev/ada0p2 /usr ufs rw 2 2\n" "/dev/ada0p3 /var ufs rw 2 2\n" msgstr "" "/dev/ada0p2 /usr ufs rw 2 2\n" "/dev/ada0p3 /var ufs rw 2 2\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:807 msgid "" "Finally, edit [.filename]#/boot/loader.conf#, remove the entry that loads " "the `geom_journal` module (or re-enable it if gjournal is still required for " "other partitions), and reboot." msgstr "" "И напоследок, удалите строку, загружающую модуль `geom_journal`, из файла [." "filename]#/boot/loader.conf# (или включите его опять, если он по прежнему " "требуется для других разделов диска), и перезагрузите операционную систему." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:808 #, no-wrap msgid "How do I temporarily boot without GEOM journaling?" msgstr "Как временно загрузиться без журналирования GEOM?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:811 msgid "" "To boot the system without GEOM journaling, prevent the journal module from " "loading during startup." msgstr "" "Чтобы загрузить систему без журналирования GEOM, предотвратите загрузку " "модуля журнала во время запуска." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:813 msgid "" "Comment out or remove the following line from [.filename]#/boot/loader.conf# " "and reboot:" msgstr "" "Закомментируйте или удалите соответствующую строку из [.filename]#/boot/" "loader.conf# и перезагрузитесь:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:821 msgid "" "After booting without GEOM journaling, journaled devices (`*.journal`) will " "not be created. File Systems must be mounted using their original (non-" "journaled) providers, or mounted manually as needed for recovery or " "maintenance." msgstr "" "После загрузки без журналирования GEOM, журналируемые устройства (`*." "journal`) не будут созданы. Файловые системы должны быть смонтированы с " "использованием их исходных (не журналируемых) провайдеров или вручную по " "мере необходимости для восстановления или обслуживания." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:823 msgid "" "This method does not modify on-disk journal metadata and can be safely used " "for troubleshooting." msgstr "" "Этот метод не изменяет метаданные журнала на диске и может безопасно " "использоваться для устранения неполадок." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:824 #, no-wrap msgid "Can I resize a GEOM journal after it has been created?" msgstr "Можно ли изменить размер журнала GEOM после его создания?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:827 msgid "" "No. A GEOM journal cannot be resized in place after it has been created." msgstr "" "Нет. Журнал GEOM не может быть изменен в размере на месте после его создания." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:831 msgid "" "The journal size is fixed at the time the journal is labeled. To change the " "journal size, GEOM journaling must be removed and reconfigured with a new " "journal provider of the desired size. For file systems containing data, " "this requires unmounting the file system and recreating the journal using " "appropriately sized providers, as described earlier in this article." msgstr "" "Размер журнала фиксируется в момент выполнения `gjournal label` . Чтобы " "изменить размер журнала, необходимо удалить журналирование GEOM и " "переконфигурировать его с новым провайдером журнала желаемого размера. Для " "файловых систем, содержащих данные, это требует размонтирования файловой " "системы и воссоздания журнала с использованием провайдеров соответствующего " "размера, как описано ранее в этой статье." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:833 msgid "" "Plan journal sizes conservatively to accommodate peak write activity, as " "resizing requires reinitialization of the journal configuration." msgstr "" "Планируйте размеры журналов консервативно, чтобы они соответствовали пиковой " "активности записи, так как изменение размера требует повторной инициализации " "конфигурации журнала." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:834 #, no-wrap msgid "What happens after an unclean shutdown or power failure?" msgstr "Что происходит после некорректного завершения работы или сбоя питания?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:837 msgid "" "After an unclean shutdown or power failure, GEOM journaling and Soft Updates " "with journaling replay the pending journal records during the next boot to " "return the file system to a consistent state." msgstr "" "После некорректного завершения работы или сбоя питания, журналирование GEOM " "и Soft Updates с журналированием воспроизводят ожидающие записи журнала во " "время следующей загрузки, чтобы вернуть файловую систему в согласованное " "состояние." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:840 msgid "" "If the journal replay completes successfully, the file system is mounted " "normally and no full file system check is required. Journal replay " "typically takes only a few seconds and depends on the amount of recent write " "activity rather than the size of the file system." msgstr "" "Если восстановление журнала завершается успешно, файловая система " "монтируется в обычном режиме, и полная проверка файловой системы не " "требуется. Восстановление журнала обычно занимает всего несколько секунд и " "зависит от объема недавней активности записи, а не от размера файловой " "системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:842 msgid "" "A full file system check may still be required in rare cases, such as when " "underlying storage errors are detected or the journal itself is inconsistent." msgstr "" "Полная проверка файловой системы может потребоваться в редких случаях, " "например, при обнаружении ошибок в устройстве хранения или несоответствии " "самого журнала." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:843 #, no-wrap msgid "How does GEOM journaling interact with fsck?" msgstr "Как взаимодействует журналирование GEOM с fsck?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:846 msgid "" "GEOM journaling and Soft Updates with journaling interact with `fsck_ffs(8)` " "in different ways, reflecting their different integration levels in the " "FreeBSD storage stack." msgstr "" "Журналирование GEOM и Soft Updates с журналированием взаимодействуют с " "`fsck_ffs(8)` различными способами, отражая их разные уровни интеграции в " "стеке хранения FreeBSD." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:851 msgid "" "For GEOM journaling, crash recovery is performed by the GEOM framework " "itself. During system startup, the `geom_journal` class detects journal " "metadata and replays any pending journal records while the provider is being " "tasted by GEOM, before the journaled device becomes visible to higher layers " "of the system. If journal replay completes successfully, the file system is " "returned to a consistent state and the UFS superblock is updated to indicate " "that no file system check is required. When `fsck_ffs(8)` is later invoked " "during boot, it reads this state from the superblock and skips the file " "system check." msgstr "" "Для журналирования GEOM восстановление после сбоя выполняется самой " "структурой GEOM. Во время запуска системы класс `geom_journal` обнаруживает " "метаданные журнала и воспроизводит все ожидающие записи журнала, пока " "провайдер обрабатывается GEOM, до того как журналируемое устройство станет " "видимым для более высоких уровней системы. Если воспроизведение журнала " "завершается успешно, файловая система возвращается в согласованное " "состояние, и суперблок UFS обновляется, чтобы указать, что проверка файловой " "системы не требуется. Когда позже во время загрузки вызывается `fsck_ffs(8)`" ", он считывает это состояние из суперблока и пропускает проверку файловой " "системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:856 msgid "" "For Soft Updates with journaling, recovery is initiated by `fsck_ffs(8)` " "itself. During the file system check phase at boot time, `fsck_ffs(8)` " "detects that the files ystem supports Soft Updates with journaling and " "invokes the journal replay logic. If journal replay reports that the file " "system is consistent, `fsck_ffs(8)` terminates early without performing a " "full check. If journal replay cannot complete successfully, a traditional " "file system check is performed." msgstr "" "Для Soft Updates с журналированием восстановление инициируется самим " "`fsck_ffs(8)`. Во время проверки файловой системы при загрузке, `fsck_ffs(8)`" " обнаруживает, что файловая система поддерживает Soft Updates с " "журналированием, и запускает логику воспроизведения журнала. Если " "воспроизведение журнала сообщает, что файловая система непротиворечива, " "`fsck_ffs(8)` завершается досрочно без выполнения полной проверки. Если " "воспроизведение журнала не может быть успешно завершено, выполняется " "традиционная проверка файловой системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:858 msgid "" "As a result, the recovery path during system startup depends on the " "journaling mechanism in use, as illustrated by the following boot sequence:" msgstr "" "В результате, путь восстановления во время загрузки системы зависит от " "используемого механизма журналирования, что иллюстрируется следующей " "последовательностью загрузки:" #. type: delimited block - 4 #: documentation/content/en/articles/gjournal-desktop/_index.adoc:885 #, no-wrap msgid "" "Firmware / Boot Loader\n" " |\n" " v\n" "Kernel initialization\n" " |\n" " v\n" "GEOM framework (provider tasting)\n" " |\n" " +--> GEOM journaling (gjournal)\n" " | - Journal replay occurs here\n" " | - Filesystem consistency is restored\n" " | - Superblock is updated\n" " |\n" " v\n" "Filesystem check phase (fsck_ffs)\n" " |\n" " +--> Soft Updates with journaling\n" " | - Journal replay initiated by fsck\n" " | - fsck exits early if consistent\n" " |\n" " v\n" "Filesystem mount\n" " |\n" " v\n" "Normal system operation\n" msgstr "" "Загрузчик системы\n" " |\n" " v\n" "Инициализация ядра\n" " |\n" " v\n" "Фреймворк GEOM framework (обнаружение поставщиков - tasting)\n" " |\n" " +--> Журналирование GEOM (gjournal)\n" " | - Выполнение записи на диск из журнала выполняется на этом " "этапе\n" " | - Согласованность файловой системы восстановлена\n" " | - Суперблок обновлен\n" " |\n" " v\n" "Фаза проверки файловой системы (fsck_ffs)\n" " |\n" " +--> Журналирование с Soft Updates\n" " | - Выполнение записи на диск из журнала, инициированное " "командой fsck\n" " | - fsck сразу выходит, если файловая система в согласованном " "состоянии\n" " |\n" " v\n" "Монтирование файловой системы\n" " |\n" " v\n" "Обычная работа системы\n" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:889 msgid "" "`fsck_ffs(8)` is still used when journal replay cannot be completed, when " "underlying storage errors are detected, or during periodic manual or " "scheduled file system checks. GEOM journaling reduces recovery time after " "crashes but does not replace `fsck_ffs(8)` entirely." msgstr "" "`fsck_ffs(8)` всё ещё используется, когда восстановление журнала не может " "быть завершено, при обнаружении ошибок базового хранилища или во время " "периодических ручных или запланированных проверок файловой системы. " "Журналирование GEOM сокращает время восстановления после сбоев, но не " "заменяет `fsck_ffs(8)` полностью." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:890 #, no-wrap msgid "Why does `gjournal clear` report \"Operation not permitted\" even in single-user mode?" msgstr "" "Почему команда `gjournal clear` сообщает \"Операция не разрешена\" даже в " "однопользовательском режиме?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:895 msgid "" "In GEOM, the same underlying storage can be exposed through multiple " "provider names at the same time. For example, a partition may be visible " "both under its disk-based name (e.g. `vtbd0p7`) and under a GPT label (e.g. " "`/dev/gpt/labelname`). These are different GEOM providers referring to the " "same physical storage." msgstr "" "В GEOM одно и то же базовое хранилище может быть представлено через " "несколько имён провайдеров одновременно. Например, раздел может быть виден " "как под своим именем, основанным на диске (например, `vtbd0p7`), так и под " "меткой GPT (например, `/dev/gpt/labelname`). Это разные провайдеры GEOM, " "ссылающиеся на одно и то же физическое хранилище." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:898 msgid "" "When `gjournal stop` or `gjournal clear` is executed on one provider name, " "the GEOM framework may immediately detect the journal metadata again through " "another provider name during the tasting process. As a result, the journal " "is re-attached automatically, and attempts to clear its metadata fail with " "an \"Operation not permitted\" error." msgstr "" "Когда команды `gjournal stop` или `gjournal clear` выполняются на одном " "имени провайдера, фреймворк GEOM может немедленно снова обнаружить " "метаданные журнала через другое имя провайдера в процессе распознавание " "устройства (tasting). В результате журнал автоматически повторно " "присоединяется, и попытки очистить его метаданные завершаются ошибкой " "\"Операция не разрешена\"." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:901 msgid "" "It is technically possible to suppress this behavior by disabling GEOM " "tasting or by preventing the creation of alternative provider names, but " "doing so is strongly discouraged. Such changes may negatively affect other " "GEOM classes and system components that rely on normal provider discovery." msgstr "" "Технически возможно подавить это поведение, отключив GEOM tasting или " "предотвратив создание альтернативных имён провайдеров, однако это крайне не " "рекомендуется. Такие изменения могут негативно повлиять на другие классы " "GEOM и системные компоненты, которые полагаются на обычное обнаружение " "провайдеров." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:904 msgid "" "For this reason, the recommended and safe procedure is to unload the " "`geom_journal` module entirely before removing journal metadata, as " "described earlier in this article. With the module unloaded, no tasting " "occurs and the journal cannot be re-attached, allowing `gjournal clear` to " "complete successfully." msgstr "" "По этой причине рекомендованная и безопасная процедура заключается в полной " "выгрузке модуля `geom_journal` перед удалением журнальных метаданных, как " "описано ранее в этой статье. При выгруженном модуле не происходит " "автоматического распознавания, и журнал не может быть повторно подключен, " "что позволяет команде `gjournal clear` завершиться успешно." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:905 #, no-wrap msgid "Can GEOM journaling be used on the root file system?" msgstr "Можно ли использовать журналирование GEOM на корневой файловой системе?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:908 msgid "" "Yes. GEOM journaling can be used on the root file system, but it requires " "additional care during system configuration." msgstr "" "Да. Журналирование GEOM может использоваться на корневой файловой системе, " "но требует дополнительной осторожности при настройке системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:911 msgid "" "The GEOM journal module must be loaded early during the boot process so that " "the journaled root device is available before the root file system is " "mounted. Misconfiguration may prevent the system from booting normally, so " "this setup is generally recommended only for experienced users who fully " "understand the boot sequence and recovery procedures." msgstr "" "Модуль GEOM journal должен быть загружен на раннем этапе процесса загрузки, " "чтобы журналируемое корневое устройство было доступно до монтирования " "корневой файловой системы. Неправильная конфигурация может помешать системе " "загрузиться в обычном режиме, поэтому данная настройка, как правило, " "рекомендуется только опытным пользователям, которые полностью понимают " "последовательность загрузки и процедуры восстановления." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:913 msgid "" "For these reasons, GEOM journaling is more commonly applied to non-root file " "systems such as `/usr` and `/var`." msgstr "" "По этим причинам журналирование GEOM чаще применяется к некорневым файловым " "системам, таким как `/usr` и `/var`." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:914 #, no-wrap msgid "What are the performance implications of using GEOM journaling?" msgstr "" "Каковы последствия для производительности при использовании журналирования " "GEOM?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:918 msgid "" "GEOM journaling introduces additional write I/O because all write operations " "are first recorded in the journal before being committed to the data " "provider. This results in increased write latency and higher overall write " "amplification compared to non-journaled file systems." msgstr "" "Ведение журнала GEOM вводит дополнительные операции записи ввода-вывода, " "поскольку все операции записи сначала регистрируются в журнале перед " "фиксацией на устройстве хранения данных. Это приводит к увеличению задержки " "записи и более высокому коэффициенту увеличения объёма записи по сравнению с " "файловыми системами без журналирования." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:922 msgid "" "Read performance is typically unaffected. The performance impact is most " "noticeable on write-heavy workloads and depends on journal size, placement, " "and the speed of the underlying storage. Using a sufficiently sized journal " "and fast storage for the journal provider minimizes performance penalties." msgstr "" "Производительность чтения обычно не страдает. Наиболее заметное влияние на " "производительность наблюдается при интенсивных нагрузках на запись и зависит " "от размера журнала, его размещения и скорости базового хранилища. " "Использование журнала достаточного размера и быстрого хранилища для " "поставщика журнала минимизирует потери в производительности." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:923 #, no-wrap msgid "Can GEOM journaling be used together with other GEOM classes?" msgstr "" "Может ли журналирование GEOM использоваться вместе с другими классами GEOM?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:926 msgid "Yes. GEOM journaling can be stacked with other GEOM classes." msgstr "Да. GEOM журналирование может быть объединено с другими классами GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:929 msgid "" "When used together, GEOM journaling typically operates on top of providers " "created by other GEOM classes such as `gmirror(8)` or `graid3(8)`. The " "order of stacking is important and should follow the documented layering " "requirements of the involved GEOM classes." msgstr "" "При совместном использовании журналирование GEOM обычно работает поверх " "провайдеров, созданных другими классами GEOM, такими как `gmirror(8)` или " "`graid3(8)`. Порядок наложения важен и должен соответствовать " "задокументированным требованиям к слоям задействованных классов GEOM." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:931 msgid "" "GEOM journaling maintains file system consistency across the stacked " "providers, but it does not replace redundancy or error detection provided by " "other GEOM classes." msgstr "" "GEOM журналирование обеспечивает целостность файловой системы на всех " "уровнях поставщиков, но не заменяет избыточность или обнаружение ошибок, " "предоставляемые другими классами GEOM." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:932 #, no-wrap msgid "Can GEOM journaling and Soft Updates be enabled at the same time?" msgstr "Можно ли одновременно включить журналирование GEOM и Soft Updates?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:935 msgid "" "No. GEOM journaling and Soft Updates must not be enabled at the same time on " "the same file system." msgstr "" "Нет. GEOM журналирование и Soft Updates не должны быть включены одновременно " "на одной файловой системе." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:938 msgid "" "GEOM journaling requires exclusive control over write ordering and " "consistency guarantees. If Soft Updates are enabled together with GEOM " "journaling, the file system may behave unpredictably and data integrity " "cannot be guaranteed." msgstr "" "GEOM журналирование требует исключительного контроля над порядком записи и " "гарантиями согласованности. Если Soft Updates включены вместе с GEOM " "журналированием, файловая система может вести себя непредсказуемо, и " "целостность данных не может быть гарантирована." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:940 msgid "" "When using GEOM journaling, Soft Updates must be disabled on the affected " "file system, as described earlier in this article." msgstr "" "При использовании журналирования GEOM необходимо отключить Soft Updates на " "затронутой файловой системе, как описано ранее в этой статье." #. type: Title === #: documentation/content/en/articles/gjournal-desktop/_index.adoc:942 #, no-wrap msgid "What is the difference between Soft Updates and Soft Updates with Journaling?" msgstr "В чем разница между Soft Updates и Soft Updates с журналированием?" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:945 msgid "" "Both Soft Updates and Soft Updates with Journaling are designed to maintain " "file system consistency, but they use different mechanisms and behave " "differently after a system crash." msgstr "" "Как Soft Updates, так и Soft Updates with Journaling предназначены для " "поддержания целостности файловой системы, но используют разные механизмы и " "ведут себя по-разному после сбоя системы." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:949 msgid "" "_Soft Updates_ ensure consistency by carefully ordering metadata writes in " "memory so that only safe states are written to disk. If a crash occurs, any " "metadata updates that have not yet been written are simply lost, leaving the " "file system in a consistent but possibly older state. However, resource " "accounting may be temporarily inaccurate, and a full `fsck_ffs(8)` run is " "required to reclaim unused blocks and inodes." msgstr "" "_Soft Updates_ обеспечивают целостность за счёт тщательного упорядочивания " "записи метаданных в памяти, так что на диск записываются только безопасные " "состояния. При сбое любые обновления метаданных, ещё не записанные на диск, " "просто теряются, оставляя файловую систему в целостном, но, возможно, более " "старом состоянии. Однако учёт ресурсов может временно быть неточным, и для " "освобождения неиспользуемых блоков и индексных дескрипторов требуется полный " "запуск `fsck_ffs(8)`." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:953 msgid "" "_Soft Updates with Journaling_ build on top of _Soft Updates_ by adding a " "metadata journal stored within the file system. Metadata changes are first " "recorded in the journal and are replayed automatically during the next boot " "after an unclean shutdown. This allows the file system to be restored to a " "consistent state quickly, usually without requiring a full `fsck_ffs(8)` run." msgstr "" "_Soft Updates с журналированием_ расширяют функциональность _Soft Updates _, " "добавляя журнал метаданных, хранящийся в файловой системе. Изменения " "метаданных сначала записываются в журнал и автоматически воспроизводятся при " "следующей загрузке после некорректного завершения работы. Это позволяет " "быстро восстановить файловую систему в согласованное состояние, обычно без " "необходимости полного запуска `fsck_ffs(8)`." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:955 msgid "" "In short, _Soft Updates_ provide consistency without a journal, while _Soft " "Updates with Journaling_ add fast and automatic recovery after crashes at " "the cost of additional disk space and minor performance overhead." msgstr "" "Короче говоря, _Soft Updates_ обеспечивают согласованность без " "журналирования, тогда как _Soft Updates с журналированием_ добавляют быстрое " "и автоматическое восстановление после сбоев ценой дополнительного дискового " "пространства и незначительного снижения производительности." #. type: Title == #: documentation/content/en/articles/gjournal-desktop/_index.adoc:958 #, no-wrap msgid "Further Reading" msgstr "Для дальнейшего ознакомления" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:962 msgid "" "Journaling is a fairly new feature of FreeBSD, and as such, it is not very " "well documented yet. You may however find the following additional " "references useful:" msgstr "" "Журналирование - относительно новая функциональная возможность FreeBSD, и " "она ещё недостаточно документирована. Однако, могут быть полезными следующие " "источники:" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:964 msgid "" "A extref:{handbook}geom[section on journaling, geom-gjournal] is now part of " "the FreeBSD Handbook." msgstr "" "extref:{handbook}geom[Раздел Руководства FreeBSD, geom-gjournal], " "посвященный журналированию." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:965 msgid "" "https://lists.freebsd.org/pipermail/freebsd-current/2006-June/064043." "html[This post] in {freebsd-current} by man:gjournal[8]'s developer, `{pjd}`." msgstr "" "http://lists.freebsd.org/pipermail/freebsd-current/2006-June/064043." "html[Этот пост] в списке рассылки {freebsd-current}, написанный `{pjd}` - " "автором man:gjournal[8]." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:966 msgid "" "https://lists.freebsd.org/pipermail/freebsd-questions/2008-April/173501." "html[This post] in {freebsd-questions} by `{ivoras}`." msgstr "" "http://lists.freebsd.org/pipermail/freebsd-questions/2008-April/173501." "html[Этот пост] от `{ivoras}` в списке рассылки {freebsd-questions}." #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:967 msgid "" "https://www.youtube.com/watch?v=_NuhRkiInvA[Journaled Soft-Updates, Dr. Kirk " "McKusick, BSDCan 2010] on YouTube" msgstr "" "https://www.youtube.com/watch?v=_NuhRkiInvA[Journaled Soft-Updates, Dr. Kirk " "McKusick, BSDCan 2010] на YouTube" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:968 msgid "" "https://www.youtube.com/watch?v=xMpmOezBJZo[GEOM - in Infrastructure We " "Trust, Pawel Jakub Dawidek, AsiaBSDCon 2008] on YouTube" msgstr "" "https://www.youtube.com/watch?v=xMpmOezBJZo[GEOM - in Infrastructure We " "Trust, Pawel Jakub Dawidek, AsiaBSDCon 2008] на YouTube" #. type: Plain text #: documentation/content/en/articles/gjournal-desktop/_index.adoc:968 msgid "The manual pages of man:gjournal[8], man:geom[8], and man:tunefs[8]." msgstr "Страницы Справочника man:gjournal[8], man:geom[8] и man:tunefs[8]." #~ msgid "" #~ "The new journaling capability provided by GEOM can greatly assist in such " #~ "scenarios, by virtually eliminating the time required for file system " #~ "checking, and ensuring that the file system is quickly restored to a " #~ "consistent state." #~ msgstr "" #~ "Новая возможность журналирования, предоставленная системой GEOM, может " #~ "существенно выручить в подобных случаях, исключая время, необходимое для " #~ "проверки файловых систем и удостовериваясь, что файловая система быстро " #~ "восстановлена в целостное состояние." #~ msgid "" #~ "This article describes a procedure for implementing UFS journaling on a " #~ "typical desktop PC scenario (one hard disk used for both operating system " #~ "and data). It should be followed during a fresh installation of " #~ "FreeBSD. The steps are simple enough and do not require overly complex " #~ "interaction with the command line." #~ msgstr "" #~ "Эта статья описывает порядок действий, необходимых для конфигурирования " #~ "журналирования UFS на типичном настольном компьютере, в котором один " #~ "жёсткий диск используется для размещения как операционной системы, так и " #~ "данных. В статье подразумевается установка FreeBSD \"с нуля\". Шаги " #~ "достаточно просты и не требуют чрезмерно сложных манипуляций с командной " #~ "строкой." #~ msgid "After reading this article, you will know:" #~ msgstr "После прочтения данной статьи вы будете знать:" #~ msgid "" #~ "How to reserve space for journaling during a new installation of FreeBSD." #~ msgstr "" #~ "Как зарезервировать место для журнала во время новой установки FreeBSD." #~ msgid "" #~ "How to load and enable the `geom_journal` module (or build support for it " #~ "in your custom kernel)." #~ msgstr "" #~ "Как загрузить модуль `geom_journal` (или включить поддержку " #~ "журналирования в специализированном ядре системы)." #~ msgid "" #~ "How to convert your existing file systems to utilize journaling, and what " #~ "options to use in [.filename]#/etc/fstab# to mount them." #~ msgstr "" #~ "Как преобразовать существующую файловую систему, в систему, использующую " #~ "журналирование, и какие опции монтирования использовать в [.filename]#/" #~ "etc/fstab#." #~ msgid "How to implement journaling in new (empty) partitions." #~ msgstr "Как реализовать журналирование на новых (пустых) разделах." #~ msgid "" #~ "The procedure described here is intended for preparing a new installation " #~ "where no actual user data is stored on the disk yet. While it is " #~ "possible to modify and extend this procedure for systems already in " #~ "production, you should _backup_ all important data before doing so. " #~ "Messing around with disks and partitions at a low level can lead to fatal " #~ "mistakes and data loss." #~ msgstr "" #~ "Процедура, описанная здесь, подразумевает подготовку к новой установке, в " #~ "которой на дисках ещё нет пользовательских данных. Так как эту процедуру " #~ "можно модифицировать и расширить на системы, которые уже используются, " #~ "вам настоятельно рекомендуется сделать _резервную копию_ всех ценных " #~ "данных. Путаница в низкоуровневых операциях с дисками и разделами может " #~ "привести к фатальным ошибкам и потере данных." #~ msgid "" #~ "The journaling provided by GEOM in FreeBSD 7._X_ is not file system " #~ "specific (unlike for example the ext3 file system in Linux(R)) but is " #~ "functioning at the block level. Though this means it can be applied to " #~ "different file systems, for FreeBSD 7.0-RELEASE, it can only be used on " #~ "UFS2." #~ msgstr "" #~ "Журналирование, предоставляемое системой GEOM в FreeBSD 7._X_, не " #~ "является особенностью файловой системы (в отличие от, например, файловой " #~ "системы ext3 в Linux(R)), оно функционирует на блочном уровне. А это " #~ "значит, что оно может быть применено к разным типам файловых систем, " #~ "однако для FreeBSD 7.0-RELEASE журналирование может быть применено только " #~ "для UFS2." #~ msgid "" #~ "When a file system is journaled, some disk space is needed to keep the " #~ "journal itself. The disk space that holds the actual data is referred to " #~ "as the __data provider__, while the one that holds the journal is " #~ "referred to as the __journal provider__. The data and journal providers " #~ "need to be on different partitions when journaling an existing (non-" #~ "empty) partition. When journaling a new partition, you have the option " #~ "to use a single provider for both data and journal. In any case, the " #~ "`gjournal` command combines both providers to create the final journaled " #~ "file system. For example:" #~ msgstr "" #~ "Когда файловая система журналируется, некоторая часть дискового " #~ "пространства требуется для хранения самого журнала. Дисковое " #~ "пространство, содержащее данные, называется __поставщиком данных (data " #~ "provider)__, а часть пространства, содержащая журнал, называется " #~ "__поставщиком журнала (journal provider)__. Поставщики данных и журнала " #~ "должны быть на разных разделах, если журналирование достраивается к " #~ "содержащему данные разделу. А если журналирование включается для нового " #~ "раздела, у вас есть возможность использовать один поставщик для данных и " #~ "журнала. В любом из двух вышеупомянутых случаев команда `gjournal` " #~ "задействует поставщики и создаст конечную журналируемую файловую систему. " #~ "Например:" #~ msgid "" #~ "You wish to journal your [.filename]#/usr# file system, stored in [." #~ "filename]#/dev/ad0s1f# (which already contains data)." #~ msgstr "" #~ "Вы намереваетесь журналировать файловую систему [.filename]#/usr#, " #~ "размещенную на [.filename]#/dev/ad0s1f#, файловая система уже содержит " #~ "данные." #~ msgid "" #~ "You reserved some free disk space in a partition in [.filename]#/dev/" #~ "ad0s1g#." #~ msgstr "" #~ "Вы зарезервировали часть дискового пространства на разделе [.filename]#/" #~ "dev/ad0s1g#." #~ msgid "" #~ "The amount of disk space you need to reserve for the journal provider " #~ "depends on the usage load of the file system and not on the size of the " #~ "data provider. For example on a typical office desktop, a 1 GB journal " #~ "provider for the [.filename]#/usr# file system will suffice, while a " #~ "machine that deals with heavy disk I/O (i.e. video editing) may need " #~ "more. A kernel panic will occur if the journal space is exhausted before " #~ "it has a chance to be committed." #~ msgstr "" #~ "Размер дискового пространства, отводимого под поставщик журнала, зависит " #~ "от нагруженности файловой системы, а не от размера самого поставщика " #~ "данных. Например, для типичного настольного компьютера достаточно отвести " #~ "1 Гб под поставщик журнала для файловой системы [.filename]#/usr#, в то " #~ "время как компьютеру, имеющему интенсивный дисковый ввод/вывод (например, " #~ "редактирование видео) может потребоваться больше. Если свободное место на " #~ "поставщике журнала заканчивается раньше, чем происходит сброс журнала на " #~ "диск, - вы получите панику ядра." #~ msgid "" #~ "The journal sizes suggested here, are highly unlikely to cause problems " #~ "in typical desktop use (such as web browsing, word processing and " #~ "playback of media files). If your workload includes intense disk " #~ "activity, use the following rule for maximum reliability: Your RAM size " #~ "should fit in 30% of the journal provider's space. For example, if your " #~ "system has 1 GB RAM, create an approximately 3.3 GB journal provider. " #~ "(Multiply your RAM size with 3.3 to obtain the size of the journal)." #~ msgstr "" #~ "Очень маловероятно то, что размеры журнала, предложенные здесь, станут " #~ "причиной проблем с обычным настольным компьютером (на котором вы " #~ "просматриваете веб-страницы, обрабатываете текст или проигрываете " #~ "мультимедийные файлы). Если работа вашего компьютера подразумевает " #~ "интенсивную дисковую активность, то для обеспечения стабильности следует " #~ "придерживаться следующего правила: размер ОЗУ должен уместиться в 30% " #~ "размера, отведенного под журнал. Например, если в вашем компьютере " #~ "установлен 1 Гб ОЗУ, создайте под поставщик журнала раздел размером около " #~ "3.3 Гб. (Умножьте размер ОЗУ в 3.3 раза, чтоб получить размер журнала)." #~ msgid "" #~ "A typical desktop machine usually has one hard disk that stores both the " #~ "OS and user data. Arguably, the default partitioning scheme selected by " #~ "sysinstall is more or less suitable: A desktop machine does not need a " #~ "large [.filename]#/var# partition, while [.filename]#/usr# is allocated " #~ "the bulk of the disk space, since user data and a lot of packages are " #~ "installed into its subdirectories." #~ msgstr "" #~ "Типичный настольный компьютер обычно имеет один жёсткий диск, на котором " #~ "хранится как операционная система, так и пользовательские данные. " #~ "Вероятно, что схема разбития винчестера (по умолчанию), выбранная в меню " #~ "Sysinstall, является более или менее подходящей: настольному компьютеру " #~ "не требуется большой раздел [.filename]#/var#, в то время, как для " #~ "раздела [.filename]#/usr# выделяется значительный объём дискового " #~ "пространства, ввиду того, что пользовательские данные и множество пакетов " #~ "инсталлируются в подкаталоги [.filename]#/usr#." #~ msgid "" #~ "The default partitioning (the one obtained by pressing kbd:[A] at the " #~ "FreeBSD partition editor, called Disklabel) does not leave any " #~ "unallocated space. Each partition that will be journaled, requires " #~ "another partition for the journal. Since the [.filename]#/usr# partition " #~ "is the largest, it makes sense to shrink this partition slightly, to " #~ "obtain the space required for journaling." #~ msgstr "" #~ "Разбиение по умолчанию (получаемое при нажатии kbd:[A] в редакторе " #~ "разделов FreeBSD, называемом Disklabel) не оставляет свободного места. " #~ "Каждый подлежащий журналированию раздел требует отдельного раздела для " #~ "журнала. Ввиду того, что раздел [.filename]#/usr# - наибольший, есть " #~ "смысл немного уменьшить его размер, чтобы получить пространство, " #~ "необходимое для журнала." #~ msgid "" #~ "In our example, an 80 GB disk is used. The following screenshot shows " #~ "the default partitions created by Disklabel during installation:" #~ msgstr "" #~ "В нашем примере используется жёсткий диск размером 80 Гб. Следующий " #~ "скриншот показывает результаты разбиения по умолчанию, выполненного при " #~ "помощи Disklabel в процессе установки операционной системы:" #, no-wrap #~ msgid "disklabel1.png" #~ msgstr "disklabel1.png" #~ msgid "" #~ "If this is more or less what you need, it is very easy to adjust for " #~ "journaling. Simply use the arrow keys to move the highlight to the [." #~ "filename]#/usr# partition and press kbd:[D] to delete it." #~ msgstr "" #~ "Если это разбиение более или менее вас устраивает, то его легко " #~ "модифицировать для журналирования. Используйте клавиши со стрелками для " #~ "того, чтобы выделить раздел, отведенный под [.filename]#/usr#, потом " #~ "нажмите kbd:[D] чтобы удалить его." #~ msgid "" #~ "Now, move the highlight to the disk name at the top of the screen and " #~ "press kbd:[C] to create a new partition for [.filename]#/usr#. This new " #~ "partition should be smaller by 1 GB (if you intend to journal [." #~ "filename]#/usr# only), or 2 GB (if you intend to journal both [." #~ "filename]#/usr# and [.filename]#/var#). From the pop-up that appears, " #~ "opt to create a file system, and type [.filename]#/usr# as the mount " #~ "point." #~ msgstr "" #~ "Теперь переведите подсвечивание к имени диска, находящемуся вверху " #~ "экрана, и нажмите kbd:[C] - создайте новый раздел [.filename]#/usr#. " #~ "Новый раздел должен быть меньше на 1 Гб (если вы собираетесь " #~ "журналировать только [.filename]#/usr#) или на 2 Гб (если журналированию " #~ "подлежат как [.filename]#/usr#, так и [.filename]#/var#). Во всплывающем " #~ "окне выберите \"создать файловую систему\" и укажите [.filename]#/usr# " #~ "точкой монтирования." #~ msgid "" #~ "Should you journal the [.filename]#/var# partition? Normally, journaling " #~ "makes sense on quite large partitions. You may decide not to journal [." #~ "filename]#/var#, although doing so on a typical desktop will cause no " #~ "harm. If the file system is lightly used (quite probable for a desktop) " #~ "you may wish to allocate less disk space for its journal." #~ msgstr "" #~ "Следует ли журналировать [.filename]#/var# раздел? Обычно есть смысл " #~ "журналировать большие разделы. Вы можете решить не журналировать [." #~ "filename]#/var#, однако журналирование на обычном настольном компьютере " #~ "не причинит вреда. Если файловая система не нагружена (что типично для " #~ "настольной системы), то можно выделить меньше дискового пространства под " #~ "журнал." #~ msgid "" #~ "In our example, we journal both [.filename]#/usr# and [.filename]#/var#. " #~ "You may of course adjust the procedure to your own needs." #~ msgstr "" #~ "В этом примере подразумевается журналирование двух файловых систем: [." #~ "filename]#/usr# и [.filename]#/var#. Естественно, вы можете " #~ "подкорректировать процедуру под свои задачи." #~ msgid "" #~ "To keep things as easy going as possible, we are going to use sysinstall " #~ "to create the partitions required for journaling. However, during " #~ "installation, sysinstall insists on asking a mount point for each " #~ "partition you create. At this point, you do not have any mount points " #~ "for the partitions that will hold the journals, and in reality you __do " #~ "not even need them__. These are not partitions that we are ever going to " #~ "mount somewhere." #~ msgstr "" #~ "Чтобы не усложнять описываемую методику, для создания разделов, " #~ "необходимых для размещения журналов, мы будем использовать утилиту " #~ "Sysinstall. Однако, во время установки утилита Sysinstall требует " #~ "указания точек монтирования для каждого созданного вами раздела. Но " #~ "разделы, содержащие журналы, вам никогда и никуда монтировать не придется." #~ msgid "" #~ "To avoid these problems with sysinstall, we are going to create the " #~ "journal partitions as swap space. Swap is never mounted, and sysinstall " #~ "has no problem creating as many swap partitions as needed. After the " #~ "first reboot, [.filename]#/etc/fstab# will have to be edited, and the " #~ "extra swap space entries removed." #~ msgstr "" #~ "Чтобы избежать вопросов о точках монтирования, мы создадим разделы под " #~ "журналы и установим их тип в swap. Раздел, предназначенный для свопа, " #~ "никогда и никуда не монтируется, плюс к тому, утилита Sysinstall " #~ "позволяет создавать столько разделов под своп, сколько необходимо. После " #~ "первой перезагрузки необходимо подредактировать файл [.filename]#/etc/" #~ "fstab#, удалив в нём лишние записи о своп-разделах." #~ msgid "" #~ "To create the swap, again use the arrow keys to move the highlight to the " #~ "top of Disklabel screen, so that the disk name itself is highlighted. " #~ "Then press kbd:[N], enter the desired size (_1024M_), and select \"swap " #~ "space\" from the pop-up menu that appears. Repeat for every journal you " #~ "wish to create. In our example, we create two partitions to provide for " #~ "the journals of [.filename]#/usr# and [.filename]#/var#. The final " #~ "result is shown in the following screenshot:" #~ msgstr "" #~ "Для создания своп-раздела, используя клавиши со стрелками, перемещайте " #~ "подсвечивание к верхней части экрана в утилите Disklabel так, чтобы стало " #~ "подсвеченным имя диска. Потом, нажмите kbd:[N], введите необходимый " #~ "размер раздела (_1024M_), а после - выберите во всплывшем окне \"swap " #~ "space\". Повторите эти шаги для всех оставшихся журналов. В этом примере " #~ "мы создаем два раздела, на которых будут размещаться журналы для [." #~ "filename]#/usr# и [.filename]#/var#. Конечный результат показан на " #~ "следующем скриншоте:" #, no-wrap #~ msgid "disklabel2.png" #~ msgstr "disklabel2.png" #~ msgid "" #~ "When you have completed creating the partitions, we suggest you write " #~ "down the partition names, and mount points, so you can easily refer to " #~ "this information during the configuration phase. This will help " #~ "alleviate mistakes that may damage your installation. The following " #~ "table shows our notes for the sample configuration:" #~ msgstr "" #~ "По завершении создания разделов мы рекомендуем вам записать на бумагу " #~ "названия разделов и их точек монтирования: с этой информацией вы будете " #~ "сверяться во время конфигурирования. Это также поможет уменьшить " #~ "количество ошибок, приводящих к повреждению установки. Следующая табличка " #~ "отображает наши заметки, сделанные для данного примера:" #, no-wrap #~ msgid "Mount Point" #~ msgstr "Точка монтирования" #, no-wrap #~ msgid "ad0s1d" #~ msgstr "ad0s1d" #, no-wrap #~ msgid "ad0s1h" #~ msgstr "ad0s1h" #, no-wrap #~ msgid "ad0s1f" #~ msgstr "ad0s1f" #, no-wrap #~ msgid "ad0s1g" #~ msgstr "ad0s1g" #~ msgid "" #~ "Continue the installation as you would normally do. We would however " #~ "suggest you postpone installation of third party software (packages) " #~ "until you have completely setup journaling." #~ msgstr "" #~ "Дальше продолжайте обычную установку. Однако, мы рекомендуем вам отложить " #~ "инсталляцию приложений сторонних разработчиков (пакетов) до полной " #~ "настройки журналирования." #, no-wrap #~ msgid "Booting for the first time" #~ msgstr "Первая загрузка" #~ msgid "" #~ "Your system will come up normally, but you will need to edit [.filename]#/" #~ "etc/fstab# and remove the extra swap partitions you created for the " #~ "journals. Normally, the swap partition you will actually use is the one " #~ "with the \"b\" suffix (i.e. ad0s1b in our example). Remove all other " #~ "swap space entries and reboot so that FreeBSD will stop using them." #~ msgstr "" #~ "Ваша система загрузится нормально, однако вам необходимо будет " #~ "подредактировать [.filename]#/etc/fstab# и удалить те лишние своп-" #~ "разделы, которые вы создавали под журналы. Как правило, в названии файла " #~ "устройства, созданного автоматически утилитой Sysinstall, присутствует " #~ "суффикс \"b\" (в нашем примере это ad0s1b). Удалите другие записи о своп-" #~ "разделах и перезагрузите компьютер, после чего FreeBSD перестанет их " #~ "использовать." #~ msgid "" #~ "Having prepared all the required partitions, it is quite easy to " #~ "configure journaling. We will need to switch to single user mode, so " #~ "login as `root` and type:" #~ msgstr "" #~ "Подготовив необходимые разделы, перейдем к конфигурированию " #~ "журналирования. Нам будет необходимо загрузиться в однопользовательском " #~ "режиме, для этого залогинимся пользователем `root` и напечатаем:" #~ msgid "Load the module required for journaling:" #~ msgstr "Загрузите модуль ядра, необходимый для журналирования:" #~ msgid "" #~ "Now, use your notes to determine which partition will be used for each " #~ "journal. In our example, [.filename]#/usr# is [.filename]#ad0s1f# and " #~ "its journal will be [.filename]#ad0s1g#, while [.filename]#/var# is [." #~ "filename]#ad0s1d# and will be journaled to [.filename]#ad0s1h#. The " #~ "following commands are required:" #~ msgstr "" #~ "На данном этапе сверьтесь со своими записями и определите, какие разделы " #~ "будут использоваться под какой журнал. В нашем примере [.filename]#/usr# " #~ "располагается на [.filename]#ad0s1f#, а его журнал будет располагаться на " #~ "[.filename]#ad0s1g#, и, по аналогии, для [.filename]#/var#: файловая " #~ "система располагается на [.filename]#ad0s1d#, а её журнал - на [." #~ "filename]#ad0s1h#. Наберите следующие команды:" #~ msgid "" #~ "If the last sector of either partition is used, `gjournal` will return an " #~ "error. You will have to run the command using the `-f` flag to force an " #~ "overwrite, i.e.:" #~ msgstr "" #~ "Если последний сектор любого из двух разделов (поставщиков данных) " #~ "используется, команда `gjournal` возвратит ошибку. Вам необходимо будет " #~ "использовать флаг `-F` для принудительной перезаписи, например:" #~ msgid "" #~ "Since this is a new installation, it is highly unlikely that anything " #~ "will be actually overwritten." #~ msgstr "" #~ "Так как это - новая установка, очень маловероятен факт, что что-нибудь " #~ "будет действительно переписано." #~ msgid "" #~ "At this point, two new devices are created, namely [.filename]#ad0s1d." #~ "journal# and [.filename]#ad0s1f.journal#. These represent the [." #~ "filename]#/var# and [.filename]#/usr# partitions we have to mount. " #~ "Before mounting, we must however set the journal flag on them and clear " #~ "the Soft Updates flag:" #~ msgstr "" #~ "На данном этапе созданы два устройства: [.filename]#ad0s1d.journal# и [." #~ "filename]#ad0s1f.journal#. Они представляют [.filename]#/var# и [." #~ "filename]#/usr# соответственно. Перед монтированием, нам необходимо " #~ "установить флаг журналирования и снять флаг механизма Soft Updates:" #, no-wrap #~ msgid "" #~ "# tunefs -J enable -n disable ad0s1d.journal\n" #~ "tunefs: gjournal set\n" #~ "tunefs: soft updates cleared\n" #~ msgstr "" #~ "# tunefs -J enable -n disable ad0s1d.journal\n" #~ "tunefs: gjournal set\n" #~ "tunefs: soft updates cleared\n" #, no-wrap #~ msgid "" #~ "# tunefs -J enable -n disable ad0s1f.journal\n" #~ "tunefs: gjournal set\n" #~ "tunefs: soft updates cleared\n" #~ msgstr "" #~ "# tunefs -J enable -n disable ad0s1f.journal\n" #~ "tunefs: gjournal set\n" #~ "tunefs: soft updates cleared\n" #, no-wrap #~ msgid "" #~ "ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150\n" #~ "GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.\n" #~ "GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.\n" #~ "GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.\n" #~ "GEOM_JOURNAL: Journal ad0s1d clean.\n" #~ "GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.\n" #~ "GEOM_JOURNAL: Journal ad0s1f clean.\n" #~ msgstr "" #~ "ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150\n" #~ "GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.\n" #~ "GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.\n" #~ "GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.\n" #~ "GEOM_JOURNAL: Journal ad0s1d clean.\n" #~ "GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.\n" #~ "GEOM_JOURNAL: Journal ad0s1f clean.\n" #~ msgid "" #~ "The journal probably fills up before it has a chance to get committed " #~ "(flushed) to disk. Keep in mind the size of the journal depends on the " #~ "usage load, and not the size of the data provider. If your disk activity " #~ "is high, you need a larger partition for the journal. See the note in " #~ "the crossref:gjournal-desktop[understanding-journaling, Understanding " #~ "Journaling in FreeBSD] section." #~ msgstr "" #~ "Вероятно, что журнал заполняется раньше, чем происходит сброс его на " #~ "диск. Помните, размер журнала зависит от загруженности диска, а не от " #~ "размера поставщика данных. Если загрузка диска высокая, вам потребуется " #~ "раздел большего размера для журнала. См. замечания в разделе crossref:" #~ "gjournal-desktop[understanding-journaling, Understanding Journaling in " #~ "FreeBSD]." #, no-wrap #~ msgid "" #~ "# tunefs -J disable -n enable ad0s1f\n" #~ "tunefs: gjournal cleared\n" #~ "tunefs: soft updates set\n" #~ msgstr "" #~ "# tunefs -J disable -n enable ad0s1f\n" #~ "tunefs: gjournal cleared\n" #~ "tunefs: soft updates set\n"